[FFmpeg-devel] [PATCH] AAC: ADTS profile_ObjectType to MPEG-4 AOT
Robert Swain
robert.swain
Fri Feb 13 01:20:58 CET 2009
2009/2/12 Alex Converse <alex.converse at gmail.com>:
> On Thu, Feb 12, 2009 at 8:37 AM, Robert Swain <robert.swain at gmail.com> wrote:
>> 2009/2/12 Alex Converse <alex.converse at gmail.com>:
>>> On Wed, Feb 11, 2009 at 9:55 PM, Alex Converse <alex.converse at gmail.com> wrote:
>>>> From ISO/IEC 14496-3:2005/1.A.4.3 Audio Data Transport Stream (ADTS)
>>>> "this element denotes the MPEG-4 Audio Object Type
>>>> (profile_ObjectType+1) according to the table defined in subclause
>>>> 1.5.2.1."
>>>>
>>>> This is needed to decode Main profile streams in ADTS that use
>>>> anything outside of the LC feature set.
>>
>> "The interpretation of this data element depends on the value of the
>> ID bit. If ID is
>> equal to '1' this field holds the same information as the profile
>> field in the ADTS
>> stream defined in ISO/IEC 13818-7. If ID is equal to '0' this element
>> denotes the
>> MPEG-4 Audio Object Type (profile_ObjectType+1) according to the table defined
>> in subclause 1.5.2.1."
>>
>> As noted for one of the other patches (the ADTS encoder patch IIRC),
>> "If ID is equal to '0'". I notice that the ID is not parsed but
>> skipped at the moment. We should parse it and adhere to its
>> behavioural connotations as in the spec.
>>
>
> Right now we are lenient toward decoding files marked as MPEG-2 that
> use MPEG-4 AAC features (e.g. PNS) as long as the feature is simply
> marked as reserved in MPEG-2 land and not interpreted as something
> else.
>
> Looking at the table:
>
> profile_ObjectType | MPEG2 profile (ID=1) | MPEG-4 AOT (ID=0)
> 0 | Main Profile | AOT AAC MAIN (=1)
> 1 | Low Complexity Profi | AOT AAC LC (=2)
> 2 | Scalable Sampling Ra | AOT AAC SSR (=3)
> 3 | (reserved) | AOT AAC LTP (=4)
>
> The only case where they differ (3) the MPEG-2 version is undefined.
After looking at the code again, I see that this has been completely
wrong for as long as the original line has been in place. All the
object_type values are 1 too small and so LC gets treated as MAIN, SSR
as LC, and so on.
Applied.
I've just realised that I'm committing these patches but Alex has
commit rights. I should just be OKing them. :) Oops, newbie error. ;)
Regards,
Rob
More information about the ffmpeg-devel
mailing list