[FFmpeg-devel] [PATCH] avfilter/vf_scale: set correct AVFrame SAR if reset_sar=1

Gyan Doshi ffmpeg at gyani.pro
Mon Jun 16 21:42:20 EEST 2025



On 2025-06-16 11:34 pm, Niklas Haas wrote:
> From: Niklas Haas <git at haasn.dev>
>
> This otherwise generates an inconsistency between the frame state and the
> link state, since the link state is set to 1:1 explicitly when `reset_sar`
> is enabled, but this line of code unconditionally overwrote the output
> frame SAR with the value that would be computed in the absence of `reset_sar`.
>
> cf. vf_scale_cuda, which does this correctly
> ---
>   libavfilter/vf_scale.c | 12 ++++++++----
>   1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
> index 62aa872c77..aec765b441 100644
> --- a/libavfilter/vf_scale.c
> +++ b/libavfilter/vf_scale.c
> @@ -854,10 +854,14 @@ scale:
>                                              AV_SIDE_DATA_PROP_COLOR_DEPENDENT);
>       }
>   
> -    av_reduce(&out->sample_aspect_ratio.num, &out->sample_aspect_ratio.den,
> -              (int64_t)in->sample_aspect_ratio.num * outlink->h * link->w,
> -              (int64_t)in->sample_aspect_ratio.den * outlink->w * link->h,
> -              INT_MAX);
> +    if (scale->reset_sar) {
> +        out->sample_aspect_ratio = outlink->sample_aspect_ratio;
> +    } else {
> +        av_reduce(&out->sample_aspect_ratio.num, &out->sample_aspect_ratio.den,
> +                (int64_t)in->sample_aspect_ratio.num * outlink->h * link->w,
> +                (int64_t)in->sample_aspect_ratio.den * outlink->w * link->h,
> +                INT_MAX);
> +    }
>   
>       if (sws_is_noop(out, in)) {
>           av_frame_free(&out);

LGTM

Regards,
Gyan



More information about the ffmpeg-devel mailing list