mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
swscale: add endian conversion for RGB555 and RGB444 pixel formats
Add a macro to shorten the if condition.
This commit is contained in:
parent
be1bafc303
commit
b4dc68803b
@ -688,6 +688,12 @@ static int planarCopyWrapper(SwsContext *c, const uint8_t* src[], int srcStride[
|
|||||||
return srcSliceH;
|
return srcSliceH;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define IS_DIFFERENT_ENDIANESS(src_fmt, dst_fmt, pix_fmt) \
|
||||||
|
((src_fmt == pix_fmt ## BE && dst_fmt == pix_fmt ## LE) || \
|
||||||
|
(src_fmt == pix_fmt ## LE && dst_fmt == pix_fmt ## BE))
|
||||||
|
|
||||||
|
|
||||||
void ff_get_unscaled_swscale(SwsContext *c)
|
void ff_get_unscaled_swscale(SwsContext *c)
|
||||||
{
|
{
|
||||||
const enum PixelFormat srcFormat = c->srcFormat;
|
const enum PixelFormat srcFormat = c->srcFormat;
|
||||||
@ -737,16 +743,15 @@ void ff_get_unscaled_swscale(SwsContext *c)
|
|||||||
c->swScale= rgbToRgbWrapper;
|
c->swScale= rgbToRgbWrapper;
|
||||||
|
|
||||||
/* bswap 16 bits per pixel/component packed formats */
|
/* bswap 16 bits per pixel/component packed formats */
|
||||||
if ((srcFormat == PIX_FMT_RGB48LE && dstFormat == PIX_FMT_RGB48BE) ||
|
if (IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_BGR444) ||
|
||||||
(srcFormat == PIX_FMT_RGB48BE && dstFormat == PIX_FMT_RGB48LE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_BGR48) ||
|
||||||
(srcFormat == PIX_FMT_BGR48LE && dstFormat == PIX_FMT_BGR48BE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_BGR555) ||
|
||||||
(srcFormat == PIX_FMT_BGR48BE && dstFormat == PIX_FMT_BGR48LE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_BGR565) ||
|
||||||
(srcFormat == PIX_FMT_GRAY16LE && dstFormat == PIX_FMT_GRAY16BE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_GRAY16) ||
|
||||||
(srcFormat == PIX_FMT_GRAY16BE && dstFormat == PIX_FMT_GRAY16LE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_RGB444) ||
|
||||||
(srcFormat == PIX_FMT_RGB565LE && dstFormat == PIX_FMT_RGB565BE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_RGB48) ||
|
||||||
(srcFormat == PIX_FMT_RGB565BE && dstFormat == PIX_FMT_RGB565LE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_RGB555) ||
|
||||||
(srcFormat == PIX_FMT_BGR565BE && dstFormat == PIX_FMT_BGR565LE) ||
|
IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, PIX_FMT_RGB565))
|
||||||
(srcFormat == PIX_FMT_BGR565LE && dstFormat == PIX_FMT_BGR565BE))
|
|
||||||
c->swScale = packed_16bpc_bswap;
|
c->swScale = packed_16bpc_bswap;
|
||||||
|
|
||||||
if ((usePal(srcFormat) && (
|
if ((usePal(srcFormat) && (
|
||||||
|
Loading…
x
Reference in New Issue
Block a user