Browse Source

avfilter: add w/h parameters in timeline

Fixes Ticket #4008.
tags/n2.5
Clément Bœsch Clément Bœsch 10 years ago
parent
commit
abaf4245a1
3 changed files with 24 additions and 3 deletions
  1. +4
    -0
      doc/filters.texi
  2. +19
    -2
      libavfilter/avfilter.c
  3. +1
    -1
      libavfilter/version.h

+ 4
- 0
doc/filters.texi View File

@@ -282,6 +282,10 @@ sequential number of the input frame, starting from 0


@item pos @item pos
the position in the file of the input frame, NAN if unknown the position in the file of the input frame, NAN if unknown

@item w
@item h
width and height of the input frame if video
@end table @end table


Additionally, these filters support an @option{enable} command that can be used Additionally, these filters support an @option{enable} command that can be used


+ 19
- 2
libavfilter/avfilter.c View File

@@ -381,8 +381,23 @@ int ff_poll_frame(AVFilterLink *link)
return min; return min;
} }


static const char *const var_names[] = { "t", "n", "pos", NULL };
enum { VAR_T, VAR_N, VAR_POS, VAR_VARS_NB };
static const char *const var_names[] = {
"t",
"n",
"pos",
"w",
"h",
NULL
};

enum {
VAR_T,
VAR_N,
VAR_POS,
VAR_W,
VAR_H,
VAR_VARS_NB
};


static int set_enable_expr(AVFilterContext *ctx, const char *expr) static int set_enable_expr(AVFilterContext *ctx, const char *expr)
{ {
@@ -1071,6 +1086,8 @@ static int ff_filter_frame_framed(AVFilterLink *link, AVFrame *frame)
int64_t pos = av_frame_get_pkt_pos(out); int64_t pos = av_frame_get_pkt_pos(out);
dstctx->var_values[VAR_N] = link->frame_count; 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_T] = pts == AV_NOPTS_VALUE ? NAN : pts * av_q2d(link->time_base);
dstctx->var_values[VAR_W] = link->w;
dstctx->var_values[VAR_H] = link->h;
dstctx->var_values[VAR_POS] = pos == -1 ? NAN : pos; dstctx->var_values[VAR_POS] = pos == -1 ? NAN : pos;


dstctx->is_disabled = fabs(av_expr_eval(dstctx->enable, dstctx->var_values, NULL)) < 0.5; dstctx->is_disabled = fabs(av_expr_eval(dstctx->enable, dstctx->var_values, NULL)) < 0.5;


+ 1
- 1
libavfilter/version.h View File

@@ -31,7 +31,7 @@


#define LIBAVFILTER_VERSION_MAJOR 5 #define LIBAVFILTER_VERSION_MAJOR 5
#define LIBAVFILTER_VERSION_MINOR 1 #define LIBAVFILTER_VERSION_MINOR 1
#define LIBAVFILTER_VERSION_MICRO 102
#define LIBAVFILTER_VERSION_MICRO 103


#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
LIBAVFILTER_VERSION_MINOR, \ LIBAVFILTER_VERSION_MINOR, \


Loading…
Cancel
Save