[FFmpeg-cvslog] swscale/utils: support bayer input + scaling, and bayer input + any supported output

Michael Niedermayer git at videolan.org
Thu Nov 20 02:04:20 CET 2014


ffmpeg | branch: release/2.4 | Michael Niedermayer <michaelni at gmx.at> | Wed Nov 12 23:53:08 2014 +0100| [222236317bf4554bc49e7750ea35556bf902940e] | committer: Carl Eugen Hoyos

swscale/utils: support bayer input + scaling, and bayer input + any supported output

Fixes Ticket4053

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit 2f6bb86f85886a7fb36e8a10e4dd8cc3a1849377)

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

 libswscale/utils.c |   25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/libswscale/utils.c b/libswscale/utils.c
index 01e056a..0c8a83a 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -1228,6 +1228,31 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
         }
     }
 
+    if (isBayer(srcFormat)) {
+        if (!unscaled ||
+            (dstFormat != AV_PIX_FMT_RGB24 && dstFormat != AV_PIX_FMT_YUV420P)) {
+            enum AVPixelFormat tmpFormat = AV_PIX_FMT_RGB24;
+
+            ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride,
+                                srcW, srcH, tmpFormat, 64);
+            if (ret < 0)
+                return ret;
+
+            c->cascaded_context[0] = sws_getContext(srcW, srcH, srcFormat,
+                                                    srcW, srcH, tmpFormat,
+                                                    flags, srcFilter, NULL, c->param);
+            if (!c->cascaded_context[0])
+                return -1;
+
+            c->cascaded_context[1] = sws_getContext(srcW, srcH, tmpFormat,
+                                                    dstW, dstH, dstFormat,
+                                                    flags, NULL, dstFilter, c->param);
+            if (!c->cascaded_context[1])
+                return -1;
+            return 0;
+        }
+    }
+
 #define USE_MMAP (HAVE_MMAP && HAVE_MPROTECT && defined MAP_ANONYMOUS)
 
     /* precalculate horizontal scaler filter coefficients */



More information about the ffmpeg-cvslog mailing list