summaryrefslogtreecommitdiff
path: root/libavfilter/vf_cropdetect.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-12-30 05:29:27 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-12-30 05:31:24 +0100
commit6ab4812f31c691f8d1729af84aac9e8d45bc6447 (patch)
tree1e8366fa09a6bed067c73c89ead81b073047c2a9 /libavfilter/vf_cropdetect.c
parent5c7227bbb3c134979fb05d7f06cbc15cfcd3a1d4 (diff)
avfilter/vf_cropdetect: support 9-16bit planar formats
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavfilter/vf_cropdetect.c')
-rw-r--r--libavfilter/vf_cropdetect.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/libavfilter/vf_cropdetect.c b/libavfilter/vf_cropdetect.c
index abfbd1d76c..592eb15d68 100644
--- a/libavfilter/vf_cropdetect.c
+++ b/libavfilter/vf_cropdetect.c
@@ -51,6 +51,11 @@ static int query_formats(AVFilterContext *ctx)
AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVJ444P,
AV_PIX_FMT_YUV411P, AV_PIX_FMT_GRAY8,
AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV410P,
+ AV_PIX_FMT_YUV420P9 , AV_PIX_FMT_YUV422P9 , AV_PIX_FMT_YUV444P9,
+ AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10,
+ AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV444P12,
+ AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV444P14,
+ AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16,
AV_PIX_FMT_NV12, AV_PIX_FMT_NV21,
AV_PIX_FMT_RGB24, AV_PIX_FMT_BGR24,
AV_PIX_FMT_RGBA, AV_PIX_FMT_BGRA,
@@ -65,6 +70,7 @@ static int checkline(void *ctx, const unsigned char *src, int stride, int len, i
{
int total = 0;
int div = len;
+ const uint16_t *src16 = (const uint16_t *)src;
switch (bpp) {
case 1:
@@ -79,6 +85,19 @@ static int checkline(void *ctx, const unsigned char *src, int stride, int len, i
src += stride;
}
break;
+ case 2:
+ stride >>= 1;
+ while (len >= 8) {
+ total += src16[ 0] + src16[ stride] + src16[2*stride] + src16[3*stride]
+ + src16[4*stride] + src16[5*stride] + src16[6*stride] + src16[7*stride];
+ src += 8*stride;
+ len -= 8;
+ }
+ while (--len >= 0) {
+ total += src16[0];
+ src += stride;
+ }
+ break;
case 3:
case 4:
while (len >= 4) {