swscale/utils: support bayer input + scaling, and bayer input + any supported output
Fixes Ticket4053 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
173d51c982
commit
2f6bb86f85
@ -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 */
|
||||
|
Loading…
Reference in New Issue
Block a user