]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_extractplanes.c
lavfi/framepool: re-indent after previous commit
[ffmpeg] / libavfilter / vf_extractplanes.c
index a23f838ac6dbf92e38900842cdf19c9c7df7cb76..65bba33d90c694ef05153955e2274fce0fcef65a 100644 (file)
 #include "libavutil/imgutils.h"
 #include "libavutil/opt.h"
 #include "libavutil/pixdesc.h"
+
+#define FF_INTERNAL_FIELDS 1
+#include "libavfilter/framequeue.h"
+
 #include "avfilter.h"
 #include "drawutils.h"
 #include "internal.h"
@@ -86,6 +90,19 @@ static int query_formats(AVFilterContext *ctx)
         AV_PIX_FMT_RGBA64LE, AV_PIX_FMT_BGRA64LE,
         AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
         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_NONE,
     };
     static const enum AVPixelFormat in_pixfmts_be[] = {
@@ -112,9 +129,26 @@ static int query_formats(AVFilterContext *ctx)
         AV_PIX_FMT_RGBA64BE, AV_PIX_FMT_BGRA64BE,
         AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
         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_NONE,
     };
     static const enum AVPixelFormat out8_pixfmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE };
+    static const enum AVPixelFormat out10le_pixfmts[] = { AV_PIX_FMT_GRAY10LE, AV_PIX_FMT_NONE };
+    static const enum AVPixelFormat out10be_pixfmts[] = { AV_PIX_FMT_GRAY10BE, AV_PIX_FMT_NONE };
+    static const enum AVPixelFormat out12le_pixfmts[] = { AV_PIX_FMT_GRAY12LE, AV_PIX_FMT_NONE };
+    static const enum AVPixelFormat out12be_pixfmts[] = { AV_PIX_FMT_GRAY12BE, AV_PIX_FMT_NONE };
     static const enum AVPixelFormat out16le_pixfmts[] = { AV_PIX_FMT_GRAY16LE, AV_PIX_FMT_NONE };
     static const enum AVPixelFormat out16be_pixfmts[] = { AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_NONE };
     const enum AVPixelFormat *out_pixfmts, *in_pixfmts;
@@ -150,6 +184,14 @@ static int query_formats(AVFilterContext *ctx)
 
     if (depth == 8)
         out_pixfmts = out8_pixfmts;
+    else if (!be && depth == 10)
+        out_pixfmts = out10le_pixfmts;
+    else if (be && depth == 10)
+        out_pixfmts = out10be_pixfmts;
+    else if (!be && depth == 12)
+        out_pixfmts = out12le_pixfmts;
+    else if (be && depth == 12)
+        out_pixfmts = out12be_pixfmts;
     else if (be)
         out_pixfmts = out16be_pixfmts;
     else
@@ -245,7 +287,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
         const int idx = s->map[i];
         AVFrame *out;
 
-        if (outlink->status)
+        if (outlink->status_in)
             continue;
 
         out = ff_get_video_buffer(outlink, outlink->w, outlink->h);