From 6a9af925654ce91d100443c9f69b1d825c72a16f Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Sat, 5 Jan 2013 14:40:06 +0100 Subject: [PATCH] Allow remaining 32bit RGB packed pix_fmts in kerndeint filter. Reviewed-by: Stefano Sabatini --- libavfilter/vf_kerndeint.c | 10 +++++++--- tests/ref/lavfi/kerndeint | 7 +++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/libavfilter/vf_kerndeint.c b/libavfilter/vf_kerndeint.c index c97df45953..6cd9bc2ff3 100644 --- a/libavfilter/vf_kerndeint.c +++ b/libavfilter/vf_kerndeint.c @@ -82,7 +82,10 @@ static int query_formats(AVFilterContext *ctx) static const enum PixelFormat pix_fmts[] = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUYV422, - AV_PIX_FMT_ARGB, + AV_PIX_FMT_ARGB, AV_PIX_FMT_0RGB, + AV_PIX_FMT_ABGR, AV_PIX_FMT_0BGR, + AV_PIX_FMT_RGBA, AV_PIX_FMT_RGB0, + AV_PIX_FMT_BGRA, AV_PIX_FMT_BGR0, AV_PIX_FMT_NONE }; @@ -200,10 +203,11 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic) (abs((int)prvp[x] - (int)srcp[x]) > thresh) || (abs((int)prvpp[x] - (int)srcpp[x]) > thresh) || (abs((int)prvpn[x] - (int)srcpn[x]) > thresh)) { + int is_packed_rgb = av_pix_fmt_desc_get(inlink->format)->flags & PIX_FMT_RGB; if (map) { g = x & ~3; - if (inlink->format == AV_PIX_FMT_ARGB) { + if (is_packed_rgb) { AV_WB32(dstp + g, 0xffffffff); x = g + 3; } else if (inlink->format == AV_PIX_FMT_YUYV422) { @@ -214,7 +218,7 @@ static int filter_frame(AVFilterLink *inlink, AVFilterBufferRef *inpic) dstp[x] = plane == 0 ? 235 : 128; } } else { - if (inlink->format == AV_PIX_FMT_ARGB) { + if (is_packed_rgb) { hi = 255; lo = 0; } else if (inlink->format == AV_PIX_FMT_YUYV422) { diff --git a/tests/ref/lavfi/kerndeint b/tests/ref/lavfi/kerndeint index 3ec514d8a8..b03f977624 100644 --- a/tests/ref/lavfi/kerndeint +++ b/tests/ref/lavfi/kerndeint @@ -1,3 +1,10 @@ +0bgr 58fb0bda60562ce17e75f1c3459d0504 +0rgb d29f6a7b63ade359ec81f5856633ec06 +abgr 71071045b8ec66a6d0a38bb3fed1ca51 argb 93ba0daa1e945ad1a6f8c0c1cd2e1858 +bgr0 364b8bcd1c7a384902077bc7190c5ea3 +bgra 81ac8315a4c66e363bc6fa3e99d9cd2b +rgb0 ae0c2afbc266345c1372276755595105 +rgba 42a6cc9b815ca0ee69c29db3616ce25e yuv420p a935cce07c5287b92c6d5220361866ed yuyv422 f549c98059ba9ce50e28204256d13b5d