[FFmpeg-devel] [PATCH] avfilter: avoid testing float == 0

Hendrik Leppkes h.leppkes at gmail.com
Thu May 9 18:32:46 CEST 2013


On Thu, May 9, 2013 at 6:21 PM, Clément Bœsch <ubitux at gmail.com> wrote:
>
> On Thu, May 09, 2013 at 04:56:39PM +0200, Michael Niedermayer wrote:
> > This fixes the hypothetical case of rounding errors causing
> > incorrect values to be used.
> >
> > Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> > ---
> >  libavfilter/avfilter.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
> > index 3f94dde..6c3cb05 100644
> > --- a/libavfilter/avfilter.c
> > +++ b/libavfilter/avfilter.c
> > @@ -994,7 +994,7 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame)
> >          dstctx->var_values[VAR_T] = pts == AV_NOPTS_VALUE ? NAN : pts * av_q2d(link->time_base);
> >          dstctx->var_values[VAR_POS] = pos == -1 ? NAN : pos;
> >
> > -        dstctx->is_disabled = !av_expr_eval(dstctx->enable, dstctx->var_values, NULL);
> > +        dstctx->is_disabled = fabs( av_expr_eval(dstctx->enable, dstctx->var_values, NULL) ) < 0.5;
>
> Why a so high value? isn't 0.001 more than enough?
>
> nit: remove spaces after ( and before )


There is even a constant supposed to be used for such comparisons, if
a float is an "inaccurate zero", FLT_EPSILON or DBL_EPSILON, depending
on the type.


More information about the ffmpeg-devel mailing list