After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 521542 - AAC decoder doesn't support raw AAC streams
AAC decoder doesn't support raw AAC streams
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-omx
git master
Other Linux
: Normal normal
: 0.10.1
Assigned To: Felipe Contreras (banned)
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2008-03-10 10:48 UTC by Tommi Myöhänen
Modified: 2009-01-09 22:55 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tommi Myöhänen 2008-03-10 10:48:38 UTC
It looks like sink_setcaps() in gstomx_aacdec.c doesn't do much with the caps it receives. Therefore the plugin only works when the stream contains enough information about stream contents (a.k.a. has either ADTS or ADIF header). Therefore this decoder plugin doesn't work when audio is coming from some container, e.g. from MP4 file, because in that case the stream information is passed in the caps:

setcaps (sink): audio/mpeg, mpegversion=(int)4, rate=(int)48000, channels=(int)2, framed=(boolean)true, codec_data=(buffer)1190

AAC decoder element should parse these caps in a similar manner to FAAD plugin in gst-plugins-bad. When "codec_data" info is present in caps structure, element can be sure that it is dealing with a raw AAC stream and in this case it needs to initialize the underlying OpenMAX codec itself (by using OMX_SetParameter call I guess).
Comment 1 Felipe Contreras (banned) 2008-05-23 17:13:28 UTC
I've checked the code and the faad plug-in isn't parsing that "codec_data".

It's passing the information to faad through faacDecInit2.

The information to determine the stream format (ADTS or ADIF) is present in the normal stream, not on the "codec_data". The "codec_data" field contains information about the profile.

I'm not aware of any facility to pass this "codec_data" to OpenMAX IL. I'm investigating.
Comment 2 Felipe Contreras (banned) 2008-06-17 15:48:16 UTC
There doesn't seem to be a specified way to do this. I will use OMX_BUFFERFLAG_EXTRADATA to mark the codec_data buffers, and send those to the decoder.
Comment 3 Felipe Contreras (banned) 2008-11-18 14:40:23 UTC
There will be a way to do this in the coming 1.1.2 spec with OMX_BUFFERFLAG_CODECCONFIG.

This is already implemented in gst-openmax using the value (0x80) instead of the define.

Regarding the ADTS or ADIF, it should be detected by the decoder, not handled by gst-openmax.

So now it's the turn of the OpenMAX IL implementations, I think from gst-openmax side this is fixed.