X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavfilter%2Fvf_extractplanes.c;h=b10cd13f8ff5c7a43680cff1362f6ce6c7aa9a1a;hb=db28e9c1d98c956328dd106885b198c8b187202f;hp=fc73e631327469635b5c19b42fa525047d0fc36e;hpb=6c06389d6e801d0e9f6686210c2e5bc2265be75c;p=ffmpeg diff --git a/libavfilter/vf_extractplanes.c b/libavfilter/vf_extractplanes.c index fc73e631327..b10cd13f8ff 100644 --- a/libavfilter/vf_extractplanes.c +++ b/libavfilter/vf_extractplanes.c @@ -23,11 +23,9 @@ #include "libavutil/opt.h" #include "libavutil/pixdesc.h" -#define FF_INTERNAL_FIELDS 1 -#include "libavfilter/framequeue.h" - #include "avfilter.h" #include "drawutils.h" +#include "filters.h" #include "internal.h" #define PLANE_R 0x01 @@ -82,76 +80,51 @@ AVFILTER_DEFINE_CLASS(extractplanes); AV_PIX_FMT_0RGB, AV_PIX_FMT_0BGR, \ AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP +#define HIGHDEPTH_FORMATS(suf) \ + AV_PIX_FMT_YA16##suf, AV_PIX_FMT_GRAY16##suf, \ + AV_PIX_FMT_YUV420P16##suf, AV_PIX_FMT_YUVA420P16##suf, \ + AV_PIX_FMT_YUV422P16##suf, AV_PIX_FMT_YUVA422P16##suf, \ + AV_PIX_FMT_YUV444P16##suf, AV_PIX_FMT_YUVA444P16##suf, \ + AV_PIX_FMT_RGB48##suf, AV_PIX_FMT_BGR48##suf, \ + AV_PIX_FMT_RGBA64##suf, AV_PIX_FMT_BGRA64##suf, \ + AV_PIX_FMT_GBRP16##suf, AV_PIX_FMT_GBRAP16##suf, \ + AV_PIX_FMT_YUV420P10##suf, \ + AV_PIX_FMT_YUV422P10##suf, \ + AV_PIX_FMT_YUV444P10##suf, \ + AV_PIX_FMT_YUV440P10##suf, \ + AV_PIX_FMT_YUVA420P10##suf, \ + AV_PIX_FMT_YUVA422P10##suf, \ + AV_PIX_FMT_YUVA444P10##suf, \ + AV_PIX_FMT_YUV420P12##suf, \ + AV_PIX_FMT_YUV422P12##suf, \ + AV_PIX_FMT_YUV444P12##suf, \ + AV_PIX_FMT_YUV440P12##suf, \ + AV_PIX_FMT_YUVA422P12##suf, \ + AV_PIX_FMT_YUVA444P12##suf, \ + AV_PIX_FMT_GBRP10##suf, AV_PIX_FMT_GBRAP10##suf, \ + AV_PIX_FMT_GBRP12##suf, AV_PIX_FMT_GBRAP12##suf, \ + AV_PIX_FMT_YUV420P9##suf, \ + AV_PIX_FMT_YUV422P9##suf, \ + AV_PIX_FMT_YUV444P9##suf, \ + AV_PIX_FMT_YUVA420P9##suf, \ + AV_PIX_FMT_YUVA422P9##suf, \ + AV_PIX_FMT_YUVA444P9##suf, \ + AV_PIX_FMT_GBRP9##suf, \ + AV_PIX_FMT_GBRP14##suf, \ + AV_PIX_FMT_YUV420P14##suf, \ + AV_PIX_FMT_YUV422P14##suf, \ + AV_PIX_FMT_YUV444P14##suf + static int query_formats(AVFilterContext *ctx) { static const enum AVPixelFormat in_pixfmts_le[] = { EIGHTBIT_FORMATS, - AV_PIX_FMT_YA16LE, AV_PIX_FMT_GRAY16LE, - AV_PIX_FMT_YUV420P16LE, AV_PIX_FMT_YUVA420P16LE, - AV_PIX_FMT_YUV422P16LE, AV_PIX_FMT_YUVA422P16LE, - AV_PIX_FMT_YUV444P16LE, AV_PIX_FMT_YUVA444P16LE, - AV_PIX_FMT_RGB48LE, AV_PIX_FMT_BGR48LE, - AV_PIX_FMT_RGBA64LE, AV_PIX_FMT_BGRA64LE, - AV_PIX_FMT_GBRP16LE, AV_PIX_FMT_GBRAP16LE, - AV_PIX_FMT_YUV420P10LE, - AV_PIX_FMT_YUV422P10LE, - AV_PIX_FMT_YUV444P10LE, - AV_PIX_FMT_YUV440P10LE, - AV_PIX_FMT_YUVA420P10LE, - AV_PIX_FMT_YUVA422P10LE, - AV_PIX_FMT_YUVA444P10LE, - AV_PIX_FMT_YUV420P12LE, - AV_PIX_FMT_YUV422P12LE, - AV_PIX_FMT_YUV444P12LE, - AV_PIX_FMT_YUV440P12LE, - AV_PIX_FMT_GBRP10LE, AV_PIX_FMT_GBRAP10LE, - AV_PIX_FMT_GBRP12LE, AV_PIX_FMT_GBRAP12LE, - AV_PIX_FMT_YUV420P9LE, - AV_PIX_FMT_YUV422P9LE, - AV_PIX_FMT_YUV444P9LE, - AV_PIX_FMT_YUVA420P9LE, - AV_PIX_FMT_YUVA422P9LE, - AV_PIX_FMT_YUVA444P9LE, - AV_PIX_FMT_GBRP9LE, - AV_PIX_FMT_GBRP14LE, - AV_PIX_FMT_YUV420P14LE, - AV_PIX_FMT_YUV422P14LE, - AV_PIX_FMT_YUV444P14LE, + HIGHDEPTH_FORMATS(LE), AV_PIX_FMT_NONE, }; static const enum AVPixelFormat in_pixfmts_be[] = { EIGHTBIT_FORMATS, - AV_PIX_FMT_YA16BE, AV_PIX_FMT_GRAY16BE, - AV_PIX_FMT_YUV420P16BE, AV_PIX_FMT_YUVA420P16BE, - AV_PIX_FMT_YUV422P16BE, AV_PIX_FMT_YUVA422P16BE, - AV_PIX_FMT_YUV444P16BE, AV_PIX_FMT_YUVA444P16BE, - AV_PIX_FMT_RGB48BE, AV_PIX_FMT_BGR48BE, - AV_PIX_FMT_RGBA64BE, AV_PIX_FMT_BGRA64BE, - AV_PIX_FMT_GBRP16BE, AV_PIX_FMT_GBRAP16BE, - AV_PIX_FMT_YUV420P10BE, - AV_PIX_FMT_YUV422P10BE, - AV_PIX_FMT_YUV444P10BE, - AV_PIX_FMT_YUV440P10BE, - AV_PIX_FMT_YUVA420P10BE, - AV_PIX_FMT_YUVA422P10BE, - AV_PIX_FMT_YUVA444P10BE, - AV_PIX_FMT_YUV420P12BE, - AV_PIX_FMT_YUV422P12BE, - AV_PIX_FMT_YUV444P12BE, - AV_PIX_FMT_YUV440P12BE, - AV_PIX_FMT_GBRP10BE, AV_PIX_FMT_GBRAP10BE, - AV_PIX_FMT_GBRP12BE, AV_PIX_FMT_GBRAP12BE, - AV_PIX_FMT_YUV420P9BE, - AV_PIX_FMT_YUV422P9BE, - AV_PIX_FMT_YUV444P9BE, - AV_PIX_FMT_YUVA420P9BE, - AV_PIX_FMT_YUVA422P9BE, - AV_PIX_FMT_YUVA444P9BE, - AV_PIX_FMT_GBRP9BE, - AV_PIX_FMT_GBRP14BE, - AV_PIX_FMT_YUV420P14BE, - AV_PIX_FMT_YUV422P14BE, - AV_PIX_FMT_YUV444P14BE, + HIGHDEPTH_FORMATS(BE), AV_PIX_FMT_NONE, }; static const enum AVPixelFormat out8_pixfmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE }; @@ -170,12 +143,12 @@ static int query_formats(AVFilterContext *ctx) AVFilterFormats *avff; int i, ret, depth = 0, be = 0; - if (!ctx->inputs[0]->in_formats || - !ctx->inputs[0]->in_formats->nb_formats) { + if (!ctx->inputs[0]->incfg.formats || + !ctx->inputs[0]->incfg.formats->nb_formats) { return AVERROR(EAGAIN); } - avff = ctx->inputs[0]->in_formats; + avff = ctx->inputs[0]->incfg.formats; desc = av_pix_fmt_desc_get(avff->formats[0]); depth = desc->comp[0].depth; be = desc->flags & AV_PIX_FMT_FLAG_BE; @@ -184,8 +157,8 @@ static int query_formats(AVFilterContext *ctx) } else { in_pixfmts = in_pixfmts_le; } - if (!ctx->inputs[0]->out_formats) - if ((ret = ff_formats_ref(ff_make_format_list(in_pixfmts), &ctx->inputs[0]->out_formats)) < 0) + if (!ctx->inputs[0]->outcfg.formats) + if ((ret = ff_formats_ref(ff_make_format_list(in_pixfmts), &ctx->inputs[0]->outcfg.formats)) < 0) return ret; for (i = 1; i < avff->nb_formats; i++) { @@ -220,7 +193,7 @@ static int query_formats(AVFilterContext *ctx) out_pixfmts = out16le_pixfmts; for (i = 0; i < ctx->nb_outputs; i++) - if ((ret = ff_formats_ref(ff_make_format_list(out_pixfmts), &ctx->outputs[i]->in_formats)) < 0) + if ((ret = ff_formats_ref(ff_make_format_list(out_pixfmts), &ctx->outputs[i]->incfg.formats)) < 0) return ret; return 0; } @@ -309,7 +282,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame) const int idx = s->map[i]; AVFrame *out; - if (outlink->status_in) + if (ff_outlink_get_status(outlink)) continue; out = ff_get_video_buffer(outlink, outlink->w, outlink->h);