From 3dfc5f551f4c5960afda6f8806ac5779eb2a230b Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 9 May 2013 16:41:56 +0200 Subject: avfilter: avoid testing float == 0 This fixes the hypothetical case of rounding errors causing incorrect values to be used. We do not use *_EPSILON, because non trivial expressions can contain errors larger than that making a zero equality test with *_EPSILON unreliable. Signed-off-by: Michael Niedermayer --- libavfilter/avfilter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libavfilter') diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 83d942c076..b577c9af0e 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -1062,7 +1062,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; if (dstctx->is_disabled && (dstctx->filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC)) filter_frame = default_filter_frame; -- cgit v1.2.3