[FFmpeg-devel] [PATCH] Stream parsing

Baptiste Coudurier baptiste.coudurier
Mon Oct 4 00:49:42 CEST 2010


On 10/3/10 12:36 PM, Michael Niedermayer wrote:
> On Sun, Oct 03, 2010 at 09:18:19PM +0200, Benjamin Larsson wrote:
>> On 10/03/2010 08:40 PM, Justin Ruggles wrote:
>>> Benjamin Larsson wrote:
>>>
>>>> $topic, previously discussed in [RFC] Stream parsing
>>>>
>>>> MvH
>>>> Benjamin Larsson
>>>>
>>>
>>>> +/**
>>>> + * Codec should fill in channel configuration and samplerate instead of container
>>>> + */
>>>> +#define CODEC_CAP_CHANNEL_CONF     0x0400
>>> [...]
>>>> @@ -2191,9 +2192,17 @@
>>>>              }
>>>>          }
>>>>          assert(!st->codec->codec);
>>>> +        codec = avcodec_find_decoder(st->codec->codec_id);
>>>> +
>>>> +        /* Force decoding of at least one frame of codec data
>>>> +         * this makes sure the codec initializes the channel configuration
>>>> +         * and does not trust the values from the container.
>>>> +         */
>>>> +        if (codec && codec->capabilities & CODEC_CAP_CHANNEL_CONF)
>>>> +            st->codec->channels = 0;
>>>
>>> Your documentation says channel configuration and samplerate.  Why is
>>> sample_rate not also set to 0 here?
>>>
>>> -Justin
>>
>>
>> As long as
>>
>>         if (!has_codec_parameters(st->codec) ||
>> !has_decode_delay_been_guessed(st))
>>             try_decode_frame(st, pkt);
>>
>> will happen the codec will override whatever is set in the codec
>> context. Just setting channels to 0 will make sure that happens.
> 
> and it feels correcter to just set channels to 0 because its more likely
> that the codec knows at least the channels count

This has side-effects unfortunately, see issue #2053 and #2246.

-- 
Baptiste COUDURIER
Key fingerprint                 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer                                  http://www.ffmpeg.org



More information about the ffmpeg-devel mailing list