]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_colormatrix.c
ass subtitles: Fix valgrind warnings.
[ffmpeg] / libavfilter / vf_colormatrix.c
index fa20b6a545519368af37b3cad51adfda62427235..45bff8f6e4ba838e96f4f3d0d6daef08ba22d281 100644 (file)
@@ -31,6 +31,8 @@
 #include <strings.h>
 #include <float.h>
 #include "avfilter.h"
+#include "formats.h"
+#include "video.h"
 #include "libavutil/pixdesc.h"
 #include "libavutil/avstring.h"
 
@@ -59,6 +61,7 @@ typedef struct {
     char src[256];
     char dst[256];
     int hsub, vsub;
+    AVFilterBufferRef *outpicref;
 } ColorMatrixContext;
 
 #define ma m[0][0]
@@ -143,7 +146,7 @@ static int get_color_mode_index(const char *name)
     return -1;
 }
 
-static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
+static av_cold int init(AVFilterContext *ctx, const char *args)
 {
     ColorMatrixContext *color = ctx->priv;
 
@@ -311,7 +314,7 @@ static int config_input(AVFilterLink *inlink)
     color->hsub = pix_desc->log2_chroma_w;
     color->vsub = pix_desc->log2_chroma_h;
 
-    av_log(ctx, AV_LOG_INFO, "%s -> %s\n", color->src, color->dst);
+    av_log(ctx, AV_LOG_VERBOSE, "%s -> %s\n", color->src, color->dst);
 
     return 0;
 }
@@ -325,7 +328,7 @@ static int query_formats(AVFilterContext *ctx)
         PIX_FMT_NONE
     };
 
-    avfilter_set_common_pixel_formats(ctx, avfilter_make_format_list(pix_fmts));
+    ff_set_common_formats(ctx, ff_make_format_list(pix_fmts));
 
     return 0;
 }
@@ -333,24 +336,26 @@ static int query_formats(AVFilterContext *ctx)
 static AVFilterBufferRef *get_video_buffer(AVFilterLink *inlink, int perms, int w, int h)
 {
     AVFilterBufferRef *picref =
-        avfilter_get_video_buffer(inlink->dst->outputs[0], perms, w, h);
+        ff_get_video_buffer(inlink->dst->outputs[0], perms, w, h);
     return picref;
 }
 
-static void start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
+static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref)
 {
+    AVFilterContext *ctx = link->dst;
+    ColorMatrixContext *color = ctx->priv;
     AVFilterBufferRef *outpicref = avfilter_ref_buffer(picref, ~0);
 
-    link->dst->outputs[0]->out_buf = outpicref;
+    color->outpicref = outpicref;
 
-    avfilter_start_frame(link->dst->outputs[0], outpicref);
+    return ff_start_frame(link->dst->outputs[0], outpicref);
 }
 
-static void end_frame(AVFilterLink *link)
+static int end_frame(AVFilterLink *link)
 {
     AVFilterContext *ctx = link->dst;
     ColorMatrixContext *color = ctx->priv;
-    AVFilterBufferRef *out = link->dst->outputs[0]->out_buf;
+    AVFilterBufferRef *out = color->outpicref;
 
     if (link->cur_buf->format == PIX_FMT_YUV422P)
         process_frame_yuv422p(color, out, link->cur_buf);
@@ -359,12 +364,11 @@ static void end_frame(AVFilterLink *link)
     else
         process_frame_uyvy422(color, out, link->cur_buf);
 
-    avfilter_draw_slice(ctx->outputs[0], 0, link->dst->outputs[0]->h, 1);
-    avfilter_end_frame(ctx->outputs[0]);
-    avfilter_unref_buffer(link->cur_buf);
+    ff_draw_slice(ctx->outputs[0], 0, link->dst->outputs[0]->h, 1);
+    return ff_end_frame(ctx->outputs[0]);
 }
 
-static void null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { }
+static int null_draw_slice(AVFilterLink *link, int y, int h, int slice_dir) { return 0; }
 
 AVFilter avfilter_vf_colormatrix = {
     .name          = "colormatrix",