[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