summaryrefslogtreecommitdiff
path: root/libavfilter/vf_extractplanes.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2016-11-29 14:49:01 +0100
committerPaul B Mahol <onemda@gmail.com>2016-11-29 14:50:28 +0100
commit46752d6b12c85a1bace21d3a4e0f54164fbc92a6 (patch)
tree9199f63a85a4e4a8cb40d64fcb8416a6bb1d8aad /libavfilter/vf_extractplanes.c
parent57ef0f0f17a0b71946bfc9304902d4a531ea42a8 (diff)
downloadffmpeg-46752d6b12c85a1bace21d3a4e0f54164fbc92a6.tar.gz
avfilter/vf_extractplanes: add extract support for 10bit and 12bit formats
Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavfilter/vf_extractplanes.c')
-rw-r--r--libavfilter/vf_extractplanes.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/libavfilter/vf_extractplanes.c b/libavfilter/vf_extractplanes.c
index a23f838ac6..f1a0443dd1 100644
--- a/libavfilter/vf_extractplanes.c
+++ b/libavfilter/vf_extractplanes.c
@@ -86,6 +86,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 +125,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 +180,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