diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index 06d92b2df5..2dffccab89 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -993,7 +993,9 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame) dstctx->var_values[VAR_N] = link->frame_count; 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; - if (!av_expr_eval(dstctx->enable, dstctx->var_values, NULL)) + + dstctx->is_disabled = !av_expr_eval(dstctx->enable, dstctx->var_values, NULL); + if (dstctx->is_disabled) filter_frame = dst->passthrough_filter_frame ? dst->passthrough_filter_frame : default_filter_frame; } diff --git a/libavfilter/avfilter.h b/libavfilter/avfilter.h index e7e979eed1..931433530b 100644 --- a/libavfilter/avfilter.h +++ b/libavfilter/avfilter.h @@ -570,6 +570,7 @@ struct AVFilterContext { char *enable_str; ///< enable expression string void *enable; ///< parsed expression (AVExpr*) double *var_values; ///< variable values for the enable expression + int is_disabled; ///< the enabled state from the last expression evaluation }; /**