avfilter/af_afftdn: add alias for sample_noise end
[ffmpeg.git] / libavfilter / vf_vidstabtransform.c
index 3ce4769..d1ec139 100644 (file)
@@ -30,7 +30,7 @@
 
 #include "vidstabutils.h"
 
-typedef struct {
+typedef struct TransformContext {
     const AVClass *class;
 
     VSTransformData td;
@@ -96,9 +96,9 @@ static const AVOption vidstabtransform_options[] = {
                    AV_OPT_TYPE_CONST,  {.i64 = VS_BiCubic },0, 0,  FLAGS, "interpol"},
 
     {"tripod",    "enable virtual tripod mode (same as relative=0:smoothing=0)", OFFSET(tripod),
-                   AV_OPT_TYPE_INT,    {.i64 = 0},        0, 1,    FLAGS},
+                   AV_OPT_TYPE_BOOL,   {.i64 = 0},        0, 1,    FLAGS},
     {"debug",     "enable debug mode and writer global motions information to file", OFFSET(debug),
-                   AV_OPT_TYPE_INT,    {.i64 = 0},        0, 1,    FLAGS},
+                   AV_OPT_TYPE_BOOL,   {.i64 = 0},        0, 1,    FLAGS},
     {NULL}
 };
 
@@ -107,7 +107,7 @@ AVFILTER_DEFINE_CLASS(vidstabtransform);
 static av_cold int init(AVFilterContext *ctx)
 {
     TransformContext *tc = ctx->priv;
-    vs_set_mem_and_log_functions();
+    ff_vs_init();
     tc->class = &vidstabtransform_class;
     av_log(ctx, AV_LOG_VERBOSE, "vidstabtransform filter: init %s\n", LIBVIDSTAB_VERSION);
     return 0;
@@ -132,8 +132,10 @@ static int query_formats(AVFilterContext *ctx)
         AV_PIX_FMT_NONE
     };
 
-    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
-    return 0;
+    AVFilterFormats *fmts_list = ff_make_format_list(pix_fmts);
+    if (!fmts_list)
+        return AVERROR(ENOMEM);
+    return ff_set_common_formats(ctx, fmts_list);
 }
 
 
@@ -144,6 +146,7 @@ static int config_input(AVFilterLink *inlink)
     FILE *f;
 
     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(inlink->format);
+    int is_planar = desc->flags & AV_PIX_FMT_FLAG_PLANAR;
 
     VSTransformData *td = &(tc->td);
 
@@ -151,15 +154,15 @@ static int config_input(AVFilterLink *inlink)
     VSFrameInfo fi_dest;
 
     if (!vsFrameInfoInit(&fi_src, inlink->w, inlink->h,
-                         av_2_vs_pixel_format(ctx, inlink->format)) ||
+                         ff_av2vs_pixfmt(ctx, inlink->format)) ||
         !vsFrameInfoInit(&fi_dest, inlink->w, inlink->h,
-                         av_2_vs_pixel_format(ctx, inlink->format))) {
+                         ff_av2vs_pixfmt(ctx, inlink->format))) {
         av_log(ctx, AV_LOG_ERROR, "unknown pixel format: %i (%s)",
                inlink->format, desc->name);
         return AVERROR(EINVAL);
     }
 
-    if (fi_src.bytesPerPixel != av_get_bits_per_pixel(desc)/8 ||
+    if ((!is_planar && fi_src.bytesPerPixel != av_get_bits_per_pixel(desc)/8) ||
         fi_src.log2ChromaW != desc->log2_chroma_w ||
         fi_src.log2ChromaH != desc->log2_chroma_h) {
         av_log(ctx, AV_LOG_ERROR, "pixel-format error: bpp %i<>%i  ",
@@ -208,8 +211,9 @@ static int config_input(AVFilterLink *inlink)
 
     f = fopen(tc->input, "r");
     if (!f) {
+        int ret = AVERROR(errno);
         av_log(ctx, AV_LOG_ERROR, "cannot open input file %s\n", tc->input);
-        return AVERROR(errno);
+        return ret;
     } else {
         VSManyLocalMotions mlms;
         if (vsReadLocalMotionsFile(f, &mlms) == VS_OK) {