[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