diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-12-15 17:50:09 +0400 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-12-22 19:14:23 +0400 |
commit | bde1e8bf069a31c86a6a2687a3df88b100302477 (patch) | |
tree | 4f27aae7534b8f7e2cf79e39bcb496c284bfd5a6 | |
parent | 5e402a53191c8afad528ccd7d66f3c37b0cdb0af (diff) |
lavfi/overlay: make use of av_opt_set_from_string()
Simplify.
-rw-r--r-- | doc/filters.texi | 21 | ||||
-rw-r--r-- | libavfilter/version.h | 2 | ||||
-rw-r--r-- | libavfilter/vf_overlay.c | 29 |
3 files changed, 15 insertions, 37 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index 42f4a7a0f0..e5e24e9ee9 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -3176,12 +3176,19 @@ Overlay one video on top of another. It takes two inputs and one output, the first input is the "main" video on which the second input is overlayed. -It accepts the parameters: @var{x}:@var{y}[:@var{options}]. +This filter accepts a list of @var{key}=@var{value} pairs as argument, +separated by ":". If the key of the first options is omitted, the +arguments are interpreted according to the syntax @var{x}:@var{y}. + +A description of the accepted options follows. -@var{x} is the x coordinate of the overlayed video on the main video, -@var{y} is the y coordinate. @var{x} and @var{y} are expressions containing -the following parameters: +@table @option +@item x, y +Set the expression for the x and y coordinates of the overlayed video +on the main video. Default value is 0. +The @var{x} and @var{y} expressions can contain the following +parameters: @table @option @item main_w, main_h main input width and height @@ -3196,12 +3203,6 @@ overlay input width and height same as @var{overlay_w} and @var{overlay_h} @end table -@var{options} is an optional list of @var{key}=@var{value} pairs, -separated by ":". - -The description of the accepted options follows. - -@table @option @item rgb If set to 1, force the filter to accept inputs in the RGB color space. Default value is 0. diff --git a/libavfilter/version.h b/libavfilter/version.h index d8061de811..08e28f1511 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -30,7 +30,7 @@ #define LIBAVFILTER_VERSION_MAJOR 3 #define LIBAVFILTER_VERSION_MINOR 29 -#define LIBAVFILTER_VERSION_MICRO 100 +#define LIBAVFILTER_VERSION_MICRO 101 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ LIBAVFILTER_VERSION_MINOR, \ diff --git a/libavfilter/vf_overlay.c b/libavfilter/vf_overlay.c index 4041901f89..b71ef41392 100644 --- a/libavfilter/vf_overlay.c +++ b/libavfilter/vf_overlay.c @@ -110,42 +110,19 @@ AVFILTER_DEFINE_CLASS(overlay); static av_cold int init(AVFilterContext *ctx, const char *args) { OverlayContext *over = ctx->priv; - char *args1 = av_strdup(args); - char *expr, *bufptr = NULL; - int ret = 0; + static const char *shorthand[] = { "x", "y", NULL }; over->class = &overlay_class; av_opt_set_defaults(over); - if (expr = av_strtok(args1, ":", &bufptr)) { - av_free(over->x_expr); - if (!(over->x_expr = av_strdup(expr))) { - ret = AVERROR(ENOMEM); - goto end; - } - } - if (expr = av_strtok(NULL, ":", &bufptr)) { - av_free(over->y_expr); - if (!(over->y_expr = av_strdup(expr))) { - ret = AVERROR(ENOMEM); - goto end; - } - } - - if (bufptr && (ret = av_set_options_string(over, bufptr, "=", ":")) < 0) - goto end; - -end: - av_free(args1); - return ret; + return av_opt_set_from_string(over, args, shorthand, "=", ":"); } static av_cold void uninit(AVFilterContext *ctx) { OverlayContext *over = ctx->priv; - av_freep(&over->x_expr); - av_freep(&over->y_expr); + av_opt_free(over); avfilter_unref_bufferp(&over->overpicref); ff_bufqueue_discard_all(&over->queue_main); |