avfilter/avf_showvolume: make it possible to use current channel number in color...
authorPaul B Mahol <onemda@gmail.com>
Fri, 3 Jul 2015 18:30:27 +0000 (18:30 +0000)
committerPaul B Mahol <onemda@gmail.com>
Fri, 3 Jul 2015 18:43:21 +0000 (18:43 +0000)
Signed-off-by: Paul B Mahol <onemda@gmail.com>
doc/filters.texi
libavfilter/avf_showvolume.c

index ed33621..7cd0635 100644 (file)
@@ -12158,6 +12158,9 @@ The expression can use the following variables:
 @table @option
 @item VOLUME
 Current max volume of channel in dB.
 @table @option
 @item VOLUME
 Current max volume of channel in dB.
+
+@item CHANNEL
+Current channel number, starting from 0.
 @end table
 
 @item t
 @end table
 
 @item t
index 72e18d5..19dcc84 100644 (file)
@@ -59,8 +59,8 @@ static const AVOption showvolume_options[] = {
 
 AVFILTER_DEFINE_CLASS(showvolume);
 
 
 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)
 {
 
 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;
 
         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++) {
         color = av_expr_eval(s->c_expr, values, NULL);
 
         for (j = 0; j < s->h; j++) {