[FFmpeg-devel] [PATCH] avcodec/h264_slice: use the new SAR early when setting the decoder

Hendrik Leppkes h.leppkes at gmail.com
Wed Apr 25 12:07:39 EEST 2018


On Wed, Apr 25, 2018 at 9:55 AM, Steve Lhomme <robux4 at ycbcr.xyz> wrote:
> Le 24/04/2018 à 08:28, Hendrik Leppkes a écrit :
>>
>> On Fri, Jan 19, 2018 at 1:01 PM, Steve Lhomme <robux4 at ycbcr.xyz> wrote:
>>>
>>> If we don't do that get_format might not be called for a while and the
>>> proper
>>> SAR not used.
>>>
>>> See the sample mentioned here: https://trac.videolan.org/vlc/ticket/19435
>>> ---
>>>   libavcodec/h264_slice.c | 4 +++-
>>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c
>>> index e6b7998834..319a37f5b6 100644
>>> --- a/libavcodec/h264_slice.c
>>> +++ b/libavcodec/h264_slice.c
>>> @@ -1050,8 +1050,10 @@ static int h264_init_ps(H264Context *h, const
>>> H264SliceContext *sl, int first_sl
>>>           || (non_j_pixfmt(h->avctx->pix_fmt) !=
>>> non_j_pixfmt(get_pixel_format(h, 0))))
>>>           must_reinit = 1;
>>>
>>> -    if (first_slice && av_cmp_q(sps->sar,
>>> h->avctx->sample_aspect_ratio))
>>> +    if (first_slice && av_cmp_q(sps->sar,
>>> h->avctx->sample_aspect_ratio)) {
>>>           must_reinit = 1;
>>> +        ff_set_sar(h->avctx, sps->sar);
>>> +    }
>>>
>>>       if (!h->setup_finished) {
>>>           h->avctx->profile = ff_h264_get_profile(sps);
>>> --
>>> 2.14.2
>>
>> Why do we even do a get_format call for aspect ratio changes in the
>> first place? It doesn't change the physical image properties, the
>> format of image buffers etc remains the same, hwaccel decisions remain
>> the same.. anyone know why this is?
>
>
> How are we supposed to know the display format has changed ? Checking each
> AVFrame sample_aspect_ratio to see if something changed ?
>

Exactly. There is a lot more properties that do not and should not
call get_format, like color properties
(matrix,trc,primaries,range,etc).
get_format should be called when the physical properties of the image
buffer change, not its interpretation.

- Hendrik


More information about the ffmpeg-devel mailing list