summaryrefslogtreecommitdiff
path: root/libswscale/swscale_unscaled.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <ceffmpeg@gmail.com>2017-08-23 14:19:14 +0200
committerCarl Eugen Hoyos <ceffmpeg@gmail.com>2017-08-24 12:50:06 +0200
commitcb1a3eecac2d3395bf1e26289643082b4305f86a (patch)
treeed5ea71a62f92a25cbddc4ef0a7c76ed333715c1 /libswscale/swscale_unscaled.c
parent351e28f9a799d9bbbb33dd10c964dca7219fa13b (diff)
lsws/rgb2rgb: Add unscaled 48bit to 64bit rgb conversion.
Based on b4befca2 and 6b7849e6 by Paul B Mahol. Fixes ticket #6608.
Diffstat (limited to 'libswscale/swscale_unscaled.c')
-rw-r--r--libswscale/swscale_unscaled.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 3b1b3667ce..ef36aec500 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -1292,6 +1292,23 @@ static rgbConvFn findRgbConvFn(SwsContext *c)
|| CONV_IS(BGR48LE, RGB48BE)
|| CONV_IS(RGB48BE, BGR48LE)
|| CONV_IS(BGR48BE, RGB48LE)) conv = rgb48tobgr48_bswap;
+ } else if (isRGB48(srcFormat) && isRGBA64(dstFormat)) {
+ if (CONV_IS(RGB48LE, BGRA64LE)
+ || CONV_IS(BGR48LE, RGBA64LE)
+ || CONV_IS(RGB48BE, BGRA64BE)
+ || CONV_IS(BGR48BE, RGBA64BE)) conv = rgb48tobgr64_nobswap;
+ else if (CONV_IS(RGB48LE, BGRA64BE)
+ || CONV_IS(BGR48LE, RGBA64BE)
+ || CONV_IS(RGB48BE, BGRA64LE)
+ || CONV_IS(BGR48BE, RGBA64LE)) conv = rgb48tobgr64_bswap;
+ if (CONV_IS(RGB48LE, RGBA64LE)
+ || CONV_IS(BGR48LE, BGRA64LE)
+ || CONV_IS(RGB48BE, RGBA64BE)
+ || CONV_IS(BGR48BE, BGRA64BE)) conv = rgb48to64_nobswap;
+ else if (CONV_IS(RGB48LE, RGBA64BE)
+ || CONV_IS(BGR48LE, BGRA64BE)
+ || CONV_IS(RGB48BE, RGBA64LE)
+ || CONV_IS(BGR48BE, BGRA64LE)) conv = rgb48to64_bswap;
} else if (isRGBA64(srcFormat) && isRGB48(dstFormat)) {
if (CONV_IS(RGBA64LE, BGR48LE)
|| CONV_IS(BGRA64LE, RGB48LE)