#include <strings.h>
#include <float.h>
#include "avfilter.h"
+#include "formats.h"
+#include "video.h"
#include "libavutil/pixdesc.h"
#include "libavutil/avstring.h"
char src[256];
char dst[256];
int hsub, vsub;
+ AVFilterBufferRef *outpicref;
} ColorMatrixContext;
#define ma m[0][0]
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;
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;
}
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;
}
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);
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",