[FFmpeg-cvslog] lavfi/overlay: make use of av_opt_set_from_string()
Stefano Sabatini
git at videolan.org
Sat Dec 22 16:18:08 CET 2012
ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Sat Dec 15 14:50:09 2012 +0100| [bde1e8bf069a31c86a6a2687a3df88b100302477] | committer: Stefano Sabatini
lavfi/overlay: make use of av_opt_set_from_string()
Simplify.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=bde1e8bf069a31c86a6a2687a3df88b100302477
---
doc/filters.texi | 21 +++++++++++----------
libavfilter/version.h | 2 +-
libavfilter/vf_overlay.c | 29 +++--------------------------
3 files changed, 15 insertions(+), 37 deletions(-)
diff --git a/doc/filters.texi b/doc/filters.texi
index 42f4a7a..e5e24e9 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.
- at var{x} is the x coordinate of the overlayed video on the main video,
- at var{y} is the y coordinate. @var{x} and @var{y} are expressions containing
-the following parameters:
+ at table @option
+ at 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
- at var{options} is an optional list of @var{key}=@var{value} pairs,
-separated by ":".
-
-The description of the accepted options follows.
-
- at 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 d8061de..08e28f1 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 4041901..b71ef41 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);
More information about the ffmpeg-cvslog
mailing list