[FFmpeg-cvslog] avfilter: Update scale to dictionary based options

Michael Niedermayer git at videolan.org
Fri Apr 12 02:40:33 CEST 2013


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Fri Apr 12 02:34:40 2013 +0200| [9ab796127a38e047bc76eb0a825ba6c90fb945da] | committer: Michael Niedermayer

avfilter: Update scale to dictionary based options

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavfilter/avfilter.c |    1 -
 libavfilter/vf_scale.c |   27 ++++++++-------------------
 2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c
index 3c19744..eca267e 100644
--- a/libavfilter/avfilter.c
+++ b/libavfilter/avfilter.c
@@ -690,7 +690,6 @@ static const char *const filters_left_to_update[] = {
     "atempo",
     "buffer",
     "pan",
-    "scale",
 };
 
 static int filter_use_deprecated_init(const char *name)
diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c
index 5ca2078..176e66d 100644
--- a/libavfilter/vf_scale.c
+++ b/libavfilter/vf_scale.c
@@ -95,21 +95,7 @@ typedef struct {
 static av_cold int init(AVFilterContext *ctx, const char *args)
 {
     ScaleContext *scale = ctx->priv;
-#if 1
-    static const char *shorthand[] = { "w", "h", NULL };
     int ret;
-    const char *args0 = args;
-
-    if (args && (scale->size_str = av_get_token(&args, ":"))) {
-        if (av_parse_video_size(&scale->w, &scale->h, scale->size_str) < 0) {
-            av_freep(&scale->size_str);
-            args = args0;
-        } else if (*args)
-            args++;
-    }
-
-    if ((ret = av_opt_set_from_string(scale, args, shorthand, "=", ":")) < 0)
-        return ret;
 
     if (scale->size_str && (scale->w_expr || scale->h_expr)) {
         av_log(ctx, AV_LOG_ERROR,
@@ -117,6 +103,9 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
             return AVERROR(EINVAL);
     }
 
+    if (scale->w_expr && !scale->h_expr)
+        FFSWAP(char *, scale->w_expr, scale->size_str);
+
     if (scale->size_str) {
         char buf[32];
         if ((ret = av_parse_video_size(&scale->w, &scale->h, scale->size_str)) < 0) {
@@ -138,7 +127,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
            scale->w_expr, scale->h_expr, (char *)av_x_if_null(scale->flags_str, ""), scale->interlaced);
 
     scale->flags = SWS_BILINEAR;
-#endif
+
     if (scale->flags_str) {
         const AVClass *class = sws_get_class();
         const AVOption    *o = av_opt_find(&class, "sws_flags", NULL, 0,
@@ -399,10 +388,10 @@ static int filter_frame(AVFilterLink *link, AVFrame *in)
 #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM
 
 static const AVOption scale_options[] = {
-    { "w",     "Output video width",          OFFSET(w_expr),    AV_OPT_TYPE_STRING, { .str = "iw" },       .flags = FLAGS },
-    { "width", "Output video width",          OFFSET(w_expr),    AV_OPT_TYPE_STRING, { .str = "iw" },       .flags = FLAGS },
-    { "h",     "Output video height",         OFFSET(h_expr),    AV_OPT_TYPE_STRING, { .str = "ih" },       .flags = FLAGS },
-    { "height","Output video height",         OFFSET(h_expr),    AV_OPT_TYPE_STRING, { .str = "ih" },       .flags = FLAGS },
+    { "w",     "Output video width",          OFFSET(w_expr),    AV_OPT_TYPE_STRING,        .flags = FLAGS },
+    { "width", "Output video width",          OFFSET(w_expr),    AV_OPT_TYPE_STRING,        .flags = FLAGS },
+    { "h",     "Output video height",         OFFSET(h_expr),    AV_OPT_TYPE_STRING,        .flags = FLAGS },
+    { "height","Output video height",         OFFSET(h_expr),    AV_OPT_TYPE_STRING,        .flags = FLAGS },
     { "flags", "Flags to pass to libswscale", OFFSET(flags_str), AV_OPT_TYPE_STRING, { .str = "bilinear" }, .flags = FLAGS },
     { "interl", "set interlacing", OFFSET(interlaced), AV_OPT_TYPE_INT, {.i64 = 0 }, -1, 1, FLAGS },
     { "size",   "set video size",          OFFSET(size_str), AV_OPT_TYPE_STRING, {.str = NULL}, 0, FLAGS },



More information about the ffmpeg-cvslog mailing list