[FFmpeg-devel] [PATCH v2] avfilter/xpsnr: avoid division by zero

Gyan Doshi ffmpeg at gyani.pro
Wed Feb 5 08:39:37 EET 2025


On 2025-02-02 11:27 pm, Gyan Doshi wrote:
> The ref input may have its frame rate unset, which would then lead to
> SIGFPE. So fall back to the main link frame rate. If that too is unset,
> default to 0.
>
> Related to #11428

Plan to push tomorrow.

Regards,
Gyan


> ---
>   libavfilter/vf_xpsnr.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/libavfilter/vf_xpsnr.c b/libavfilter/vf_xpsnr.c
> index 1b2c2a7c2c..3097db0878 100644
> --- a/libavfilter/vf_xpsnr.c
> +++ b/libavfilter/vf_xpsnr.c
> @@ -552,6 +552,7 @@ static int config_input_ref(AVFilterLink *inlink)
>       AVFilterContext  *ctx = inlink->dst;
>       XPSNRContext *const s = ctx->priv;
>       FilterLink *il = ff_filter_link(inlink);
> +    FilterLink *ml = ff_filter_link(ctx->inputs[0]);
>   
>       if ((ctx->inputs[0]->w != ctx->inputs[1]->w) ||
>           (ctx->inputs[0]->h != ctx->inputs[1]->h)) {
> @@ -568,7 +569,9 @@ static int config_input_ref(AVFilterLink *inlink)
>       s->max_error_64 = (1 << s->depth) - 1; /* conventional limit */
>       s->max_error_64 *= s->max_error_64;
>   
> -    s->frame_rate = il->frame_rate.num / il->frame_rate.den;
> +    // Avoid division by zero
> +    s->frame_rate = il->frame_rate.den ? (il->frame_rate.num / il->frame_rate.den) :
> +                    ml->frame_rate.den ? (ml->frame_rate.num / ml->frame_rate.den) : 0;
>   
>       s->num_comps = (desc->nb_components > 3 ? 3 : desc->nb_components);
>   



More information about the ffmpeg-devel mailing list