List Info

Thread: AAC+ playback, cayenne_1_5_0




AAC+ playback, cayenne_1_5_0
user name
2006-10-20 11:37:02
Unfortunately this doesn't seem to help much.  It looks like
the problem
is that SetCStringProperty() and SetCStringPropertyCCF() are
both
implemented in util/pckunpck.cpp, so a call to either of
those functions
will cause the linker to drag in the whole of pckunpck.o
(plus all its
dependencies) from the ar archive.

I tried building with -ffunction-sections and --gc-sections
but this
doesn't seem to be doing much good either: we're still
getting a pile of
code included in the output file that I don't really want. 
Sadly the
GNU linker isn't terribly good at explaining why it decided
to include a
particular section, so figuring out exactly what's going on
is pretty
tedious.

I'll have a go at disentangling SetCStringPropertyCCF() from
the other
code in pckunpck.cpp and see if putting it in an object file
on its own
makes any difference.

FWIW, here's the linker output showing which archive members
are being
included.

armv4l-rel/aacff_libs.a(utillib.baseobj.o)
                             
armv4l-rel/obj/aacffdll/aacffdll.o
(CHXBaseCountingObject::m_lNumObjects)
armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
                             
armv4l-rel/obj/aacffdll/aacff.o
(SetCStringPropertyCCF(IHXValues*, char const*, char const*,
IUnknown*,
int))
armv4l-rel/aacff_libs.a(utillib.rtsputil.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(BinTo64(unsigned char
const*, long, char*))
armv4l-rel/aacff_libs.a(utillib.tconverter_fxp.o)
                             
armv4l-rel/obj/aacffdll/aacff.o
(CHXTimestampConverterFXP::ReInit(CHXTimestampConverterFXP::
ConversionType, unsigned long, unsigned long))
armv4l-rel/aacff_libs.a(logutillib.hxtlogutil.o)
                             
armv4l-rel/obj/aacffdll/aacff.o
(HXEnableLogging(IUnknown*))
armv4l-rel/aacff_libs.a(dtutillib.bitstream.o)
                             
armv4l-rel/obj/aacffdll/aacff.o
(Bitstream::Bitstream())
armv4l-rel/aacff_libs.a(runtlib.safestring.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o) (SafeStrCpy)
armv4l-rel/aacff_libs.a(contlib.hxslist.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXSimpleList::CHXSimpleList())
armv4l-rel/aacff_libs.a(contlib.chxpckts.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o) (vtable for
CHXHeader)
armv4l-rel/aacff_libs.a(contlib.hxbuffer.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXBuffer::CHXBuffer())
armv4l-rel/aacff_libs.a(contlib.hxstring.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXString::CHXString(long
(*)(long, long)))
armv4l-rel/aacff_libs.a(contlib.hxstradv.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXString::AppendULONG(unsigned long))
armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)

armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXMapStringToOb::z_defaultChunkSize)
armv4l-rel/aacff_libs.a(contlib.hxmaputils.o)

armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
(HlxMap::IntVec_t::IntVec_t())
armv4l-rel/aacff_libs.a(runtlib.string.o)

armv4l-rel/aacff_libs.a(contlib.chxpckts.o) (__helix_strlwr)

p.

On Wed, 2006-10-18 at 08:48 -0400, Eric Hyche wrote:
> Oh, I see what's going on. I was looking at
> datatype/aac/fileformat on the HEAD, where it
> only uses SetCStringPropertyCCF(). On 150cay,
> datatype/aac/fileformat still uses
SetCStringProperty().
> 
> This is good - all you need to do is switch to
> using SetCStringPropertyCCF instead of
SetCStringProperty()
> and you still should get most of the savings
> you are currently seeing without losing any of the
> functionality.
> 
> The reason is that SetCStringProperty() creates
> a CHXBuffer() directly, and thus you have to link
> in all of CHXBuffer(). SetCStringPropertyCCF()
> creates an IHXBuffer via the common class
> factory (CCF).
> 
> Try this out - make sure it works for you, and
> then you can submit a CR.
> 
> Eric
> 
> =============================================
> Eric Hyche (ehychereal.com)
> Technical Lead
> RealNetworks, Inc.  
> 
> > -----Original Message-----
> > From: helix-client-dev-bounceshelixcommunity.org 
> > [mailto:helix-client-dev-bounceshelixcommunity.org] On 
> > Behalf Of Eric Hyche
> > Sent: Wednesday, October 18, 2006 8:26 AM
> > To: 'John Stirling'; 'Milko Boic'
> > Cc: helix-client-devhelixcommunity.org
> > Subject: RE: [Helix-client-dev] AAC+ playback,
cayenne_1_5_0
> > 
> > 
> > You mean SetCStringPropertyCCF, right?
> > 
> > Even so, that's odd that it would go down that
much,
> > since SetCStringPropertyCCF is a very small
function.
> > There must be something else that is no longer
> > used if the calls to SetCStringPropertyCCF() are
> > removed.
> > 
> > Eric
> > 
> > =============================================
> > Eric Hyche (ehychereal.com)
> > Technical Lead
> > RealNetworks, Inc.  
> > 
> > > -----Original Message-----
> > > From: helix-client-dev-bounceshelixcommunity.org 
> > > [mailto:helix-client-dev-bounceshelixcommunity.org] On 
> > > Behalf Of John Stirling
> > > Sent: Wednesday, October 18, 2006 7:37 AM
> > > To: Milko Boic
> > > Cc: helix-client-devhelixcommunity.org
> > > Subject: Re: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
> > > 
> > > I removed those defines and it reduces the
code size as follows:
> > > 
> > > Standard build - 148k
> > > Remove AAC_FILEFORMAT_RAPACK - 136k
> > > Remove AACFF_SEEKTABLE - 134k
> > > Remove AACFF_LOAS - 117k
> > > Remove AACFF_ADIF - 99k
> > > 
> > > and the stream still plays.
> > > 
> > > However, calls to SetCStringProperty() are
resulting in 
> > > several utility 
> > > libraries being statically linked in to the
plugin.
> > > 
> > > Comment out all (5) calls to
SetCStringProperty() and code 
> > size goes 
> > > down to 43k.
> > > 
> > > So it looks like there's potentially quite a
bit of scope to 
> > > reduce the 
> > > code size if we could dynamically link to
these utility 
> > > libraries from 
> > > all plugins that use them ? (mp3ff also uses
SetCStringProperty()). 
> > > Could someone comment on this.
> > > 
> > > John
> > > 
> > > 
> > > 
> > > Milko Boic wrote:
> > > 
> > > > At 04:16 AM 10/16/2006, John Stirling
wrote:
> > > >
> > > >> I can play the clip now (after
building aacff.so), but have some 
> > > >> questions about the plugins required
for aac playback.
> > > >>
> > > >> Previously we had the following
plugins and could play 
> > > iTunes ripped 
> > > >> .m4a files
> > > >>
> > > >> raac.so (67k)
> > > >> mp4arender.so (204k)
> > > >> mp4fformat.so (109k)
> > > >>
> > > >> If we also build
> > > >> aacff.so (148k)
> > > >>
> > > >> we can play the AAC stream
previously mentioned (but this 
> > > is another 
> > > >> 148k which we could do without..).
> > > >>
> > > >> I had previously thought mp4fformat
was the fileformat 
> > > plugin needed 
> > > >> for AAC. Can someone clarify the
plugins needed. eg if we have 
> > > >> aacff.so does this mean we no longer
need mp4fformat.so ?
> > > >
> > > >
> > > > AAC is codec which can be contained in
several ways. ITunes 
> > > uses .m4a 
> > > > format which is based of the ISO base
file format. This 
> > format and 
> > > > related family of formats (mp4, .3gp,
.avc) are supported by 
> > > > mp4fformat.so.
> > > > aacff.so supports much more rudimentary
AAC framing 
> > formats (ADIF, 
> > > > LOAS and ADTS). This rudimentary format
is used by some HTTP 
> > > > broadcasters. More specifically, I
believe ADTS is used.
> > > >
> > > > aacff.so is rather big due to supporting
all three formats, 
> > > including 
> > > > AAC bitstream parses in order to support
ADIF.
> > > >
> > > > You should be able to reduce the size of
aacff.so by 
> > excluding the 
> > > > following defines (some currently
hard-coded in aacffdll 
> > Umakefil):
> > > > HELIX_FEATURE_AAC_FILEFORMAT_RAPACK -
needed for 
> > > transformating of aac 
> > > > to other formats
> > > > HELIX_FEATURE_AACFF_SEEKTABLE - needed
for index table 
> > > building - does 
> > > > not apply to live streams
> > > > HELIX_FEATURE_AACFF_LOAS - LOAS format
support
> > > > HELIX_FEATURE_AACFF_ADIF - ADIF format
support
> > > >
> > > >
> > > >> Also can you confirm that we need to
:
> > > >>
> > > >> # Disable AAC+ support (HE-AAC or
AAC SBR)
> > > >>
project.RemoveDefines('HELIX_FEATURE_AUDIO_CODEC_AAC_SBR')
> > > >>
> > > >> in order to remove AAC+ support from
the build
> > > >
> > > >
> > > > Yes.
> > > >
> > > > Milko
> > > >
> > > >
> > > >
> > > >> John
> > > >>
> > > >>
> > > >>
> > > >> Milko Boic wrote:
> > > >>
> > > >>> At 11:08 AM 10/6/2006, Greg
Wright wrote:
> > > >>>
> > > >>>> John Stirling wrote:
> > > >>>>
> > > >>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC is defined
> > > >>>>> I don't have
datatype/aac/fileformat though
> > > >>>>> we're building splay,
datatype_group_audio, 
> > > >>>>>
datatype_aac_codec_fixpt_decoder
> > > >>>>> we've got raac.so
> > > >>>>> what other plugins are
required ? which target builds them ? 
> > > >>>>> datatype_aac_fileformat
?
> > > >>>>
> > > >>>>
> > > >>>>
> > > >>>> do you have all of the
following?
> > > >>>>
> > > >>>> aacff:
helix150/datatype/aac/fileformat
> > > >>>> raac :
helix150/datatype/aac/codec/fixpt/decoder/hxwrap
> > > >>>> mp4arender:
helix150/datatype/mp4/audio/renderer/
> > > >>>>
> > > >>>> See Milko's response below
for macros you may need defined.
> > > >>>>
> > > >>>> --greg.
> > > >>>>
> > > >>>>
> > > >>>>> Is this available on
cayenne_1_5_0 ?
> > > >>>>
> > > >>>
> > > >>> Yes.
> > > >>>
> > > >>>>> John
> > > >>>>>
> > > >>>>>
> > > >>>>> Milko Boic wrote:
> > > >>>>>
> > > >>>>>>
> > > >>>>>> This plays perfectly
for me on Atlas.
> > > >>>>>> You are probably
just missing some components:
> > > >>>>>>
> > > >>>>>> To parse audio/aacp
file you need AAC file format:
> > > >>>>>>
datatypeaacfileformataacff.cpp(101):const char * const 
> > > >>>>>>
CAACFileFormat::m_ppszFileMimeType[] =
{"audio/aac", 
> > > >>>>>>
"audio/aacp", NULL};
> > > >>>>>>
> > > >>>>>> The aac file format
will produce the following 
> > > streaming mime-type:
> > > >>>>>>
audio/X-HX-AAC-GENERIC
> > > >>>>>>
> > > >>>>>> This streaming
mime-type is handled by mpeg4 audio 
> > renderer if 
> > > >>>>>> built with wither
HELIX_FEATURE_AUDIO_CODEC_AAC or 
> > > >>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC macros.
> > > >>>>>>
datatypemp4audiorenderermp4audio.cpp(98):
> > > >>>>>>
"audio/X-HX-AAC-GENERIC",
> > > >>>>>>
> > > >>>>>> Milko
> > > >>>>>>
> > > >>>>>> At 07:22 AM
10/5/2006, John Stirling wrote:
> > > >>>>>>
> > > >>>>>>> We're trying to
get this stream to play :
> > > >>>>>>>
> > > >>>>>>> http://207.200.96.231:8004
 <http://207.200.96.231
:8004/>
> > > >>>>>>>
> > > >>>>>>>
(mimetype=audio/aacp)
> > > >>>>>>>
> > > >>>>>>> We're getting
error 0x80040011 (no renderer).
> > > >>>>>>>
> > > >>>>>>> We can play aac
content with mimetype=audio/X-RN-MP4-RAWAU
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>> Our build is :
> > > >>>>>>>
> > > >>>>>>>
HELIX_DATESTAMP="-D 20060601"
> > > >>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
> > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > >>>>>>> $HELIX_DATESTAMP
splay
> > > >>>>>>> # WAV support
> > > >>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
> > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > >>>>>>> $HELIX_DATESTAMP
datatype_group_audio
> > > >>>>>>> # AAC support
(.m4a)
> > > >>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
> > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > >>>>>>> $HELIX_DATESTAMP
datatype_aac_codec_fixpt_decoder
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>> There are a few
places where audio/X-RN-MP4-RAWAU is 
> > > referenced 
> > > >>>>>>> so I'm not sure
what's needed/safe to get this 
> > stream to play.
> > > >>>>>>>
> > > >>>>>>> John
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>>
_______________________________________________
> > > >>>>>>> Helix-client-dev
mailing list
> > > >>>>>>>
Helix-client-devhelixcommunity.org
> > > >>>>>>> 
> > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > >>>>>>
> > > >>>>>>
> > > >>>>>
> > > >>>>>
_______________________________________________
> > > >>>>> Helix-client-dev mailing
list
> > > >>>>> Helix-client-devhelixcommunity.org
> > > >>>>> 
> > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > >>>>
> > > >>>
> > > >
> > > >
> > > 
> > > 
> > >
_______________________________________________
> > > Helix-client-dev mailing list
> > > Helix-client-devhelixcommunity.org
> > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > 
> > 
> > 
> > _______________________________________________
> > Helix-client-dev mailing list
> > Helix-client-devhelixcommunity.org
> > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > 
> 
> 
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-devhelixcommunity.org
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev


_______________________________________________
Helix-client-dev mailing list
Helix-client-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
AAC+ playback, cayenne_1_5_0
user name
2006-10-20 12:02:57
So, putting the xxxCCF() functions in a separate
pckunpckccf.cpp does
indeed allow us to realize significant space savings:
aacff.so is down
to 45k (from about 99k before) and John tells me that it
still seems to
work OK.

However it still seems to me that, if multiple plugins are
using this
code, we'd be better off putting it in a shared library
(either
clntcore.so or some new utillib.so) rather than linking a
separate copy
into every plugin.  Is there a particular reason why it
wasn't done that
way?

thanks

p.

On Fri, 2006-10-20 at 12:37 +0100, Phil Blundell wrote:
> Unfortunately this doesn't seem to help much.  It looks
like the problem
> is that SetCStringProperty() and
SetCStringPropertyCCF() are both
> implemented in util/pckunpck.cpp, so a call to either
of those functions
> will cause the linker to drag in the whole of
pckunpck.o (plus all its
> dependencies) from the ar archive.
> 
> I tried building with -ffunction-sections and
--gc-sections but this
> doesn't seem to be doing much good either: we're still
getting a pile of
> code included in the output file that I don't really
want.  Sadly the
> GNU linker isn't terribly good at explaining why it
decided to include a
> particular section, so figuring out exactly what's
going on is pretty
> tedious.
> 
> I'll have a go at disentangling SetCStringPropertyCCF()
from the other
> code in pckunpck.cpp and see if putting it in an object
file on its own
> makes any difference.
> 
> FWIW, here's the linker output showing which archive
members are being
> included.
> 
> armv4l-rel/aacff_libs.a(utillib.baseobj.o)
>                              
armv4l-rel/obj/aacffdll/aacffdll.o
> (CHXBaseCountingObject::m_lNumObjects)
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
> (SetCStringPropertyCCF(IHXValues*, char const*, char
const*, IUnknown*,
> int))
> armv4l-rel/aacff_libs.a(utillib.rtsputil.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(BinTo64(unsigned char
> const*, long, char*))
> armv4l-rel/aacff_libs.a(utillib.tconverter_fxp.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
>
(CHXTimestampConverterFXP::ReInit(CHXTimestampConverterFXP::
ConversionType, unsigned long, unsigned long))
> armv4l-rel/aacff_libs.a(logutillib.hxtlogutil.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
> (HXEnableLogging(IUnknown*))
> armv4l-rel/aacff_libs.a(dtutillib.bitstream.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
> (Bitstream::Bitstream())
> armv4l-rel/aacff_libs.a(runtlib.safestring.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(SafeStrCpy)
> armv4l-rel/aacff_libs.a(contlib.hxslist.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> (CHXSimpleList::CHXSimpleList())
> armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o) (vtable for
CHXHeader)
> armv4l-rel/aacff_libs.a(contlib.hxbuffer.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXBuffer::CHXBuffer())
> armv4l-rel/aacff_libs.a(contlib.hxstring.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXString::CHXString(long
> (*)(long, long)))
> armv4l-rel/aacff_libs.a(contlib.hxstradv.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> (CHXString::AppendULONG(unsigned long))
> armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> (CHXMapStringToOb::z_defaultChunkSize)
> armv4l-rel/aacff_libs.a(contlib.hxmaputils.o)
> 
> armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
> (HlxMap::IntVec_t::IntVec_t())
> armv4l-rel/aacff_libs.a(runtlib.string.o)
> 
> armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
(__helix_strlwr)
> 
> p.
> 
> On Wed, 2006-10-18 at 08:48 -0400, Eric Hyche wrote:
> > Oh, I see what's going on. I was looking at
> > datatype/aac/fileformat on the HEAD, where it
> > only uses SetCStringPropertyCCF(). On 150cay,
> > datatype/aac/fileformat still uses
SetCStringProperty().
> > 
> > This is good - all you need to do is switch to
> > using SetCStringPropertyCCF instead of
SetCStringProperty()
> > and you still should get most of the savings
> > you are currently seeing without losing any of the
> > functionality.
> > 
> > The reason is that SetCStringProperty() creates
> > a CHXBuffer() directly, and thus you have to link
> > in all of CHXBuffer(). SetCStringPropertyCCF()
> > creates an IHXBuffer via the common class
> > factory (CCF).
> > 
> > Try this out - make sure it works for you, and
> > then you can submit a CR.
> > 
> > Eric
> > 
> > =============================================
> > Eric Hyche (ehychereal.com)
> > Technical Lead
> > RealNetworks, Inc.  
> > 
> > > -----Original Message-----
> > > From: helix-client-dev-bounceshelixcommunity.org 
> > > [mailto:helix-client-dev-bounceshelixcommunity.org] On 
> > > Behalf Of Eric Hyche
> > > Sent: Wednesday, October 18, 2006 8:26 AM
> > > To: 'John Stirling'; 'Milko Boic'
> > > Cc: helix-client-devhelixcommunity.org
> > > Subject: RE: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
> > > 
> > > 
> > > You mean SetCStringPropertyCCF, right?
> > > 
> > > Even so, that's odd that it would go down
that much,
> > > since SetCStringPropertyCCF is a very small
function.
> > > There must be something else that is no
longer
> > > used if the calls to SetCStringPropertyCCF()
are
> > > removed.
> > > 
> > > Eric
> > > 
> > > =============================================
> > > Eric Hyche (ehychereal.com)
> > > Technical Lead
> > > RealNetworks, Inc.  
> > > 
> > > > -----Original Message-----
> > > > From: helix-client-dev-bounceshelixcommunity.org 
> > > > [mailto:helix-client-dev-bounceshelixcommunity.org] On 
> > > > Behalf Of John Stirling
> > > > Sent: Wednesday, October 18, 2006 7:37
AM
> > > > To: Milko Boic
> > > > Cc: helix-client-devhelixcommunity.org
> > > > Subject: Re: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
> > > > 
> > > > I removed those defines and it reduces
the code size as follows:
> > > > 
> > > > Standard build - 148k
> > > > Remove AAC_FILEFORMAT_RAPACK - 136k
> > > > Remove AACFF_SEEKTABLE - 134k
> > > > Remove AACFF_LOAS - 117k
> > > > Remove AACFF_ADIF - 99k
> > > > 
> > > > and the stream still plays.
> > > > 
> > > > However, calls to SetCStringProperty()
are resulting in 
> > > > several utility 
> > > > libraries being statically linked in to
the plugin.
> > > > 
> > > > Comment out all (5) calls to
SetCStringProperty() and code 
> > > size goes 
> > > > down to 43k.
> > > > 
> > > > So it looks like there's potentially
quite a bit of scope to 
> > > > reduce the 
> > > > code size if we could dynamically link
to these utility 
> > > > libraries from 
> > > > all plugins that use them ? (mp3ff also
uses SetCStringProperty()). 
> > > > Could someone comment on this.
> > > > 
> > > > John
> > > > 
> > > > 
> > > > 
> > > > Milko Boic wrote:
> > > > 
> > > > > At 04:16 AM 10/16/2006, John
Stirling wrote:
> > > > >
> > > > >> I can play the clip now (after
building aacff.so), but have some 
> > > > >> questions about the plugins
required for aac playback.
> > > > >>
> > > > >> Previously we had the following
plugins and could play 
> > > > iTunes ripped 
> > > > >> .m4a files
> > > > >>
> > > > >> raac.so (67k)
> > > > >> mp4arender.so (204k)
> > > > >> mp4fformat.so (109k)
> > > > >>
> > > > >> If we also build
> > > > >> aacff.so (148k)
> > > > >>
> > > > >> we can play the AAC stream
previously mentioned (but this 
> > > > is another 
> > > > >> 148k which we could do
without..).
> > > > >>
> > > > >> I had previously thought
mp4fformat was the fileformat 
> > > > plugin needed 
> > > > >> for AAC. Can someone clarify
the plugins needed. eg if we have 
> > > > >> aacff.so does this mean we no
longer need mp4fformat.so ?
> > > > >
> > > > >
> > > > > AAC is codec which can be contained
in several ways. ITunes 
> > > > uses .m4a 
> > > > > format which is based of the ISO
base file format. This 
> > > format and 
> > > > > related family of formats (mp4,
.3gp, .avc) are supported by 
> > > > > mp4fformat.so.
> > > > > aacff.so supports much more
rudimentary AAC framing 
> > > formats (ADIF, 
> > > > > LOAS and ADTS). This rudimentary
format is used by some HTTP 
> > > > > broadcasters. More specifically, I
believe ADTS is used.
> > > > >
> > > > > aacff.so is rather big due to
supporting all three formats, 
> > > > including 
> > > > > AAC bitstream parses in order to
support ADIF.
> > > > >
> > > > > You should be able to reduce the
size of aacff.so by 
> > > excluding the 
> > > > > following defines (some currently
hard-coded in aacffdll 
> > > Umakefil):
> > > > > HELIX_FEATURE_AAC_FILEFORMAT_RAPACK
- needed for 
> > > > transformating of aac 
> > > > > to other formats
> > > > > HELIX_FEATURE_AACFF_SEEKTABLE -
needed for index table 
> > > > building - does 
> > > > > not apply to live streams
> > > > > HELIX_FEATURE_AACFF_LOAS - LOAS
format support
> > > > > HELIX_FEATURE_AACFF_ADIF - ADIF
format support
> > > > >
> > > > >
> > > > >> Also can you confirm that we
need to :
> > > > >>
> > > > >> # Disable AAC+ support (HE-AAC
or AAC SBR)
> > > > >>
project.RemoveDefines('HELIX_FEATURE_AUDIO_CODEC_AAC_SBR')
> > > > >>
> > > > >> in order to remove AAC+ support
from the build
> > > > >
> > > > >
> > > > > Yes.
> > > > >
> > > > > Milko
> > > > >
> > > > >
> > > > >
> > > > >> John
> > > > >>
> > > > >>
> > > > >>
> > > > >> Milko Boic wrote:
> > > > >>
> > > > >>> At 11:08 AM 10/6/2006, Greg
Wright wrote:
> > > > >>>
> > > > >>>> John Stirling wrote:
> > > > >>>>
> > > > >>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC is defined
> > > > >>>>> I don't have
datatype/aac/fileformat though
> > > > >>>>> we're building
splay, datatype_group_audio, 
> > > > >>>>>
datatype_aac_codec_fixpt_decoder
> > > > >>>>> we've got raac.so
> > > > >>>>> what other plugins
are required ? which target builds them ? 
> > > > >>>>>
datatype_aac_fileformat ?
> > > > >>>>
> > > > >>>>
> > > > >>>>
> > > > >>>> do you have all of the
following?
> > > > >>>>
> > > > >>>> aacff:
helix150/datatype/aac/fileformat
> > > > >>>> raac :
helix150/datatype/aac/codec/fixpt/decoder/hxwrap
> > > > >>>> mp4arender:
helix150/datatype/mp4/audio/renderer/
> > > > >>>>
> > > > >>>> See Milko's response
below for macros you may need defined.
> > > > >>>>
> > > > >>>> --greg.
> > > > >>>>
> > > > >>>>
> > > > >>>>> Is this available
on cayenne_1_5_0 ?
> > > > >>>>
> > > > >>>
> > > > >>> Yes.
> > > > >>>
> > > > >>>>> John
> > > > >>>>>
> > > > >>>>>
> > > > >>>>> Milko Boic wrote:
> > > > >>>>>
> > > > >>>>>>
> > > > >>>>>> This plays
perfectly for me on Atlas.
> > > > >>>>>> You are
probably just missing some components:
> > > > >>>>>>
> > > > >>>>>> To parse
audio/aacp file you need AAC file format:
> > > > >>>>>>
datatypeaacfileformataacff.cpp(101):const char * const 
> > > > >>>>>>
CAACFileFormat::m_ppszFileMimeType[] =
{"audio/aac", 
> > > > >>>>>>
"audio/aacp", NULL};
> > > > >>>>>>
> > > > >>>>>> The aac file
format will produce the following 
> > > > streaming mime-type:
> > > > >>>>>>
audio/X-HX-AAC-GENERIC
> > > > >>>>>>
> > > > >>>>>> This streaming
mime-type is handled by mpeg4 audio 
> > > renderer if 
> > > > >>>>>> built with
wither HELIX_FEATURE_AUDIO_CODEC_AAC or 
> > > > >>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC macros.
> > > > >>>>>>
datatypemp4audiorenderermp4audio.cpp(98):
> > > > >>>>>>
"audio/X-HX-AAC-GENERIC",
> > > > >>>>>>
> > > > >>>>>> Milko
> > > > >>>>>>
> > > > >>>>>> At 07:22 AM
10/5/2006, John Stirling wrote:
> > > > >>>>>>
> > > > >>>>>>> We're
trying to get this stream to play :
> > > > >>>>>>>
> > > > >>>>>>> http://207.200.96.231:8004
 <http://207.200.96.231
:8004/>
> > > > >>>>>>>
> > > > >>>>>>>
(mimetype=audio/aacp)
> > > > >>>>>>>
> > > > >>>>>>> We're
getting error 0x80040011 (no renderer).
> > > > >>>>>>>
> > > > >>>>>>> We can play
aac content with mimetype=audio/X-RN-MP4-RAWAU
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>> Our build
is :
> > > > >>>>>>>
> > > > >>>>>>>
HELIX_DATESTAMP="-D 20060601"
> > > > >>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
> > > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > > >>>>>>>
$HELIX_DATESTAMP splay
> > > > >>>>>>> # WAV
support
> > > > >>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
> > > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > > >>>>>>>
$HELIX_DATESTAMP datatype_group_audio
> > > > >>>>>>> # AAC
support (.m4a)
> > > > >>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
> > > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > > >>>>>>>
$HELIX_DATESTAMP datatype_aac_codec_fixpt_decoder
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>> There are a
few places where audio/X-RN-MP4-RAWAU is 
> > > > referenced 
> > > > >>>>>>> so I'm not
sure what's needed/safe to get this 
> > > stream to play.
> > > > >>>>>>>
> > > > >>>>>>> John
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
> > > > >>>>>>>
_______________________________________________
> > > > >>>>>>>
Helix-client-dev mailing list
> > > > >>>>>>>
Helix-client-devhelixcommunity.org
> > > > >>>>>>> 
> > > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > >>>>>>
> > > > >>>>>>
> > > > >>>>>
> > > > >>>>>
_______________________________________________
> > > > >>>>> Helix-client-dev
mailing list
> > > > >>>>>
Helix-client-devhelixcommunity.org
> > > > >>>>> 
> > > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > >>>>
> > > > >>>
> > > > >
> > > > >
> > > > 
> > > > 
> > > >
_______________________________________________
> > > > Helix-client-dev mailing list
> > > > Helix-client-devhelixcommunity.org
> > > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > 
> > > 
> > > 
> > >
_______________________________________________
> > > Helix-client-dev mailing list
> > > Helix-client-devhelixcommunity.org
> > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > 
> > 
> > 
> > _______________________________________________
> > Helix-client-dev mailing list
> > Helix-client-devhelixcommunity.org
> > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> 
> 
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-devhelixcommunity.org
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev


_______________________________________________
Helix-client-dev mailing list
Helix-client-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
AAC+ playback, cayenne_1_5_0
user name
2006-10-20 15:07:48

> -----Original Message-----
> From: Phil Blundell [mailto:pbnexus.co.uk] 
> Sent: Friday, October 20, 2006 8:03 AM
> To: ehychereal.com
> Cc: helix-client-devhelixcommunity.org
> Subject: RE: [Helix-client-dev] AAC+ playback,
cayenne_1_5_0
> 
> So, putting the xxxCCF() functions in a separate
pckunpckccf.cpp does
> indeed allow us to realize significant space savings:
aacff.so is down
> to 45k (from about 99k before) and John tells me that
it 
> still seems to work OK.
> 
> However it still seems to me that, if multiple plugins
are using this
> code, we'd be better off putting it in a shared library
(either
> clntcore.so or some new utillib.so) rather than linking
a 
> separate copy into every plugin.  Is there a particular
reason why it 
> wasn't done that way?
> 

All of the functions in pckunpck.cpp are small library
functions - 
it's not appropriate to put them as external functions in
a shared library.

It sounds like your linker is doing file- or module- level
linking as opposed to function-level linking. I don't know
much
about the internals of linkers, but I know that on symbian
when we write/obtained a linker that did function-level
linking,
our footprint size went way down.

Can someone more knowledgeable about symbian comment on
how we do function-level linking on symbian? Perhaps a
similar solution might apply here...

Eric


> thanks
> 
> p.
> 
> On Fri, 2006-10-20 at 12:37 +0100, Phil Blundell wrote:
> > Unfortunately this doesn't seem to help much.  It
looks 
> like the problem
> > is that SetCStringProperty() and
SetCStringPropertyCCF() are both
> > implemented in util/pckunpck.cpp, so a call to
either of 
> those functions
> > will cause the linker to drag in the whole of
pckunpck.o 
> (plus all its
> > dependencies) from the ar archive.
> > 
> > I tried building with -ffunction-sections and
--gc-sections but this
> > doesn't seem to be doing much good either: we're
still 
> getting a pile of
> > code included in the output file that I don't
really want.  
> Sadly the
> > GNU linker isn't terribly good at explaining why
it decided 
> to include a
> > particular section, so figuring out exactly what's
going on 
> is pretty
> > tedious.
> > 
> > I'll have a go at disentangling
SetCStringPropertyCCF() 
> from the other
> > code in pckunpck.cpp and see if putting it in an
object 
> file on its own
> > makes any difference.
> > 
> > FWIW, here's the linker output showing which
archive 
> members are being
> > included.
> > 
> > armv4l-rel/aacff_libs.a(utillib.baseobj.o)
> >                              
armv4l-rel/obj/aacffdll/aacffdll.o
> > (CHXBaseCountingObject::m_lNumObjects)
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> >                              
armv4l-rel/obj/aacffdll/aacff.o
> > (SetCStringPropertyCCF(IHXValues*, char const*,
char 
> const*, IUnknown*,
> > int))
> > armv4l-rel/aacff_libs.a(utillib.rtsputil.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(BinTo64(unsigned char
> > const*, long, char*))
> > armv4l-rel/aacff_libs.a(utillib.tconverter_fxp.o)
> >                              
armv4l-rel/obj/aacffdll/aacff.o
> > 
>
(CHXTimestampConverterFXP::ReInit(CHXTimestampConverterFXP::
Co
> nversionType, unsigned long, unsigned long))
> > armv4l-rel/aacff_libs.a(logutillib.hxtlogutil.o)
> >                              
armv4l-rel/obj/aacffdll/aacff.o
> > (HXEnableLogging(IUnknown*))
> > armv4l-rel/aacff_libs.a(dtutillib.bitstream.o)
> >                              
armv4l-rel/obj/aacffdll/aacff.o
> > (Bitstream::Bitstream())
> > armv4l-rel/aacff_libs.a(runtlib.safestring.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(SafeStrCpy)
> > armv4l-rel/aacff_libs.a(contlib.hxslist.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> > (CHXSimpleList::CHXSimpleList())
> > armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(vtable for CHXHeader)
> > armv4l-rel/aacff_libs.a(contlib.hxbuffer.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXBuffer::CHXBuffer())
> > armv4l-rel/aacff_libs.a(contlib.hxstring.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o) 
> (CHXString::CHXString(long
> > (*)(long, long)))
> > armv4l-rel/aacff_libs.a(contlib.hxstradv.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> > (CHXString::AppendULONG(unsigned long))
> >
armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
> > 
> > armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> > (CHXMapStringToOb::z_defaultChunkSize)
> > armv4l-rel/aacff_libs.a(contlib.hxmaputils.o)
> > 
> >
armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
> > (HlxMap::IntVec_t::IntVec_t())
> > armv4l-rel/aacff_libs.a(runtlib.string.o)
> > 
> > armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
(__helix_strlwr)
> > 
> > p.
> > 
> > On Wed, 2006-10-18 at 08:48 -0400, Eric Hyche
wrote:
> > > Oh, I see what's going on. I was looking at
> > > datatype/aac/fileformat on the HEAD, where it
> > > only uses SetCStringPropertyCCF(). On 150cay,
> > > datatype/aac/fileformat still uses
SetCStringProperty().
> > > 
> > > This is good - all you need to do is switch
to
> > > using SetCStringPropertyCCF instead of
SetCStringProperty()
> > > and you still should get most of the savings
> > > you are currently seeing without losing any
of the
> > > functionality.
> > > 
> > > The reason is that SetCStringProperty()
creates
> > > a CHXBuffer() directly, and thus you have to
link
> > > in all of CHXBuffer().
SetCStringPropertyCCF()
> > > creates an IHXBuffer via the common class
> > > factory (CCF).
> > > 
> > > Try this out - make sure it works for you,
and
> > > then you can submit a CR.
> > > 
> > > Eric
> > > 
> > > =============================================
> > > Eric Hyche (ehychereal.com)
> > > Technical Lead
> > > RealNetworks, Inc.  
> > > 
> > > > -----Original Message-----
> > > > From: helix-client-dev-bounceshelixcommunity.org 
> > > > [mailto:helix-client-dev-bounceshelixcommunity.org] On 
> > > > Behalf Of Eric Hyche
> > > > Sent: Wednesday, October 18, 2006 8:26
AM
> > > > To: 'John Stirling'; 'Milko Boic'
> > > > Cc: helix-client-devhelixcommunity.org
> > > > Subject: RE: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
> > > > 
> > > > 
> > > > You mean SetCStringPropertyCCF, right?
> > > > 
> > > > Even so, that's odd that it would go
down that much,
> > > > since SetCStringPropertyCCF is a very
small function.
> > > > There must be something else that is no
longer
> > > > used if the calls to
SetCStringPropertyCCF() are
> > > > removed.
> > > > 
> > > > Eric
> > > > 
> > > >
=============================================
> > > > Eric Hyche (ehychereal.com)
> > > > Technical Lead
> > > > RealNetworks, Inc.  
> > > > 
> > > > > -----Original Message-----
> > > > > From: helix-client-dev-bounceshelixcommunity.org 
> > > > >
[mailto:helix-client-dev-bounceshelixcommunity.org] On 
> > > > > Behalf Of John Stirling
> > > > > Sent: Wednesday, October 18, 2006
7:37 AM
> > > > > To: Milko Boic
> > > > > Cc: helix-client-devhelixcommunity.org
> > > > > Subject: Re: [Helix-client-dev]
AAC+ playback, cayenne_1_5_0
> > > > > 
> > > > > I removed those defines and it
reduces the code size 
> as follows:
> > > > > 
> > > > > Standard build - 148k
> > > > > Remove AAC_FILEFORMAT_RAPACK - 136k
> > > > > Remove AACFF_SEEKTABLE - 134k
> > > > > Remove AACFF_LOAS - 117k
> > > > > Remove AACFF_ADIF - 99k
> > > > > 
> > > > > and the stream still plays.
> > > > > 
> > > > > However, calls to
SetCStringProperty() are resulting in 
> > > > > several utility 
> > > > > libraries being statically linked
in to the plugin.
> > > > > 
> > > > > Comment out all (5) calls to
SetCStringProperty() and code 
> > > > size goes 
> > > > > down to 43k.
> > > > > 
> > > > > So it looks like there's
potentially quite a bit of scope to 
> > > > > reduce the 
> > > > > code size if we could dynamically
link to these utility 
> > > > > libraries from 
> > > > > all plugins that use them ? (mp3ff
also uses 
> SetCStringProperty()). 
> > > > > Could someone comment on this.
> > > > > 
> > > > > John
> > > > > 
> > > > > 
> > > > > 
> > > > > Milko Boic wrote:
> > > > > 
> > > > > > At 04:16 AM 10/16/2006, John
Stirling wrote:
> > > > > >
> > > > > >> I can play the clip now
(after building aacff.so), 
> but have some 
> > > > > >> questions about the
plugins required for aac playback.
> > > > > >>
> > > > > >> Previously we had the
following plugins and could play 
> > > > > iTunes ripped 
> > > > > >> .m4a files
> > > > > >>
> > > > > >> raac.so (67k)
> > > > > >> mp4arender.so (204k)
> > > > > >> mp4fformat.so (109k)
> > > > > >>
> > > > > >> If we also build
> > > > > >> aacff.so (148k)
> > > > > >>
> > > > > >> we can play the AAC stream
previously mentioned (but this 
> > > > > is another 
> > > > > >> 148k which we could do
without..).
> > > > > >>
> > > > > >> I had previously thought
mp4fformat was the fileformat 
> > > > > plugin needed 
> > > > > >> for AAC. Can someone
clarify the plugins needed. 
> eg if we have 
> > > > > >> aacff.so does this mean we
no longer need mp4fformat.so ?
> > > > > >
> > > > > >
> > > > > > AAC is codec which can be
contained in several ways. ITunes 
> > > > > uses .m4a 
> > > > > > format which is based of the
ISO base file format. This 
> > > > format and 
> > > > > > related family of formats
(mp4, .3gp, .avc) are 
> supported by 
> > > > > > mp4fformat.so.
> > > > > > aacff.so supports much more
rudimentary AAC framing 
> > > > formats (ADIF, 
> > > > > > LOAS and ADTS). This
rudimentary format is used by 
> some HTTP 
> > > > > > broadcasters. More
specifically, I believe ADTS is used.
> > > > > >
> > > > > > aacff.so is rather big due to
supporting all three formats, 
> > > > > including 
> > > > > > AAC bitstream parses in order
to support ADIF.
> > > > > >
> > > > > > You should be able to reduce
the size of aacff.so by 
> > > > excluding the 
> > > > > > following defines (some
currently hard-coded in aacffdll 
> > > > Umakefil):
> > > > > >
HELIX_FEATURE_AAC_FILEFORMAT_RAPACK - needed for 
> > > > > transformating of aac 
> > > > > > to other formats
> > > > > > HELIX_FEATURE_AACFF_SEEKTABLE
- needed for index table 
> > > > > building - does 
> > > > > > not apply to live streams
> > > > > > HELIX_FEATURE_AACFF_LOAS -
LOAS format support
> > > > > > HELIX_FEATURE_AACFF_ADIF -
ADIF format support
> > > > > >
> > > > > >
> > > > > >> Also can you confirm that
we need to :
> > > > > >>
> > > > > >> # Disable AAC+ support
(HE-AAC or AAC SBR)
> > > > > >>
project.RemoveDefines('HELIX_FEATURE_AUDIO_CODEC_AAC_SBR')
> > > > > >>
> > > > > >> in order to remove AAC+
support from the build
> > > > > >
> > > > > >
> > > > > > Yes.
> > > > > >
> > > > > > Milko
> > > > > >
> > > > > >
> > > > > >
> > > > > >> John
> > > > > >>
> > > > > >>
> > > > > >>
> > > > > >> Milko Boic wrote:
> > > > > >>
> > > > > >>> At 11:08 AM 10/6/2006,
Greg Wright wrote:
> > > > > >>>
> > > > > >>>> John Stirling
wrote:
> > > > > >>>>
> > > > > >>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC is defined
> > > > > >>>>> I don't have
datatype/aac/fileformat though
> > > > > >>>>> we're building
splay, datatype_group_audio, 
> > > > > >>>>>
datatype_aac_codec_fixpt_decoder
> > > > > >>>>> we've got
raac.so
> > > > > >>>>> what other
plugins are required ? which target 
> builds them ? 
> > > > > >>>>>
datatype_aac_fileformat ?
> > > > > >>>>
> > > > > >>>>
> > > > > >>>>
> > > > > >>>> do you have all of
the following?
> > > > > >>>>
> > > > > >>>> aacff:
helix150/datatype/aac/fileformat
> > > > > >>>> raac :
helix150/datatype/aac/codec/fixpt/decoder/hxwrap
> > > > > >>>> mp4arender:
helix150/datatype/mp4/audio/renderer/
> > > > > >>>>
> > > > > >>>> See Milko's
response below for macros you may 
> need defined.
> > > > > >>>>
> > > > > >>>> --greg.
> > > > > >>>>
> > > > > >>>>
> > > > > >>>>> Is this
available on cayenne_1_5_0 ?
> > > > > >>>>
> > > > > >>>
> > > > > >>> Yes.
> > > > > >>>
> > > > > >>>>> John
> > > > > >>>>>
> > > > > >>>>>
> > > > > >>>>> Milko Boic
wrote:
> > > > > >>>>>
> > > > > >>>>>>
> > > > > >>>>>> This plays
perfectly for me on Atlas.
> > > > > >>>>>> You are
probably just missing some components:
> > > > > >>>>>>
> > > > > >>>>>> To parse
audio/aacp file you need AAC file format:
> > > > > >>>>>>
datatypeaacfileformataacff.cpp(101):const 
> char * const 
> > > > > >>>>>>
CAACFileFormat::m_ppszFileMimeType[] =
{"audio/aac", 
> > > > > >>>>>>
"audio/aacp", NULL};
> > > > > >>>>>>
> > > > > >>>>>> The aac
file format will produce the following 
> > > > > streaming mime-type:
> > > > > >>>>>>
audio/X-HX-AAC-GENERIC
> > > > > >>>>>>
> > > > > >>>>>> This
streaming mime-type is handled by mpeg4 audio 
> > > > renderer if 
> > > > > >>>>>> built with
wither HELIX_FEATURE_AUDIO_CODEC_AAC or 
> > > > > >>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC macros.
> > > > > >>>>>>
datatypemp4audiorenderermp4audio.cpp(98):
> > > > > >>>>>>
"audio/X-HX-AAC-GENERIC",
> > > > > >>>>>>
> > > > > >>>>>> Milko
> > > > > >>>>>>
> > > > > >>>>>> At 07:22
AM 10/5/2006, John Stirling wrote:
> > > > > >>>>>>
> > > > > >>>>>>> We're
trying to get this stream to play :
> > > > > >>>>>>>
> > > > > >>>>>>> http://207.200.96.231:8004
 
> <http://207.200.96.231
:8004/>
> > > > > >>>>>>>
> > > > > >>>>>>>
(mimetype=audio/aacp)
> > > > > >>>>>>>
> > > > > >>>>>>> We're
getting error 0x80040011 (no renderer).
> > > > > >>>>>>>
> > > > > >>>>>>> We can
play aac content with 
> mimetype=audio/X-RN-MP4-RAWAU
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>> Our
build is :
> > > > > >>>>>>>
> > > > > >>>>>>>
HELIX_DATESTAMP="-D 20060601"
> > > > > >>>>>>> build
-m hxclient_1_5_0_cayenne_restricted -P 
> > > > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > > > >>>>>>>
$HELIX_DATESTAMP splay
> > > > > >>>>>>> # WAV
support
> > > > > >>>>>>> build
-m hxclient_1_5_0_cayenne_restricted -P 
> > > > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > > > >>>>>>>
$HELIX_DATESTAMP datatype_group_audio
> > > > > >>>>>>> # AAC
support (.m4a)
> > > > > >>>>>>> build
-m hxclient_1_5_0_cayenne_restricted -P 
> > > > > >>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
> > > > > >>>>>>>
$HELIX_DATESTAMP datatype_aac_codec_fixpt_decoder
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>> There
are a few places where audio/X-RN-MP4-RAWAU is 
> > > > > referenced 
> > > > > >>>>>>> so I'm
not sure what's needed/safe to get this 
> > > > stream to play.
> > > > > >>>>>>>
> > > > > >>>>>>> John
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
> > > > > >>>>>>>
_______________________________________________
> > > > > >>>>>>>
Helix-client-dev mailing list
> > > > > >>>>>>>
Helix-client-devhelixcommunity.org
> > > > > >>>>>>> 
> > > > > 
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > > >>>>>>
> > > > > >>>>>>
> > > > > >>>>>
> > > > > >>>>>
_______________________________________________
> > > > > >>>>>
Helix-client-dev mailing list
> > > > > >>>>>
Helix-client-devhelixcommunity.org
> > > > > >>>>> 
> > > > > 
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > > >>>>
> > > > > >>>
> > > > > >
> > > > > >
> > > > > 
> > > > > 
> > > > >
_______________________________________________
> > > > > Helix-client-dev mailing list
> > > > > Helix-client-devhelixcommunity.org
> > > > > 
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > > 
> > > > 
> > > > 
> > > >
_______________________________________________
> > > > Helix-client-dev mailing list
> > > > Helix-client-devhelixcommunity.org
> > > > 
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > > > 
> > > 
> > > 
> > >
_______________________________________________
> > > Helix-client-dev mailing list
> > > Helix-client-devhelixcommunity.org
> > > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> > 
> > 
> > _______________________________________________
> > Helix-client-dev mailing list
> > Helix-client-devhelixcommunity.org
> > http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> 


_______________________________________________
Helix-client-dev mailing list
Helix-client-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
AAC+ playback, cayenne_1_5_0
user name
2006-10-20 17:43:21
Phil Blundell wrote:
> Unfortunately this doesn't seem to help much.  It looks
like the problem
> is that SetCStringProperty() and
SetCStringPropertyCCF() are both
> implemented in util/pckunpck.cpp, so a call to either
of those functions
> will cause the linker to drag in the whole of
pckunpck.o (plus all its
> dependencies) from the ar archive.

Are you not using 'rlink'?

    project.AddDefines('HELIX_CONFIG_USE_RLINK')


We wrote a set of utilities that makes the gcc linker act as
a
function level linker. We use this on symbian to reduce the
size
of the DLLs. It has also been used on linux quite a bit. If
I remember
correctly, it saved us about 30% in all DLLs. Either way, it
makes
it so that if you only use one function from a unit(.o) you
only link
against that one function and not the whole unit.

--greg.



> 
> I tried building with -ffunction-sections and
--gc-sections but this
> doesn't seem to be doing much good either: we're still
getting a pile of
> code included in the output file that I don't really
want.  Sadly the
> GNU linker isn't terribly good at explaining why it
decided to include a
> particular section, so figuring out exactly what's
going on is pretty
> tedious.
> 
> I'll have a go at disentangling SetCStringPropertyCCF()
from the other
> code in pckunpck.cpp and see if putting it in an object
file on its own
> makes any difference.
> 
> FWIW, here's the linker output showing which archive
members are being
> included.
> 
> armv4l-rel/aacff_libs.a(utillib.baseobj.o)
>                              
armv4l-rel/obj/aacffdll/aacffdll.o
> (CHXBaseCountingObject::m_lNumObjects)
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
> (SetCStringPropertyCCF(IHXValues*, char const*, char
const*, IUnknown*,
> int))
> armv4l-rel/aacff_libs.a(utillib.rtsputil.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(BinTo64(unsigned char
> const*, long, char*))
> armv4l-rel/aacff_libs.a(utillib.tconverter_fxp.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
>
(CHXTimestampConverterFXP::ReInit(CHXTimestampConverterFXP::
ConversionType, unsigned long, unsigned long))
> armv4l-rel/aacff_libs.a(logutillib.hxtlogutil.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
> (HXEnableLogging(IUnknown*))
> armv4l-rel/aacff_libs.a(dtutillib.bitstream.o)
>                              
armv4l-rel/obj/aacffdll/aacff.o
> (Bitstream::Bitstream())
> armv4l-rel/aacff_libs.a(runtlib.safestring.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(SafeStrCpy)
> armv4l-rel/aacff_libs.a(contlib.hxslist.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> (CHXSimpleList::CHXSimpleList())
> armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o) (vtable for
CHXHeader)
> armv4l-rel/aacff_libs.a(contlib.hxbuffer.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXBuffer::CHXBuffer())
> armv4l-rel/aacff_libs.a(contlib.hxstring.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXString::CHXString(long
> (*)(long, long)))
> armv4l-rel/aacff_libs.a(contlib.hxstradv.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> (CHXString::AppendULONG(unsigned long))
> armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
> 
> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
> (CHXMapStringToOb::z_defaultChunkSize)
> armv4l-rel/aacff_libs.a(contlib.hxmaputils.o)
> 
> armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
> (HlxMap::IntVec_t::IntVec_t())
> armv4l-rel/aacff_libs.a(runtlib.string.o)
> 
> armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
(__helix_strlwr)
> 
> p.
> 
> On Wed, 2006-10-18 at 08:48 -0400, Eric Hyche wrote:
>> Oh, I see what's going on. I was looking at
>> datatype/aac/fileformat on the HEAD, where it
>> only uses SetCStringPropertyCCF(). On 150cay,
>> datatype/aac/fileformat still uses
SetCStringProperty().
>>
>> This is good - all you need to do is switch to
>> using SetCStringPropertyCCF instead of
SetCStringProperty()
>> and you still should get most of the savings
>> you are currently seeing without losing any of the
>> functionality.
>>
>> The reason is that SetCStringProperty() creates
>> a CHXBuffer() directly, and thus you have to link
>> in all of CHXBuffer(). SetCStringPropertyCCF()
>> creates an IHXBuffer via the common class
>> factory (CCF).
>>
>> Try this out - make sure it works for you, and
>> then you can submit a CR.
>>
>> Eric
>>
>> =============================================
>> Eric Hyche (ehychereal.com)
>> Technical Lead
>> RealNetworks, Inc.  
>>
>>> -----Original Message-----
>>> From: helix-client-dev-bounceshelixcommunity.org 
>>> [mailto:helix-client-dev-bounceshelixcommunity.org] On 
>>> Behalf Of Eric Hyche
>>> Sent: Wednesday, October 18, 2006 8:26 AM
>>> To: 'John Stirling'; 'Milko Boic'
>>> Cc: helix-client-devhelixcommunity.org
>>> Subject: RE: [Helix-client-dev] AAC+ playback,
cayenne_1_5_0
>>>
>>>
>>> You mean SetCStringPropertyCCF, right?
>>>
>>> Even so, that's odd that it would go down that
much,
>>> since SetCStringPropertyCCF is a very small
function.
>>> There must be something else that is no longer
>>> used if the calls to SetCStringPropertyCCF()
are
>>> removed.
>>>
>>> Eric
>>>
>>> =============================================
>>> Eric Hyche (ehychereal.com)
>>> Technical Lead
>>> RealNetworks, Inc.  
>>>
>>>> -----Original Message-----
>>>> From: helix-client-dev-bounceshelixcommunity.org 
>>>> [mailto:helix-client-dev-bounceshelixcommunity.org] On 
>>>> Behalf Of John Stirling
>>>> Sent: Wednesday, October 18, 2006 7:37 AM
>>>> To: Milko Boic
>>>> Cc: helix-client-devhelixcommunity.org
>>>> Subject: Re: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
>>>>
>>>> I removed those defines and it reduces the
code size as follows:
>>>>
>>>> Standard build - 148k
>>>> Remove AAC_FILEFORMAT_RAPACK - 136k
>>>> Remove AACFF_SEEKTABLE - 134k
>>>> Remove AACFF_LOAS - 117k
>>>> Remove AACFF_ADIF - 99k
>>>>
>>>> and the stream still plays.
>>>>
>>>> However, calls to SetCStringProperty() are
resulting in 
>>>> several utility 
>>>> libraries being statically linked in to the
plugin.
>>>>
>>>> Comment out all (5) calls to
SetCStringProperty() and code 
>>> size goes 
>>>> down to 43k.
>>>>
>>>> So it looks like there's potentially quite
a bit of scope to 
>>>> reduce the 
>>>> code size if we could dynamically link to
these utility 
>>>> libraries from 
>>>> all plugins that use them ? (mp3ff also
uses SetCStringProperty()). 
>>>> Could someone comment on this.
>>>>
>>>> John
>>>>
>>>>
>>>>
>>>> Milko Boic wrote:
>>>>
>>>>> At 04:16 AM 10/16/2006, John Stirling
wrote:
>>>>>
>>>>>> I can play the clip now (after
building aacff.so), but have some 
>>>>>> questions about the plugins
required for aac playback.
>>>>>>
>>>>>> Previously we had the following
plugins and could play 
>>>> iTunes ripped 
>>>>>> .m4a files
>>>>>>
>>>>>> raac.so (67k)
>>>>>> mp4arender.so (204k)
>>>>>> mp4fformat.so (109k)
>>>>>>
>>>>>> If we also build
>>>>>> aacff.so (148k)
>>>>>>
>>>>>> we can play the AAC stream
previously mentioned (but this 
>>>> is another 
>>>>>> 148k which we could do without..).
>>>>>>
>>>>>> I had previously thought mp4fformat
was the fileformat 
>>>> plugin needed 
>>>>>> for AAC. Can someone clarify the
plugins needed. eg if we have 
>>>>>> aacff.so does this mean we no
longer need mp4fformat.so ?
>>>>>
>>>>> AAC is codec which can be contained in
several ways. ITunes 
>>>> uses .m4a 
>>>>> format which is based of the ISO base
file format. This 
>>> format and 
>>>>> related family of formats (mp4, .3gp,
.avc) are supported by 
>>>>> mp4fformat.so.
>>>>> aacff.so supports much more rudimentary
AAC framing 
>>> formats (ADIF, 
>>>>> LOAS and ADTS). This rudimentary format
is used by some HTTP 
>>>>> broadcasters. More specifically, I
believe ADTS is used.
>>>>>
>>>>> aacff.so is rather big due to
supporting all three formats, 
>>>> including 
>>>>> AAC bitstream parses in order to
support ADIF.
>>>>>
>>>>> You should be able to reduce the size
of aacff.so by 
>>> excluding the 
>>>>> following defines (some currently
hard-coded in aacffdll 
>>> Umakefil):
>>>>> HELIX_FEATURE_AAC_FILEFORMAT_RAPACK -
needed for 
>>>> transformating of aac 
>>>>> to other formats
>>>>> HELIX_FEATURE_AACFF_SEEKTABLE - needed
for index table 
>>>> building - does 
>>>>> not apply to live streams
>>>>> HELIX_FEATURE_AACFF_LOAS - LOAS format
support
>>>>> HELIX_FEATURE_AACFF_ADIF - ADIF format
support
>>>>>
>>>>>
>>>>>> Also can you confirm that we need
to :
>>>>>>
>>>>>> # Disable AAC+ support (HE-AAC or
AAC SBR)
>>>>>>
project.RemoveDefines('HELIX_FEATURE_AUDIO_CODEC_AAC_SBR')
>>>>>>
>>>>>> in order to remove AAC+ support
from the build
>>>>>
>>>>> Yes.
>>>>>
>>>>> Milko
>>>>>
>>>>>
>>>>>
>>>>>> John
>>>>>>
>>>>>>
>>>>>>
>>>>>> Milko Boic wrote:
>>>>>>
>>>>>>> At 11:08 AM 10/6/2006, Greg
Wright wrote:
>>>>>>>
>>>>>>>> John Stirling wrote:
>>>>>>>>
>>>>>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC is defined
>>>>>>>>> I don't have
datatype/aac/fileformat though
>>>>>>>>> we're building splay,
datatype_group_audio, 
>>>>>>>>>
datatype_aac_codec_fixpt_decoder
>>>>>>>>> we've got raac.so
>>>>>>>>> what other plugins are
required ? which target builds them ? 
>>>>>>>>> datatype_aac_fileformat
?
>>>>>>>>
>>>>>>>>
>>>>>>>> do you have all of the
following?
>>>>>>>>
>>>>>>>> aacff:
helix150/datatype/aac/fileformat
>>>>>>>> raac :
helix150/datatype/aac/codec/fixpt/decoder/hxwrap
>>>>>>>> mp4arender:
helix150/datatype/mp4/audio/renderer/
>>>>>>>>
>>>>>>>> See Milko's response below
for macros you may need defined.
>>>>>>>>
>>>>>>>> --greg.
>>>>>>>>
>>>>>>>>
>>>>>>>>> Is this available on
cayenne_1_5_0 ?
>>>>>>> Yes.
>>>>>>>
>>>>>>>>> John
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Milko Boic wrote:
>>>>>>>>>
>>>>>>>>>> This plays
perfectly for me on Atlas.
>>>>>>>>>> You are probably
just missing some components:
>>>>>>>>>>
>>>>>>>>>> To parse audio/aacp
file you need AAC file format:
>>>>>>>>>>
datatypeaacfileformataacff.cpp(101):const char * const 
>>>>>>>>>>
CAACFileFormat::m_ppszFileMimeType[] =
{"audio/aac", 
>>>>>>>>>>
"audio/aacp", NULL};
>>>>>>>>>>
>>>>>>>>>> The aac file format
will produce the following 
>>>> streaming mime-type:
>>>>>>>>>>
audio/X-HX-AAC-GENERIC
>>>>>>>>>>
>>>>>>>>>> This streaming
mime-type is handled by mpeg4 audio 
>>> renderer if 
>>>>>>>>>> built with wither
HELIX_FEATURE_AUDIO_CODEC_AAC or 
>>>>>>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC macros.
>>>>>>>>>>
datatypemp4audiorenderermp4audio.cpp(98):
>>>>>>>>>>
"audio/X-HX-AAC-GENERIC",
>>>>>>>>>>
>>>>>>>>>> Milko
>>>>>>>>>>
>>>>>>>>>> At 07:22 AM
10/5/2006, John Stirling wrote:
>>>>>>>>>>
>>>>>>>>>>> We're trying to
get this stream to play :
>>>>>>>>>>>
>>>>>>>>>>> http://207.200.96.231:8004
 <http://207.200.96.231
:8004/>
>>>>>>>>>>>
>>>>>>>>>>>
(mimetype=audio/aacp)
>>>>>>>>>>>
>>>>>>>>>>> We're getting
error 0x80040011 (no renderer).
>>>>>>>>>>>
>>>>>>>>>>> We can play aac
content with mimetype=audio/X-RN-MP4-RAWAU
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> Our build is :
>>>>>>>>>>>
>>>>>>>>>>>
HELIX_DATESTAMP="-D 20060601"
>>>>>>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
>>>>>>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
>>>>>>>>>>>
$HELIX_DATESTAMP splay
>>>>>>>>>>> # WAV support
>>>>>>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
>>>>>>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
>>>>>>>>>>>
$HELIX_DATESTAMP datatype_group_audio
>>>>>>>>>>> # AAC support
(.m4a)
>>>>>>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
>>>>>>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
>>>>>>>>>>>
$HELIX_DATESTAMP datatype_aac_codec_fixpt_decoder
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> There are a few
places where audio/X-RN-MP4-RAWAU is 
>>>> referenced 
>>>>>>>>>>> so I'm not sure
what's needed/safe to get this 
>>> stream to play.
>>>>>>>>>>> John
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>
Helix-client-dev mailing list
>>>>>>>>>>>
Helix-client-devhelixcommunity.org
>>>>>>>>>>>
>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>>>>>>>
>>>>>>>>>
_______________________________________________
>>>>>>>>> Helix-client-dev
mailing list
>>>>>>>>> Helix-client-devhelixcommunity.org
>>>>>>>>>
>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>>
>>>>
>>>>
_______________________________________________
>>>> Helix-client-dev mailing list
>>>> Helix-client-devhelixcommunity.org
>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>
>>>
>>> _______________________________________________
>>> Helix-client-dev mailing list
>>> Helix-client-devhelixcommunity.org
>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>
>>
>> _______________________________________________
>> Helix-client-dev mailing list
>> Helix-client-devhelixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> 
> 
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-devhelixcommunity.org
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
> 

_______________________________________________
Helix-client-dev mailing list
Helix-client-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
AAC+ playback, cayenne_1_5_0
user name
2006-10-23 14:48:48
Greg Wright wrote:

> Phil Blundell wrote:
>
>> Unfortunately this doesn't seem to help much.  It
looks like the problem
>> is that SetCStringProperty() and
SetCStringPropertyCCF() are both
>> implemented in util/pckunpck.cpp, so a call to
either of those functions
>> will cause the linker to drag in the whole of
pckunpck.o (plus all its
>> dependencies) from the ar archive.
>
>
> Are you not using 'rlink'?
>
>    project.AddDefines('HELIX_CONFIG_USE_RLINK')
>
>
> We wrote a set of utilities that makes the gcc linker
act as a
> function level linker. We use this on symbian to reduce
the size
> of the DLLs. It has also been used on linux quite a
bit. If I remember
> correctly, it saved us about 30% in all DLLs. Either
way, it makes
> it so that if you only use one function from a unit(.o)
you only link
> against that one function and not the whole unit.

No, wasn't aware of this option - just about to try a
complete rebuild 
with that defined..

Is that a new config option ? Why is that not the default
for linux builds ?

>
> --greg.
>
>
>
>>
>> I tried building with -ffunction-sections and
--gc-sections but this
>> doesn't seem to be doing much good either: we're
still getting a pile of
>> code included in the output file that I don't
really want.  Sadly the
>> GNU linker isn't terribly good at explaining why it
decided to include a
>> particular section, so figuring out exactly what's
going on is pretty
>> tedious.
>>
>> I'll have a go at disentangling
SetCStringPropertyCCF() from the other
>> code in pckunpck.cpp and see if putting it in an
object file on its own
>> makes any difference.
>>
>> FWIW, here's the linker output showing which
archive members are being
>> included.
>>
>> armv4l-rel/aacff_libs.a(utillib.baseobj.o)
>>                              
armv4l-rel/obj/aacffdll/aacffdll.o
>> (CHXBaseCountingObject::m_lNumObjects)
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
>>                              
armv4l-rel/obj/aacffdll/aacff.o
>> (SetCStringPropertyCCF(IHXValues*, char const*,
char const*, IUnknown*,
>> int))
>> armv4l-rel/aacff_libs.a(utillib.rtsputil.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(BinTo64(unsigned char
>> const*, long, char*))
>> armv4l-rel/aacff_libs.a(utillib.tconverter_fxp.o)
>>                              
armv4l-rel/obj/aacffdll/aacff.o
>>
(CHXTimestampConverterFXP::ReInit(CHXTimestampConverterFXP::
ConversionType, 
>> unsigned long, unsigned long))
>> armv4l-rel/aacff_libs.a(logutillib.hxtlogutil.o)
>>                              
armv4l-rel/obj/aacffdll/aacff.o
>> (HXEnableLogging(IUnknown*))
>> armv4l-rel/aacff_libs.a(dtutillib.bitstream.o)
>>                              
armv4l-rel/obj/aacffdll/aacff.o
>> (Bitstream::Bitstream())
>> armv4l-rel/aacff_libs.a(runtlib.safestring.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(SafeStrCpy)
>> armv4l-rel/aacff_libs.a(contlib.hxslist.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
>> (CHXSimpleList::CHXSimpleList())
>> armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o) (vtable
for CHXHeader)
>> armv4l-rel/aacff_libs.a(contlib.hxbuffer.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXBuffer::CHXBuffer())
>> armv4l-rel/aacff_libs.a(contlib.hxstring.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
(CHXString::CHXString(long
>> (*)(long, long)))
>> armv4l-rel/aacff_libs.a(contlib.hxstradv.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
>> (CHXString::AppendULONG(unsigned long))
>> armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
>>
>> armv4l-rel/aacff_libs.a(utillib.pckunpck.o)
>> (CHXMapStringToOb::z_defaultChunkSize)
>> armv4l-rel/aacff_libs.a(contlib.hxmaputils.o)
>>
>> armv4l-rel/aacff_libs.a(contlib.chxmapstringtoob.o)
>> (HlxMap::IntVec_t::IntVec_t())
>> armv4l-rel/aacff_libs.a(runtlib.string.o)
>>
>> armv4l-rel/aacff_libs.a(contlib.chxpckts.o)
(__helix_strlwr)
>>
>> p.
>>
>> On Wed, 2006-10-18 at 08:48 -0400, Eric Hyche
wrote:
>>
>>> Oh, I see what's going on. I was looking at
>>> datatype/aac/fileformat on the HEAD, where it
>>> only uses SetCStringPropertyCCF(). On 150cay,
>>> datatype/aac/fileformat still uses
SetCStringProperty().
>>>
>>> This is good - all you need to do is switch to
>>> using SetCStringPropertyCCF instead of
SetCStringProperty()
>>> and you still should get most of the savings
>>> you are currently seeing without losing any of
the
>>> functionality.
>>>
>>> The reason is that SetCStringProperty() creates
>>> a CHXBuffer() directly, and thus you have to
link
>>> in all of CHXBuffer(). SetCStringPropertyCCF()
>>> creates an IHXBuffer via the common class
>>> factory (CCF).
>>>
>>> Try this out - make sure it works for you, and
>>> then you can submit a CR.
>>>
>>> Eric
>>>
>>> =============================================
>>> Eric Hyche (ehychereal.com)
>>> Technical Lead
>>> RealNetworks, Inc. 
>>>
>>>> -----Original Message-----
>>>> From: helix-client-dev-bounceshelixcommunity.org 
>>>> [mailto:helix-client-dev-bounceshelixcommunity.org] On Behalf Of 
>>>> Eric Hyche
>>>> Sent: Wednesday, October 18, 2006 8:26 AM
>>>> To: 'John Stirling'; 'Milko Boic'
>>>> Cc: helix-client-devhelixcommunity.org
>>>> Subject: RE: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
>>>>
>>>>
>>>> You mean SetCStringPropertyCCF, right?
>>>>
>>>> Even so, that's odd that it would go down
that much,
>>>> since SetCStringPropertyCCF is a very small
function.
>>>> There must be something else that is no
longer
>>>> used if the calls to
SetCStringPropertyCCF() are
>>>> removed.
>>>>
>>>> Eric
>>>>
>>>>
=============================================
>>>> Eric Hyche (ehychereal.com)
>>>> Technical Lead
>>>> RealNetworks, Inc. 
>>>>
>>>>> -----Original Message-----
>>>>> From: helix-client-dev-bounceshelixcommunity.org 
>>>>> [mailto:helix-client-dev-bounceshelixcommunity.org] On Behalf Of 
>>>>> John Stirling
>>>>> Sent: Wednesday, October 18, 2006 7:37
AM
>>>>> To: Milko Boic
>>>>> Cc: helix-client-devhelixcommunity.org
>>>>> Subject: Re: [Helix-client-dev] AAC+
playback, cayenne_1_5_0
>>>>>
>>>>> I removed those defines and it reduces
the code size as follows:
>>>>>
>>>>> Standard build - 148k
>>>>> Remove AAC_FILEFORMAT_RAPACK - 136k
>>>>> Remove AACFF_SEEKTABLE - 134k
>>>>> Remove AACFF_LOAS - 117k
>>>>> Remove AACFF_ADIF - 99k
>>>>>
>>>>> and the stream still plays.
>>>>>
>>>>> However, calls to SetCStringProperty()
are resulting in several 
>>>>> utility libraries being statically
linked in to the plugin.
>>>>>
>>>>> Comment out all (5) calls to
SetCStringProperty() and code 
>>>>
>>>> size goes
>>>>
>>>>> down to 43k.
>>>>>
>>>>> So it looks like there's potentially
quite a bit of scope to 
>>>>> reduce the code size if we could
dynamically link to these utility 
>>>>> libraries from all plugins that use
them ? (mp3ff also uses 
>>>>> SetCStringProperty()). Could someone
comment on this.
>>>>>
>>>>> John
>>>>>
>>>>>
>>>>>
>>>>> Milko Boic wrote:
>>>>>
>>>>>> At 04:16 AM 10/16/2006, John
Stirling wrote:
>>>>>>
>>>>>>> I can play the clip now (after
building aacff.so), but have some 
>>>>>>> questions about the plugins
required for aac playback.
>>>>>>>
>>>>>>> Previously we had the following
plugins and could play 
>>>>>>
>>>>> iTunes ripped
>>>>>
>>>>>>> .m4a files
>>>>>>>
>>>>>>> raac.so (67k)
>>>>>>> mp4arender.so (204k)
>>>>>>> mp4fformat.so (109k)
>>>>>>>
>>>>>>> If we also build
>>>>>>> aacff.so (148k)
>>>>>>>
>>>>>>> we can play the AAC stream
previously mentioned (but this 
>>>>>>
>>>>> is another
>>>>>
>>>>>>> 148k which we could do
without..).
>>>>>>>
>>>>>>> I had previously thought
mp4fformat was the fileformat 
>>>>>>
>>>>> plugin needed
>>>>>
>>>>>>> for AAC. Can someone clarify
the plugins needed. eg if we have 
>>>>>>> aacff.so does this mean we no
longer need mp4fformat.so ?
>>>>>>
>>>>>>
>>>>>> AAC is codec which can be contained
in several ways. ITunes 
>>>>>
>>>>> uses .m4a
>>>>>
>>>>>> format which is based of the ISO
base file format. This 
>>>>>
>>>> format and
>>>>
>>>>>> related family of formats (mp4,
.3gp, .avc) are supported by 
>>>>>> mp4fformat.so.
>>>>>> aacff.so supports much more
rudimentary AAC framing 
>>>>>
>>>> formats (ADIF,
>>>>
>>>>>> LOAS and ADTS). This rudimentary
format is used by some HTTP 
>>>>>> broadcasters. More specifically, I
believe ADTS is used.
>>>>>>
>>>>>> aacff.so is rather big due to
supporting all three formats, 
>>>>>
>>>>> including
>>>>>
>>>>>> AAC bitstream parses in order to
support ADIF.
>>>>>>
>>>>>> You should be able to reduce the
size of aacff.so by 
>>>>>
>>>> excluding the
>>>>
>>>>>> following defines (some currently
hard-coded in aacffdll 
>>>>>
>>>> Umakefil):
>>>>
>>>>>> HELIX_FEATURE_AAC_FILEFORMAT_RAPACK
- needed for 
>>>>>
>>>>> transformating of aac
>>>>>
>>>>>> to other formats
>>>>>> HELIX_FEATURE_AACFF_SEEKTABLE -
needed for index table 
>>>>>
>>>>> building - does
>>>>>
>>>>>> not apply to live streams
>>>>>> HELIX_FEATURE_AACFF_LOAS - LOAS
format support
>>>>>> HELIX_FEATURE_AACFF_ADIF - ADIF
format support
>>>>>>
>>>>>>
>>>>>>> Also can you confirm that we
need to :
>>>>>>>
>>>>>>> # Disable AAC+ support (HE-AAC
or AAC SBR)
>>>>>>>
project.RemoveDefines('HELIX_FEATURE_AUDIO_CODEC_AAC_SBR')
>>>>>>>
>>>>>>> in order to remove AAC+ support
from the build
>>>>>>
>>>>>>
>>>>>> Yes.
>>>>>>
>>>>>> Milko
>>>>>>
>>>>>>
>>>>>>
>>>>>>> John
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Milko Boic wrote:
>>>>>>>
>>>>>>>> At 11:08 AM 10/6/2006, Greg
Wright wrote:
>>>>>>>>
>>>>>>>>> John Stirling wrote:
>>>>>>>>>
>>>>>>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC is defined
>>>>>>>>>> I don't have
datatype/aac/fileformat though
>>>>>>>>>> we're building
splay, datatype_group_audio, 
>>>>>>>>>>
datatype_aac_codec_fixpt_decoder
>>>>>>>>>> we've got raac.so
>>>>>>>>>> what other plugins
are required ? which target builds them ? 
>>>>>>>>>>
datatype_aac_fileformat ?
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> do you have all of the
following?
>>>>>>>>>
>>>>>>>>> aacff:
helix150/datatype/aac/fileformat
>>>>>>>>> raac :
helix150/datatype/aac/codec/fixpt/decoder/hxwrap
>>>>>>>>> mp4arender:
helix150/datatype/mp4/audio/renderer/
>>>>>>>>>
>>>>>>>>> See Milko's response
below for macros you may need defined.
>>>>>>>>>
>>>>>>>>> --greg.
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Is this available
on cayenne_1_5_0 ?
>>>>>>>>>
>>>>>>>> Yes.
>>>>>>>>
>>>>>>>>>> John
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Milko Boic wrote:
>>>>>>>>>>
>>>>>>>>>>> This plays
perfectly for me on Atlas.
>>>>>>>>>>> You are
probably just missing some components:
>>>>>>>>>>>
>>>>>>>>>>> To parse
audio/aacp file you need AAC file format:
>>>>>>>>>>>
datatypeaacfileformataacff.cpp(101):const char * const 
>>>>>>>>>>>
CAACFileFormat::m_ppszFileMimeType[] =
{"audio/aac", 
>>>>>>>>>>>
"audio/aacp", NULL};
>>>>>>>>>>>
>>>>>>>>>>> The aac file
format will produce the following 
>>>>>>>>>>
>>>>> streaming mime-type:
>>>>>
>>>>>>>>>>>
audio/X-HX-AAC-GENERIC
>>>>>>>>>>>
>>>>>>>>>>> This streaming
mime-type is handled by mpeg4 audio 
>>>>>>>>>>
>>>> renderer if
>>>>
>>>>>>>>>>> built with
wither HELIX_FEATURE_AUDIO_CODEC_AAC or 
>>>>>>>>>>>
HELIX_FEATURE_AUDIO_CODEC_RAAC macros.
>>>>>>>>>>>
datatypemp4audiorenderermp4audio.cpp(98):
>>>>>>>>>>>
"audio/X-HX-AAC-GENERIC",
>>>>>>>>>>>
>>>>>>>>>>> Milko
>>>>>>>>>>>
>>>>>>>>>>> At 07:22 AM
10/5/2006, John Stirling wrote:
>>>>>>>>>>>
>>>>>>>>>>>> We're
trying to get this stream to play :
>>>>>>>>>>>>
>>>>>>>>>>>> http://207.200.96.231:8004
 <http://207.200.96.231
:8004/>
>>>>>>>>>>>>
>>>>>>>>>>>>
(mimetype=audio/aacp)
>>>>>>>>>>>>
>>>>>>>>>>>> We're
getting error 0x80040011 (no renderer).
>>>>>>>>>>>>
>>>>>>>>>>>> We can play
aac content with mimetype=audio/X-RN-MP4-RAWAU
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Our build
is :
>>>>>>>>>>>>
>>>>>>>>>>>>
HELIX_DATESTAMP="-D 20060601"
>>>>>>>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
>>>>>>>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
>>>>>>>>>>>>
$HELIX_DATESTAMP splay
>>>>>>>>>>>> # WAV
support
>>>>>>>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
>>>>>>>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
>>>>>>>>>>>>
$HELIX_DATESTAMP datatype_group_audio
>>>>>>>>>>>> # AAC
support (.m4a)
>>>>>>>>>>>> build -m
hxclient_1_5_0_cayenne_restricted -P 
>>>>>>>>>>>>
helix-client-audio-all-fixpt -trelease -tsymbols 
>>>>>>>>>>>>
$HELIX_DATESTAMP datatype_aac_codec_fixpt_decoder
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> There are a
few places where audio/X-RN-MP4-RAWAU is 
>>>>>>>>>>>
>>>>> referenced
>>>>>
>>>>>>>>>>>> so I'm not
sure what's needed/safe to get this 
>>>>>>>>>>>
>>>> stream to play.
>>>>
>>>>>>>>>>>> John
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
_______________________________________________
>>>>>>>>>>>>
Helix-client-dev mailing list
>>>>>>>>>>>>
Helix-client-devhelixcommunity.org
>>>>>>>>>>>>
>>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>>
>>>>>>>>>>>
>>>>>>>>>>
_______________________________________________
>>>>>>>>>> Helix-client-dev
mailing list
>>>>>>>>>>
Helix-client-devhelixcommunity.org
>>>>>>>>>>
>>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>>
>>>>>>
>>>>>
>>>>>
_______________________________________________
>>>>> Helix-client-dev mailing list
>>>>> Helix-client-devhelixcommunity.org
>>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>>
>>>>
>>>>
_______________________________________________
>>>> Helix-client-dev mailing list
>>>> Helix-client-devhelixcommunity.org
>>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>>>
>>>
>>> _______________________________________________
>>> Helix-client-dev mailing list
>>> Helix-client-devhelixcommunity.org
>>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>
>>
>>
>> _______________________________________________
>> Helix-client-dev mailing list
>> Helix-client-devhelixcommunity.org
>> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
>>
>
> _______________________________________________
> Helix-client-dev mailing list
> Helix-client-devhelixcommunity.org
> http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev



_______________________________________________
Helix-client-dev mailing list
Helix-client-devhelixcommunity.org
http://lists.helixcommunity.org/mailman/listinf
o/helix-client-dev
[1-5]

about | contact  Other archives ( Real Estate discussion Medical topics )