GNOME Bugzilla – Bug 743946
qtdemux: handle files with AAC streams that have ESDS atom but no codec data
Last modified: 2018-11-03 14:57:35 UTC
Created attachment 296050 [details] [review] Patch to build missing codec data In which case the codec data needs to be built.
Could you point us to a sample, please?
Sure https://s3.amazonaws.com/MatejK/Samples/ESDS-no-codec-data.mp4
Review of attachment 296050 [details] [review]: ::: gst/isomp4/qtdemux.c @@ +10762,3 @@ + /* if there is no codec data present attempt to build one */ + if (!data_ptr && stream->n_channels > 0 && stream->rate > 0) { + gint profile = 2; Shouldn't the profile be different based on the value of the switch?
I don't think there should be other value. Most decoders require audioObjectType value of 2 (AAC-LC), even for SBR, where the SBR is either signaled implicitly (2 byte codec data), or explicitly (5 byte codec data, where audioObjectType is still set to 2 and extensionAudioObjectType is set to 5(SBR) or 5(PS)). Given that implicit signaling is perfectly valid and used by many files I don't think we need to bother trying to build 5 byte header. Not that it affects the profile value in any way. In theory if you know reliable way to map object type id from ESDS to audioObjectType from AudioSpecificConfig it can be done, but since most decoders only support AAC-LC (possibly with SBR and PS) I don't think it's worth the effort. I think if there are some files out there that require AAC Main or SSR they would have codec data.
Sorry, AAC PS extensionAudioObjectType is 29, not 5.
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/157.