diff mbox series

[FFmpeg-devel,v1] avcodec/libaomdec: don't set aspect ratio when it's not yet known

Message ID 20231008115737.80200-1-lq@chinaffmpeg.org
State New
Headers show
Series [FFmpeg-devel,v1] avcodec/libaomdec: don't set aspect ratio when it's not yet known | expand

Commit Message

Liu Steven Oct. 8, 2023, 11:57 a.m. UTC
Makes the output of the libaom av1 decoder consistent with external decoders like
libdav1d.

reference commit: 1652f2492f88434010053289d946dab6a57e4d58

Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
---
 libavcodec/libaomdec.c | 1 -
 1 file changed, 1 deletion(-)

Comments

James Almer Oct. 8, 2023, 12:09 p.m. UTC | #1
On 10/8/2023 8:57 AM, Steven Liu wrote:
> Makes the output of the libaom av1 decoder consistent with external decoders like
> libdav1d.
> 
> reference commit: 1652f2492f88434010053289d946dab6a57e4d58

But it is known at this point. picture->sample_aspect_ratio is set 
directly above.

What needs to be done is initializing the decoder in aom_init() using 
the extradata, so lavf will not attempt to decode frames in order to get 
stream info, which is what i assume is happening here and why you want 
SAR to be 0/1.

> 
> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
> ---
>   libavcodec/libaomdec.c | 1 -
>   1 file changed, 1 deletion(-)
> 
> diff --git a/libavcodec/libaomdec.c b/libavcodec/libaomdec.c
> index 695d901051..ff4137bfc6 100644
> --- a/libavcodec/libaomdec.c
> +++ b/libavcodec/libaomdec.c
> @@ -204,7 +204,6 @@ static int aom_decode(AVCodecContext *avctx, AVFrame *picture,
>                     picture->height * img->r_w,
>                     picture->width * img->r_h,
>                     INT_MAX);
> -        ff_set_sar(avctx, picture->sample_aspect_ratio);
>   
>           if ((img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) && img->bit_depth == 8)
>               ff_aom_image_copy_16_to_8(picture, img);
Steven Liu Oct. 8, 2023, 12:45 p.m. UTC | #2
James Almer <jamrial@gmail.com>于2023年10月8日 周日20:08写道:

> On 10/8/2023 8:57 AM, Steven Liu wrote:
> > Makes the output of the libaom av1 decoder consistent with external
> decoders like
> > libdav1d.
> >
> > reference commit: 1652f2492f88434010053289d946dab6a57e4d58
>
> But it is known at this point. picture->sample_aspect_ratio is set
> directly above.
>
> What needs to be done is initializing the decoder in aom_init() using
> the extradata, so lavf will not attempt to decode frames in order to get
> stream info, which is what i assume is happening here and why you want
> SAR to be 0/1.

i want fate pass

>
>
> >
> > Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
> > ---
> >   libavcodec/libaomdec.c | 1 -
> >   1 file changed, 1 deletion(-)
> >
> > diff --git a/libavcodec/libaomdec.c b/libavcodec/libaomdec.c
> > index 695d901051..ff4137bfc6 100644
> > --- a/libavcodec/libaomdec.c
> > +++ b/libavcodec/libaomdec.c
> > @@ -204,7 +204,6 @@ static int aom_decode(AVCodecContext *avctx, AVFrame
> *picture,
> >                     picture->height * img->r_w,
> >                     picture->width * img->r_h,
> >                     INT_MAX);
> > -        ff_set_sar(avctx, picture->sample_aspect_ratio);
> >
> >           if ((img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) && img->bit_depth ==
> 8)
> >               ff_aom_image_copy_16_to_8(picture, img);
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>
James Almer Oct. 8, 2023, 12:49 p.m. UTC | #3
On 10/8/2023 9:45 AM, Steven Liu wrote:
> James Almer <jamrial@gmail.com>于2023年10月8日 周日20:08写道:
> 
>> On 10/8/2023 8:57 AM, Steven Liu wrote:
>>> Makes the output of the libaom av1 decoder consistent with external
>> decoders like
>>> libdav1d.
>>>
>>> reference commit: 1652f2492f88434010053289d946dab6a57e4d58
>>
>> But it is known at this point. picture->sample_aspect_ratio is set
>> directly above.
>>
>> What needs to be done is initializing the decoder in aom_init() using
>> the extradata, so lavf will not attempt to decode frames in order to get
>> stream info, which is what i assume is happening here and why you want
>> SAR to be 0/1.
> 
> i want fate pass

It will if you parse extradata during init().
This change is not ok given it's removing SAR altogether, meaning if a 
sample has render dimensions that are not the same as the coded 
dimensions, this information will not be propagated and players will 
display the frames with the wrong aspect ratio.

> 
>>
>>
>>>
>>> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
>>> ---
>>>    libavcodec/libaomdec.c | 1 -
>>>    1 file changed, 1 deletion(-)
>>>
>>> diff --git a/libavcodec/libaomdec.c b/libavcodec/libaomdec.c
>>> index 695d901051..ff4137bfc6 100644
>>> --- a/libavcodec/libaomdec.c
>>> +++ b/libavcodec/libaomdec.c
>>> @@ -204,7 +204,6 @@ static int aom_decode(AVCodecContext *avctx, AVFrame
>> *picture,
>>>                      picture->height * img->r_w,
>>>                      picture->width * img->r_h,
>>>                      INT_MAX);
>>> -        ff_set_sar(avctx, picture->sample_aspect_ratio);
>>>
>>>            if ((img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) && img->bit_depth ==
>> 8)
>>>                ff_aom_image_copy_16_to_8(picture, img);
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>>
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
>>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox series

Patch

diff --git a/libavcodec/libaomdec.c b/libavcodec/libaomdec.c
index 695d901051..ff4137bfc6 100644
--- a/libavcodec/libaomdec.c
+++ b/libavcodec/libaomdec.c
@@ -204,7 +204,6 @@  static int aom_decode(AVCodecContext *avctx, AVFrame *picture,
                   picture->height * img->r_w,
                   picture->width * img->r_h,
                   INT_MAX);
-        ff_set_sar(avctx, picture->sample_aspect_ratio);
 
         if ((img->fmt & AOM_IMG_FMT_HIGHBITDEPTH) && img->bit_depth == 8)
             ff_aom_image_copy_16_to_8(picture, img);