|
|
|
@ -492,6 +492,22 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], |
|
|
|
|
return srcSliceH; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int planarRgbToplanarRgbWrapper(SwsContext *c, const uint8_t *src[], |
|
|
|
|
int srcStride[], int srcSliceY, int srcSliceH, |
|
|
|
|
uint8_t *dst[], int dstStride[]) |
|
|
|
|
{ |
|
|
|
|
copyPlane(src[0], srcStride[0], srcSliceY, srcSliceH, c->srcW, |
|
|
|
|
dst[0], dstStride[0]); |
|
|
|
|
copyPlane(src[1], srcStride[1], srcSliceY, srcSliceH, c->srcW, |
|
|
|
|
dst[1], dstStride[1]); |
|
|
|
|
copyPlane(src[2], srcStride[2], srcSliceY, srcSliceH, c->srcW, |
|
|
|
|
dst[2], dstStride[2]); |
|
|
|
|
if (dst[3]) |
|
|
|
|
fillPlane(dst[3], dstStride[3], c->srcW, srcSliceH, srcSliceY, 255); |
|
|
|
|
|
|
|
|
|
return srcSliceH; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static void packedtogbr24p(const uint8_t *src, int srcStride, |
|
|
|
|
uint8_t *dst[], int dstStride[], int srcSliceH, |
|
|
|
|
int alpha_first, int inc_size, int width) |
|
|
|
@ -1039,6 +1055,10 @@ void ff_get_unscaled_swscale(SwsContext *c) |
|
|
|
|
&& (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)))) |
|
|
|
|
c->swScale= rgbToRgbWrapper; |
|
|
|
|
|
|
|
|
|
if ((srcFormat == AV_PIX_FMT_GBRP && dstFormat == AV_PIX_FMT_GBRAP) || |
|
|
|
|
(srcFormat == AV_PIX_FMT_GBRAP && dstFormat == AV_PIX_FMT_GBRP)) |
|
|
|
|
c->swScale = planarRgbToplanarRgbWrapper; |
|
|
|
|
|
|
|
|
|
#define isByteRGB(f) ( \ |
|
|
|
|
f == AV_PIX_FMT_RGB32 || \
|
|
|
|
|
f == AV_PIX_FMT_RGB32_1 || \
|
|
|
|
@ -1066,6 +1086,7 @@ void ff_get_unscaled_swscale(SwsContext *c) |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP12) || |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP14) || |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP16) || |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRAP16) || |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB444) || |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGB48) || |
|
|
|
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_RGBA64) || |
|
|
|
|