[FFmpeg-cvslog] swscale/utils: support bayer input + scaling, and bayer input + any supported output
Michael Niedermayer
git at videolan.org
Thu Nov 13 00:06:53 CET 2014
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Wed Nov 12 23:53:08 2014 +0100| [2f6bb86f85886a7fb36e8a10e4dd8cc3a1849377] | committer: Michael Niedermayer
swscale/utils: support bayer input + scaling, and bayer input + any supported output
Fixes Ticket4053
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2f6bb86f85886a7fb36e8a10e4dd8cc3a1849377
---
libswscale/utils.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 5904ef8..ab494ed 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -1217,6 +1217,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