[FFmpeg-cvslog] Allow remaining 32bit RGB packed pix_fmts in kerndeint filter.

Carl Eugen Hoyos git at videolan.org
Sat Jan 5 14:41:26 CET 2013


ffmpeg | branch: master | Carl Eugen Hoyos <cehoyos at ag.or.at> | Sat Jan  5 14:40:06 2013 +0100| [6a9af925654ce91d100443c9f69b1d825c72a16f] | committer: Carl Eugen Hoyos

Allow remaining 32bit RGB packed pix_fmts in kerndeint filter.

Reviewed-by: Stefano Sabatini

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6a9af925654ce91d100443c9f69b1d825c72a16f
---

 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 c97df45..6cd9bc2 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 3ec514d..b03f977 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



More information about the ffmpeg-cvslog mailing list