[vlc-devel] [PATCH 1/4] decoder: Give packetizer aspect ratio to decoder.

Martin Storsjö martin at martin.st
Thu Feb 6 21:49:45 CET 2014


On Thu, 6 Feb 2014, Rémi Denis-Courmont wrote:

> Le jeudi 6 février 2014, 15:05:08 Martin Storsjö a écrit :
>> From: Julian Scheel <julian at jusst.de>
>>
>> When the packetizer detects a valid pixel aspect ratio this should be
>> forwarded to the decoders input format. This is helpful for decoder modules
>> which do not expose the aspect ratio on their own.
>>
>> Signed-off-by: Julian Scheel <julian at jusst.de>
>> ---
>> IIRC the discussion last time ended at whether all of the struct
>> should be copied, or just these fields. For this use case either
>> is fine I think.
>>
>> Should these fields always be copied, or only the first time?
>> As it currently is written, it disallows any updates of the
>> aspect ratio through this channel.
>> ---
>>  src/input/decoder.c | 15 +++++++++++++++
>>  1 file changed, 15 insertions(+)
>>
>> diff --git a/src/input/decoder.c b/src/input/decoder.c
>> index d7caf2d..79a729d 100644
>> --- a/src/input/decoder.c
>> +++ b/src/input/decoder.c
>> @@ -1569,6 +1569,21 @@ static void DecoderProcessVideo( decoder_t *p_dec,
>> block_t *p_block, bool b_flus es_format_Clean( &p_dec->fmt_in );
>>                  es_format_Copy( &p_dec->fmt_in, &p_packetizer->fmt_out );
>>              }
>> +
>> +            /* If the packetizer provides aspect ratio information use it
>> as +             * long as the decoder itself provides no aspect ratio +
>>          * information. */
>> +            if( p_packetizer->fmt_out.video.i_sar_num > 0 &&
>> +                    p_packetizer->fmt_out.video.i_sar_den > 0 &&
>> +                    (p_dec->fmt_in.video.i_sar_num == 0 ||
>> +                     p_dec->fmt_in.video.i_sar_den == 0) )
>> +            {
>> +                p_dec->fmt_in.video.i_sar_num =
>> +                    p_packetizer->fmt_out.video.i_sar_num;
>> +                p_dec->fmt_in.video.i_sar_den=
>> +                    p_packetizer->fmt_out.video.i_sar_den;
>> +            }
>
> This will overwrite the decoder-specified SAR if extra data changed, won't it?
> (that bug was already there, true, but in another form...)

No, AFAIU the decoder sets it in p_dec->fmt_out (and most decoders ignore 
what SAR there is in p_dec->fmt_in), so I don't think it should hurt for 
the decoders that handle it themselves.

// Martin


More information about the vlc-devel mailing list