Browse code

avfilter/vf_extractplanes: add extract support for 10bit and 12bit formats

Signed-off-by: Paul B Mahol <onemda@gmail.com>

Paul B Mahol authored on 2016/11/29 22:49:01
Showing 1 changed files
... ...
@@ -86,6 +86,19 @@ static int query_formats(AVFilterContext *ctx)
86 86
         AV_PIX_FMT_RGBA64LE, AV_PIX_FMT_BGRA64LE,
87 87
         AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
88 88
         AV_PIX_FMT_GBRP16LE, AV_PIX_FMT_GBRAP16LE,
89
+        AV_PIX_FMT_YUV420P10LE,
90
+        AV_PIX_FMT_YUV422P10LE,
91
+        AV_PIX_FMT_YUV444P10LE,
92
+        AV_PIX_FMT_YUV440P10LE,
93
+        AV_PIX_FMT_YUVA420P10LE,
94
+        AV_PIX_FMT_YUVA422P10LE,
95
+        AV_PIX_FMT_YUVA444P10LE,
96
+        AV_PIX_FMT_YUV420P12LE,
97
+        AV_PIX_FMT_YUV422P12LE,
98
+        AV_PIX_FMT_YUV444P12LE,
99
+        AV_PIX_FMT_YUV440P12LE,
100
+        AV_PIX_FMT_GBRP10LE, AV_PIX_FMT_GBRAP10LE,
101
+        AV_PIX_FMT_GBRP12LE, AV_PIX_FMT_GBRAP12LE,
89 102
         AV_PIX_FMT_NONE,
90 103
     };
91 104
     static const enum AVPixelFormat in_pixfmts_be[] = {
... ...
@@ -112,9 +125,26 @@ static int query_formats(AVFilterContext *ctx)
112 112
         AV_PIX_FMT_RGBA64BE, AV_PIX_FMT_BGRA64BE,
113 113
         AV_PIX_FMT_GBRP, AV_PIX_FMT_GBRAP,
114 114
         AV_PIX_FMT_GBRP16BE, AV_PIX_FMT_GBRAP16BE,
115
+        AV_PIX_FMT_YUV420P10BE,
116
+        AV_PIX_FMT_YUV422P10BE,
117
+        AV_PIX_FMT_YUV444P10BE,
118
+        AV_PIX_FMT_YUV440P10BE,
119
+        AV_PIX_FMT_YUVA420P10BE,
120
+        AV_PIX_FMT_YUVA422P10BE,
121
+        AV_PIX_FMT_YUVA444P10BE,
122
+        AV_PIX_FMT_YUV420P12BE,
123
+        AV_PIX_FMT_YUV422P12BE,
124
+        AV_PIX_FMT_YUV444P12BE,
125
+        AV_PIX_FMT_YUV440P12BE,
126
+        AV_PIX_FMT_GBRP10BE, AV_PIX_FMT_GBRAP10BE,
127
+        AV_PIX_FMT_GBRP12BE, AV_PIX_FMT_GBRAP12BE,
115 128
         AV_PIX_FMT_NONE,
116 129
     };
117 130
     static const enum AVPixelFormat out8_pixfmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE };
131
+    static const enum AVPixelFormat out10le_pixfmts[] = { AV_PIX_FMT_GRAY10LE, AV_PIX_FMT_NONE };
132
+    static const enum AVPixelFormat out10be_pixfmts[] = { AV_PIX_FMT_GRAY10BE, AV_PIX_FMT_NONE };
133
+    static const enum AVPixelFormat out12le_pixfmts[] = { AV_PIX_FMT_GRAY12LE, AV_PIX_FMT_NONE };
134
+    static const enum AVPixelFormat out12be_pixfmts[] = { AV_PIX_FMT_GRAY12BE, AV_PIX_FMT_NONE };
118 135
     static const enum AVPixelFormat out16le_pixfmts[] = { AV_PIX_FMT_GRAY16LE, AV_PIX_FMT_NONE };
119 136
     static const enum AVPixelFormat out16be_pixfmts[] = { AV_PIX_FMT_GRAY16BE, AV_PIX_FMT_NONE };
120 137
     const enum AVPixelFormat *out_pixfmts, *in_pixfmts;
... ...
@@ -150,6 +180,14 @@ static int query_formats(AVFilterContext *ctx)
150 150
 
151 151
     if (depth == 8)
152 152
         out_pixfmts = out8_pixfmts;
153
+    else if (!be && depth == 10)
154
+        out_pixfmts = out10le_pixfmts;
155
+    else if (be && depth == 10)
156
+        out_pixfmts = out10be_pixfmts;
157
+    else if (!be && depth == 12)
158
+        out_pixfmts = out12le_pixfmts;
159
+    else if (be && depth == 12)
160
+        out_pixfmts = out12be_pixfmts;
153 161
     else if (be)
154 162
         out_pixfmts = out16be_pixfmts;
155 163
     else