[FFmpeg-cvslog] lavfi/blend: add N variable

Paul B Mahol git at videolan.org
Thu Apr 4 17:31:45 CEST 2013


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Thu Apr  4 15:29:01 2013 +0000| [b1dea2c0d8946bfebd84984df359915667eb2ff3] | committer: Paul B Mahol

lavfi/blend: add N variable

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b1dea2c0d8946bfebd84984df359915667eb2ff3
---

 doc/filters.texi       |    3 +++
 libavfilter/vf_blend.c |    6 ++++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 75e8a72..f4091fb 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -1936,6 +1936,9 @@ of @var{all_expr}. Note that related mode options will be ignored if those are s
 The expressions can use the following variables:
 
 @table @option
+ at item N
+The sequential number of the filtered frame, starting from @code{0}.
+
 @item X
 @item Y
 the coordinates of the current sample
diff --git a/libavfilter/vf_blend.c b/libavfilter/vf_blend.c
index 429956d..1a88db1 100644
--- a/libavfilter/vf_blend.c
+++ b/libavfilter/vf_blend.c
@@ -60,8 +60,8 @@ enum BlendMode {
     BLEND_NB
 };
 
-static const char *const var_names[] = {   "X",   "Y",   "W",   "H",   "SW",   "SH",   "T",     "A",        "B",   "TOP",   "BOTTOM",        NULL };
-enum                                   { VAR_X, VAR_Y, VAR_W, VAR_H, VAR_SW, VAR_SH, VAR_T,   VAR_A,      VAR_B, VAR_TOP, VAR_BOTTOM, VAR_VARS_NB };
+static const char *const var_names[] = {   "X",   "Y",   "W",   "H",   "SW",   "SH",   "T",   "N",   "A",   "B",   "TOP",   "BOTTOM",        NULL };
+enum                                   { VAR_X, VAR_Y, VAR_W, VAR_H, VAR_SW, VAR_SH, VAR_T, VAR_N, VAR_A, VAR_B, VAR_TOP, VAR_BOTTOM, VAR_VARS_NB };
 
 typedef struct FilterParams {
     enum BlendMode mode;
@@ -81,6 +81,7 @@ typedef struct {
     struct FFBufQueue queue_bottom;
     int hsub, vsub;             ///< chroma subsampling values
     int frame_requested;
+    int framenum;
     char *all_expr;
     enum BlendMode all_mode;
     double all_opacity;
@@ -387,6 +388,7 @@ static void blend_frame(AVFilterContext *ctx,
         uint8_t *bottom = bottom_buf->data[plane];
 
         param = &b->params[plane];
+        param->values[VAR_N]  = b->framenum++;
         param->values[VAR_T]  = dst_buf->pts == AV_NOPTS_VALUE ? NAN : dst_buf->pts * av_q2d(inlink->time_base);
         param->values[VAR_W]  = outw;
         param->values[VAR_H]  = outh;



More information about the ffmpeg-cvslog mailing list