From e658b1036c0b9e0eedf41eb3b4eae569952ec575 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Fri, 3 Jul 2015 18:30:27 +0000 Subject: [PATCH] avfilter/avf_showvolume: make it possible to use current channel number in color expression Signed-off-by: Paul B Mahol --- doc/filters.texi | 3 +++ libavfilter/avf_showvolume.c | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index ed3362183a..7cd0635411 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -12158,6 +12158,9 @@ The expression can use the following variables: @table @option @item VOLUME Current max volume of channel in dB. + +@item CHANNEL +Current channel number, starting from 0. @end table @item t diff --git a/libavfilter/avf_showvolume.c b/libavfilter/avf_showvolume.c index 72e18d5d09..19dcc84fc8 100644 --- a/libavfilter/avf_showvolume.c +++ b/libavfilter/avf_showvolume.c @@ -59,8 +59,8 @@ static const AVOption showvolume_options[] = { AVFILTER_DEFINE_CLASS(showvolume); -static const char *const var_names[] = { "VOLUME", NULL }; -enum { VAR_VOLUME, VAR_VARS_NB }; +static const char *const var_names[] = { "VOLUME", "CHANNEL", NULL }; +enum { VAR_VOLUME, VAR_CHANNEL, VAR_VARS_NB }; static av_cold int init(AVFilterContext *ctx) { @@ -201,6 +201,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *insamples) max = av_clipf(max, 0, 1); values[VAR_VOLUME] = 20.0 * log(max) / M_LN10; + values[VAR_CHANNEL] = c; color = av_expr_eval(s->c_expr, values, NULL); for (j = 0; j < s->h; j++) {