[FFmpeg-devel] [PATCH] Parsing ALS object type in MPEG-4
Baptiste Coudurier
baptiste.coudurier
Tue Nov 10 22:29:53 CET 2009
On 11/10/2009 12:10 PM, Thilo Borgmann wrote:
> Baptiste Coudurier schrieb:
>> On 10/11/2009 03:04 AM, Thilo Borgmann wrote:
>>> Baptiste Coudurier schrieb:
>>>> On 10/9/09 1:48 PM, Alex Converse wrote:
>>>>> On Sun, Aug 23, 2009 at 3:51 PM, Thilo Borgmann
>>>>> <thilo.borgmann at googlemail.com> wrote:
>>>>>> Index: libavcodec/mpeg4audio.h
>>>>>> ===================================================================
>>>>>> --- libavcodec/mpeg4audio.h (revision 19689)
>>>>>> +++ libavcodec/mpeg4audio.h (working copy)
>>>>>> @@ -36,6 +36,7 @@
>>>>>> int ext_sampling_index;
>>>>>> int ext_sample_rate;
>>>>>> int ext_chan_config;
>>>>>> + int channels;
>>>>>> } MPEG4AudioConfig;
>>>>>
>>>>> Can we put "channels" directly below "chan_config" without API/ABI
>>>>> breakage? If so I'd like to try to keep related thing together.
>>>>
>>>> We could since this struct is not part of the public API, though since
>>>> libavformat uses libavcodec, it is not safe.
>>>>
>>>
>>> Patch updated.
>>>
>>>
>>>> This reminds me, I think avcodec_register_all and av_register_all should
>>>> put requirements for libavcodec and libavutil versions respectively, to
>>>> avoid shared libraries problems, because soname only contains major
>>>> version and API changes only update minor version.
>>>>
>>>
>>> [...]
>>>
>>> Index: libavcodec/mpeg4audio.h
>>> ===================================================================
>>> --- libavcodec/mpeg4audio.h (revision 20011)
>>> +++ libavcodec/mpeg4audio.h (working copy)
>>> @@ -31,6 +31,7 @@
>>> int sampling_index;
>>> int sample_rate;
>>> int chan_config;
>>> + int channels;
>>> int sbr; //< -1 implicit, 1 presence
>>> int ext_object_type;
>>> int ext_sampling_index;
>>
>> Forgot to change that ?
>
> Hm, no... looking good locally as well as in the patch I had sent (rev7)
I think it's safer to put it at the end of the struct.
>>
>>> Index: libavformat/mov.c
>>> ===================================================================
>>> --- libavformat/mov.c (revision 20011)
>>> +++ libavformat/mov.c (working copy)
>>> @@ -434,9 +434,13 @@
>>> MPEG4AudioConfig cfg;
>>> ff_mpeg4audio_get_config(&cfg, st->codec->extradata,
>>> st->codec->extradata_size);
>>> + if (cfg.chan_config) {
>>> if (cfg.chan_config> 7)
>>> return -1;
>>> st->codec->channels =
>>> ff_mpeg4audio_channels[cfg.chan_config];
>>> + } else {
>>> + st->codec->channels = cfg.channels;
>>> + }
>>
>> By always setting cfg.channels I wanted to avoid the
>> if (cfg.chan_config) ...
>>
>> That's ok though.
>>
>
> Hm I tried to but cannot really follow the arguing about setting
> cfg.channels. Do you mean to always set
>
> st->codec->channels = cfg.channels;
>
> ? This would set it to 0 (for PCE streams == !ALS) but don't we loose
> something from ff_mpeg4audio_channes[] in that case? And are PCE streams
> always given if ALS is not given?
What do we loose ? It seems that chan_config value is still set, and it
avoids duplicating this if everywhere.
--
Baptiste COUDURIER
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list