|
|
|
@ -2327,12 +2327,12 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d |
|
|
|
|
if (unscaled && !usesHFilter && !usesVFilter && (srcRange == dstRange || isBGR(dstFormat) || isRGB(dstFormat))) |
|
|
|
|
{ |
|
|
|
|
/* yv12_to_nv12 */ |
|
|
|
|
if (srcFormat == PIX_FMT_YUV420P && (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21)) |
|
|
|
|
if ((srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) && (dstFormat == PIX_FMT_NV12 || dstFormat == PIX_FMT_NV21)) |
|
|
|
|
{ |
|
|
|
|
c->swScale= PlanarToNV12Wrapper; |
|
|
|
|
} |
|
|
|
|
/* yuv2bgr */ |
|
|
|
|
if ((srcFormat==PIX_FMT_YUV420P || srcFormat==PIX_FMT_YUV422P) && (isBGR(dstFormat) || isRGB(dstFormat)) |
|
|
|
|
if ((srcFormat==PIX_FMT_YUV420P || srcFormat==PIX_FMT_YUV422P || srcFormat==PIX_FMT_YUVA420P) && (isBGR(dstFormat) || isRGB(dstFormat)) |
|
|
|
|
&& !(flags & SWS_ACCURATE_RND) && !(dstH&1)) |
|
|
|
|
{ |
|
|
|
|
c->swScale= sws_yuv2rgb_get_func_ptr(c); |
|
|
|
@ -2383,7 +2383,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d |
|
|
|
|
/* LQ converters if -sws 0 or -sws 4*/ |
|
|
|
|
if (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)){ |
|
|
|
|
/* yv12_to_yuy2 */ |
|
|
|
|
if (srcFormat == PIX_FMT_YUV420P) |
|
|
|
|
if (srcFormat == PIX_FMT_YUV420P || srcFormat == PIX_FMT_YUVA420P) |
|
|
|
|
{ |
|
|
|
|
if (dstFormat == PIX_FMT_YUYV422) |
|
|
|
|
c->swScale= PlanarToYuy2Wrapper; |
|
|
|
@ -2406,6 +2406,7 @@ SwsContext *sws_getContext(int srcW, int srcH, enum PixelFormat srcFormat, int d |
|
|
|
|
|
|
|
|
|
/* simple copy */ |
|
|
|
|
if ( srcFormat == dstFormat |
|
|
|
|
|| (srcFormat == PIX_FMT_YUVA420P && dstFormat == PIX_FMT_YUV420P) |
|
|
|
|
|| (isPlanarYUV(srcFormat) && isGray(dstFormat)) |
|
|
|
|
|| (isPlanarYUV(dstFormat) && isGray(srcFormat))) |
|
|
|
|
{ |
|
|
|
|