diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index 9b919f8aa49856612bec7824eb4aac5e812cebb4..78090f116fc880941ffba1be67cd45c4bec6c2b4 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -932,7 +932,15 @@ void ff_get_unscaled_swscale(SwsContext *c) && (!needsDither || (c->flags&(SWS_FAST_BILINEAR|SWS_POINT)))) c->swScale= rgbToRgbWrapper; - if (isPlanarRGB(srcFormat) && isPackedRGB(dstFormat)) +#define isByteRGB(f) ( \ + f == AV_PIX_FMT_RGB32 || \ + f == AV_PIX_FMT_RGB32_1 || \ + f == AV_PIX_FMT_RGB24 || \ + f == AV_PIX_FMT_BGR32 || \ + f == AV_PIX_FMT_BGR32_1 || \ + f == AV_PIX_FMT_BGR24) + + if (srcFormat == AV_PIX_FMT_GBRP && isPlanar(srcFormat) && isByteRGB(dstFormat)) c->swScale = planarRgbToRgbWrapper; /* bswap 16 bits per pixel/component packed formats */