@@ -900,6 +900,99 @@ YUV2PACKEDWRAPPER(yuv2, 422, uyvy422, AV_PIX_FMT_UYVY422) | |||||
AV_WL16(pos, val); \ | AV_WL16(pos, val); \ | ||||
} | } | ||||
static av_always_inline void | |||||
yuv2ya16_X_c_template(SwsContext *c, const int16_t *lumFilter, | |||||
const int32_t **lumSrc, int lumFilterSize, | |||||
const int16_t *chrFilter, const int32_t **unused_chrUSrc, | |||||
const int32_t **unused_chrVSrc, int unused_chrFilterSize, | |||||
const int32_t **alpSrc, uint16_t *dest, int dstW, | |||||
int y, enum AVPixelFormat target, int unused_hasAlpha, int unused_eightbytes) | |||||
{ | |||||
int hasAlpha = !!alpSrc; | |||||
int i; | |||||
for (i = 0; i < dstW; i++) { | |||||
int j; | |||||
int Y = 1 << 18; | |||||
int64_t A = 0xffff<<14; | |||||
for (j = 0; j < lumFilterSize; j++) | |||||
Y += lumSrc[j][i] * lumFilter[j]; | |||||
Y >>= 15; | |||||
Y = av_clip_uint16(Y); | |||||
if (hasAlpha) { | |||||
for (j = 0; j < lumFilterSize; j++) | |||||
A += alpSrc[j][i] * lumFilter[j]; | |||||
A >>= 15; | |||||
A = av_clip_uint16(A); | |||||
} | |||||
output_pixel(&dest[2 * i ], Y); | |||||
output_pixel(&dest[2 * i + 1], hasAlpha ? A : 65535); | |||||
} | |||||
} | |||||
static av_always_inline void | |||||
yuv2ya16_2_c_template(SwsContext *c, const int32_t *buf[2], | |||||
const int32_t *unused_ubuf[2], const int32_t *unused_vbuf[2], | |||||
const int32_t *abuf[2], uint16_t *dest, int dstW, | |||||
int yalpha, int unused_uvalpha, int y, | |||||
enum AVPixelFormat target, int unused_hasAlpha, int unused_eightbytes) | |||||
{ | |||||
int hasAlpha = abuf && abuf[0] && abuf[1]; | |||||
const int32_t *buf0 = buf[0], *buf1 = buf[1], | |||||
*abuf0 = hasAlpha ? abuf[0] : NULL, | |||||
*abuf1 = hasAlpha ? abuf[1] : NULL; | |||||
int yalpha1 = 4096 - yalpha; | |||||
int i; | |||||
av_assert2(yalpha <= 4096U); | |||||
for (i = 0; i < dstW; i++) { | |||||
int Y = (buf0[i] * yalpha1 + buf1[i] * yalpha) >> 15; | |||||
int A; | |||||
Y = av_clip_uint16(Y); | |||||
if (hasAlpha) { | |||||
A = (abuf0[i] * yalpha1 + abuf1[i] * yalpha) >> 15; | |||||
A = av_clip_uint16(A); | |||||
} | |||||
output_pixel(&dest[2 * i ], Y); | |||||
output_pixel(&dest[2 * i + 1], hasAlpha ? A : 65535); | |||||
} | |||||
} | |||||
static av_always_inline void | |||||
yuv2ya16_1_c_template(SwsContext *c, const int32_t *buf0, | |||||
const int32_t *unused_ubuf[2], const int32_t *unused_vbuf[2], | |||||
const int32_t *abuf0, uint16_t *dest, int dstW, | |||||
int unused_uvalpha, int y, enum AVPixelFormat target, int unused_hasAlpha, int unused_eightbytes) | |||||
{ | |||||
int hasAlpha = !!abuf0; | |||||
int i; | |||||
for (i = 0; i < dstW; i++) { | |||||
int Y = buf0[i] >> 3;/* 19 - 16 */ | |||||
int A; | |||||
Y = av_clip_uint16(Y); | |||||
if (hasAlpha) { | |||||
A = abuf0[i] >> 3; | |||||
if (A & 0x100) | |||||
A = av_clip_uint16(A); | |||||
} | |||||
output_pixel(&dest[2 * i ], Y); | |||||
output_pixel(&dest[2 * i + 1], hasAlpha ? A : 65535); | |||||
} | |||||
} | |||||
static av_always_inline void | static av_always_inline void | ||||
yuv2rgba64_X_c_template(SwsContext *c, const int16_t *lumFilter, | yuv2rgba64_X_c_template(SwsContext *c, const int16_t *lumFilter, | ||||
const int32_t **lumSrc, int lumFilterSize, | const int32_t **lumSrc, int lumFilterSize, | ||||
@@ -1405,6 +1498,8 @@ YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64be, AV_PIX_FMT_BGRA64BE, 1, 1) | |||||
YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64le, AV_PIX_FMT_BGRA64LE, 1, 1) | YUV2PACKED16WRAPPER(yuv2, rgba64, bgra64le, AV_PIX_FMT_BGRA64LE, 1, 1) | ||||
YUV2PACKED16WRAPPER(yuv2, rgba64, bgrx64be, AV_PIX_FMT_BGRA64BE, 0, 1) | YUV2PACKED16WRAPPER(yuv2, rgba64, bgrx64be, AV_PIX_FMT_BGRA64BE, 0, 1) | ||||
YUV2PACKED16WRAPPER(yuv2, rgba64, bgrx64le, AV_PIX_FMT_BGRA64LE, 0, 1) | YUV2PACKED16WRAPPER(yuv2, rgba64, bgrx64le, AV_PIX_FMT_BGRA64LE, 0, 1) | ||||
YUV2PACKED16WRAPPER(yuv2, ya16, ya16be, AV_PIX_FMT_YA16BE, 1, 0) | |||||
YUV2PACKED16WRAPPER(yuv2, ya16, ya16le, AV_PIX_FMT_YA16LE, 1, 0) | |||||
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgb48be_full, AV_PIX_FMT_RGB48BE, 0, 0) | YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgb48be_full, AV_PIX_FMT_RGB48BE, 0, 0) | ||||
YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgb48le_full, AV_PIX_FMT_RGB48LE, 0, 0) | YUV2PACKED16WRAPPER(yuv2, rgba64_full, rgb48le_full, AV_PIX_FMT_RGB48LE, 0, 0) | ||||
@@ -2835,6 +2930,16 @@ av_cold void ff_sws_init_output_funcs(SwsContext *c, | |||||
*yuv2packed2 = yuv2ya8_2_c; | *yuv2packed2 = yuv2ya8_2_c; | ||||
*yuv2packedX = yuv2ya8_X_c; | *yuv2packedX = yuv2ya8_X_c; | ||||
break; | break; | ||||
case AV_PIX_FMT_YA16LE: | |||||
*yuv2packed1 = yuv2ya16le_1_c; | |||||
*yuv2packed2 = yuv2ya16le_2_c; | |||||
*yuv2packedX = yuv2ya16le_X_c; | |||||
break; | |||||
case AV_PIX_FMT_YA16BE: | |||||
*yuv2packed1 = yuv2ya16be_1_c; | |||||
*yuv2packed2 = yuv2ya16be_2_c; | |||||
*yuv2packedX = yuv2ya16be_X_c; | |||||
break; | |||||
case AV_PIX_FMT_AYUV64LE: | case AV_PIX_FMT_AYUV64LE: | ||||
*yuv2packedX = yuv2ayuv64le_X_c; | *yuv2packedX = yuv2ayuv64le_X_c; | ||||
break; | break; | ||||
@@ -191,8 +191,8 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = { | |||||
[AV_PIX_FMT_BGR444LE] = { 1, 1 }, | [AV_PIX_FMT_BGR444LE] = { 1, 1 }, | ||||
[AV_PIX_FMT_BGR444BE] = { 1, 1 }, | [AV_PIX_FMT_BGR444BE] = { 1, 1 }, | ||||
[AV_PIX_FMT_YA8] = { 1, 1 }, | [AV_PIX_FMT_YA8] = { 1, 1 }, | ||||
[AV_PIX_FMT_YA16BE] = { 1, 0 }, | |||||
[AV_PIX_FMT_YA16LE] = { 1, 0 }, | |||||
[AV_PIX_FMT_YA16BE] = { 1, 1 }, | |||||
[AV_PIX_FMT_YA16LE] = { 1, 1 }, | |||||
[AV_PIX_FMT_BGR48BE] = { 1, 1 }, | [AV_PIX_FMT_BGR48BE] = { 1, 1 }, | ||||
[AV_PIX_FMT_BGR48LE] = { 1, 1 }, | [AV_PIX_FMT_BGR48LE] = { 1, 1 }, | ||||
[AV_PIX_FMT_BGRA64BE] = { 1, 1, 1 }, | [AV_PIX_FMT_BGRA64BE] = { 1, 1, 1 }, | ||||
@@ -0,0 +1 @@ | |||||
pixdesc-ya16be c5bf539478020302a30f36c5059b7695 |
@@ -0,0 +1 @@ | |||||
pixdesc-ya16le d238b5905b3ab79f7f00d5ea03ee4b87 |
@@ -76,6 +76,8 @@ rgba64le b91e1d77f799eb92241a2d2d28437b15 | |||||
uyvy422 3bcf3c80047592f2211fae3260b1b65d | uyvy422 3bcf3c80047592f2211fae3260b1b65d | ||||
xyz12be a1ef56bf746d71f59669c28e48fc8450 | xyz12be a1ef56bf746d71f59669c28e48fc8450 | ||||
xyz12le 831ff03c1ba4ef19374686f16a064d8c | xyz12le 831ff03c1ba4ef19374686f16a064d8c | ||||
ya16be 2f2c27f1854ac00c73d13861dcab2705 | |||||
ya16le 2c1fbd127c9f0435adc0e9b2ea3f486b | |||||
ya8 dbb99fbcdc204aaa1a7397ff561f1a67 | ya8 dbb99fbcdc204aaa1a7397ff561f1a67 | ||||
yuv410p 5d4d992a7728431aa4e0700f87fb7fd8 | yuv410p 5d4d992a7728431aa4e0700f87fb7fd8 | ||||
yuv411p 7e1300e89f5bc07939e2c4a6acbdf267 | yuv411p 7e1300e89f5bc07939e2c4a6acbdf267 | ||||
@@ -73,6 +73,8 @@ rgba64be 89910046972ab3c68e2a348302cc8ca9 | |||||
rgba64le fea8ebfc869b52adf353778f29eac7a7 | rgba64le fea8ebfc869b52adf353778f29eac7a7 | ||||
xyz12be cb4571f9aaa7b59f999ef327276104b7 | xyz12be cb4571f9aaa7b59f999ef327276104b7 | ||||
xyz12le cd6aae8d26b18bdb4b9d068586276d91 | xyz12le cd6aae8d26b18bdb4b9d068586276d91 | ||||
ya16be 029a3b7c523de988e3161484d41ea15c | |||||
ya16le 32929a08d11982aec66ea1e665cfba3a | |||||
ya8 51a8dd297e35d40b06d3ebe8f4717895 | ya8 51a8dd297e35d40b06d3ebe8f4717895 | ||||
yuv410p 3bb6c7b64f2c46bc5e8b77198ce4ea58 | yuv410p 3bb6c7b64f2c46bc5e8b77198ce4ea58 | ||||
yuv411p 693e4afe96998e6dd91734037d75d887 | yuv411p 693e4afe96998e6dd91734037d75d887 | ||||
@@ -76,6 +76,8 @@ rgba64le dfdba4de4a7cac9abf08852666c341d3 | |||||
uyvy422 1c49e44ab3f060e85fc4a3a9464f045e | uyvy422 1c49e44ab3f060e85fc4a3a9464f045e | ||||
xyz12be d2fa69ec91d3ed862f2dac3f8e7a3437 | xyz12be d2fa69ec91d3ed862f2dac3f8e7a3437 | ||||
xyz12le 02bccd5e0b6824779a1f848b0ea3e3b5 | xyz12le 02bccd5e0b6824779a1f848b0ea3e3b5 | ||||
ya16be c0ce74d2a3da641ea634a3898dda7455 | |||||
ya16le 9b098d425e5bc27fa8a8ac8b176d592d | |||||
ya8 28cea4f98ed452bd3da9c752e5e3399c | ya8 28cea4f98ed452bd3da9c752e5e3399c | ||||
yuv410p a85920d6bd26f51306e2ecbe71d1c554 | yuv410p a85920d6bd26f51306e2ecbe71d1c554 | ||||
yuv411p 9106e283d5dbcfba01c611886d58871a | yuv411p 9106e283d5dbcfba01c611886d58871a | ||||
@@ -67,6 +67,8 @@ rgba64le b34e6e30621ae579519a2d91a96a0acf | |||||
uyvy422 75de70e31c435dde878002d3f22b238a | uyvy422 75de70e31c435dde878002d3f22b238a | ||||
xyz12be 15f5cda71de5fef9cec5e75e3833b6bc | xyz12be 15f5cda71de5fef9cec5e75e3833b6bc | ||||
xyz12le 7be6c8781f38c21a6b8f602f62ca31e6 | xyz12le 7be6c8781f38c21a6b8f602f62ca31e6 | ||||
ya16be 205d6a21890c1f057c9c20fbbba590e2 | |||||
ya16le f35616fdb5d3fbf767a4f11118cf8ad1 | |||||
ya8 055ac5ab5ff8533dd319edc17a398af1 | ya8 055ac5ab5ff8533dd319edc17a398af1 | ||||
yuv411p e4a040e0e786c4dae07d9d3f90a54905 | yuv411p e4a040e0e786c4dae07d9d3f90a54905 | ||||
yuv422p 16ce67249c6ce7ef57a433646ad6dfc1 | yuv422p 16ce67249c6ce7ef57a433646ad6dfc1 | ||||
@@ -73,6 +73,8 @@ rgba64be c910444019f4cfbf4d995227af55da8d | |||||
rgba64le 0c810d8b3a6bca10321788e1cb145340 | rgba64le 0c810d8b3a6bca10321788e1cb145340 | ||||
xyz12be 25f90259ff8a226befdaec3dfe82996e | xyz12be 25f90259ff8a226befdaec3dfe82996e | ||||
xyz12le 926c0791d59aaff61b2778e8ada3316d | xyz12le 926c0791d59aaff61b2778e8ada3316d | ||||
ya16be 632b2e6e8e20c3edcfe99356fa7fca9e | |||||
ya16le e2ff5a2fb969c70dcc862937f9224873 | |||||
ya8 4ad5920716de3d2fbbc49f95adb60345 | ya8 4ad5920716de3d2fbbc49f95adb60345 | ||||
yuv410p c49fd0c55c41185b1580aac77211992b | yuv410p c49fd0c55c41185b1580aac77211992b | ||||
yuv411p c416371077dce13d31bf1dc706111ae7 | yuv411p c416371077dce13d31bf1dc706111ae7 | ||||
@@ -75,6 +75,8 @@ rgba64le a8a2daae04374a27219bc1c890204007 | |||||
uyvy422 d6ee3ca43356d08c392382b24b22cda5 | uyvy422 d6ee3ca43356d08c392382b24b22cda5 | ||||
xyz12be 7c7d54c55f136cbbc50b18029f3be0b3 | xyz12be 7c7d54c55f136cbbc50b18029f3be0b3 | ||||
xyz12le 090ba6b1170baf2b1358b43b971d33b0 | xyz12le 090ba6b1170baf2b1358b43b971d33b0 | ||||
ya16be bf2cf1e89c9fdb5bc10425db567ba2da | |||||
ya16le 4e9c9097fae615b8a5f4c3b237f752f0 | |||||
ya8 a38d6e288f582f1a04310232ed764afc | ya8 a38d6e288f582f1a04310232ed764afc | ||||
yuv410p dea1ab8843465adf5b8240b2d98fd85b | yuv410p dea1ab8843465adf5b8240b2d98fd85b | ||||
yuv411p 8bf73777a5ff43c126be274245aceff1 | yuv411p 8bf73777a5ff43c126be274245aceff1 | ||||
@@ -76,6 +76,8 @@ rgba64le b91e1d77f799eb92241a2d2d28437b15 | |||||
uyvy422 3bcf3c80047592f2211fae3260b1b65d | uyvy422 3bcf3c80047592f2211fae3260b1b65d | ||||
xyz12be a1ef56bf746d71f59669c28e48fc8450 | xyz12be a1ef56bf746d71f59669c28e48fc8450 | ||||
xyz12le 831ff03c1ba4ef19374686f16a064d8c | xyz12le 831ff03c1ba4ef19374686f16a064d8c | ||||
ya16be 2f2c27f1854ac00c73d13861dcab2705 | |||||
ya16le 2c1fbd127c9f0435adc0e9b2ea3f486b | |||||
ya8 dbb99fbcdc204aaa1a7397ff561f1a67 | ya8 dbb99fbcdc204aaa1a7397ff561f1a67 | ||||
yuv410p 5d4d992a7728431aa4e0700f87fb7fd8 | yuv410p 5d4d992a7728431aa4e0700f87fb7fd8 | ||||
yuv411p 7e1300e89f5bc07939e2c4a6acbdf267 | yuv411p 7e1300e89f5bc07939e2c4a6acbdf267 | ||||
@@ -27,6 +27,7 @@ rgb0 78d500c8361ab6423a4826a00268c908 | |||||
rgb24 17f9e2e0c609009acaf2175c42d4a2a5 | rgb24 17f9e2e0c609009acaf2175c42d4a2a5 | ||||
rgba b157c90191463d34fb3ce77b36c96386 | rgba b157c90191463d34fb3ce77b36c96386 | ||||
xyz12le 85abf80b77a9236a76ba0b00fcbdea2d | xyz12le 85abf80b77a9236a76ba0b00fcbdea2d | ||||
ya16le 17cbe58356d56ff0f0f00280a31e6ca6 | |||||
ya8 5fc0f471207ddf7aa01b07027d56b672 | ya8 5fc0f471207ddf7aa01b07027d56b672 | ||||
yuv410p cb871dcc1e84a7ef1d21f9237b88cf6e | yuv410p cb871dcc1e84a7ef1d21f9237b88cf6e | ||||
yuv411p aec2c1740de9a62db0d41f4dda9121b0 | yuv411p aec2c1740de9a62db0d41f4dda9121b0 | ||||
@@ -76,6 +76,8 @@ rgba64le 783d2779adfafe3548bdb671ec0de69e | |||||
uyvy422 aeb4ba4f9f003ae21f6d18089198244f | uyvy422 aeb4ba4f9f003ae21f6d18089198244f | ||||
xyz12be c7ba8345998c0141ddc079cdd29b1a40 | xyz12be c7ba8345998c0141ddc079cdd29b1a40 | ||||
xyz12le 95f5d3a0de834cc495c9032a14987cde | xyz12le 95f5d3a0de834cc495c9032a14987cde | ||||
ya16be 372195dc947eee1bcb6f733a3544272e | |||||
ya16le 3923551514cfa588cf528e6f48e8cb9a | |||||
ya8 0a9db5bb4b009de9197eede5e9d19e16 | ya8 0a9db5bb4b009de9197eede5e9d19e16 | ||||
yuv410p e8f49b5fb9335b62c074f7f8bb0234fc | yuv410p e8f49b5fb9335b62c074f7f8bb0234fc | ||||
yuv411p 5af32557c93beb482e26e7af693104c6 | yuv411p 5af32557c93beb482e26e7af693104c6 | ||||
@@ -72,6 +72,8 @@ rgba64be a60041217f4c0cd796d19d3940a12a41 | |||||
rgba64le ad47197774858858ae7b0c177dffa459 | rgba64le ad47197774858858ae7b0c177dffa459 | ||||
xyz12be 68e5cba640f6e4ef72dff950e88b5342 | xyz12be 68e5cba640f6e4ef72dff950e88b5342 | ||||
xyz12le 8b6b6a6db4d7561e80db88ccaecce7a9 | xyz12le 8b6b6a6db4d7561e80db88ccaecce7a9 | ||||
ya16be 41b7ad48693e3ce8b4d3220016ef6b15 | |||||
ya16le 8ea70315667011a6ed50b6750f42b142 | |||||
ya8 d4b7a62f80681fa44c977ff3a64f4ce4 | ya8 d4b7a62f80681fa44c977ff3a64f4ce4 | ||||
yuv410p 4c0143429edd30aa01493447c90132ea | yuv410p 4c0143429edd30aa01493447c90132ea | ||||
yuv420p 2fa5b2201c75034206cc20e2c6134aed | yuv420p 2fa5b2201c75034206cc20e2c6134aed | ||||
@@ -76,6 +76,8 @@ rgba64le 48f45b10503b7dd140329c3dd0d54c98 | |||||
uyvy422 3a237e8376264e0cfa78f8a3fdadec8a | uyvy422 3a237e8376264e0cfa78f8a3fdadec8a | ||||
xyz12be 810644e008deb231850d779aaa27cc7e | xyz12be 810644e008deb231850d779aaa27cc7e | ||||
xyz12le 829701db461b43533cf9241e0743bc61 | xyz12le 829701db461b43533cf9241e0743bc61 | ||||
ya16be 01fa2780505ce1bd187ae7f9dcc5fcc3 | |||||
ya16le 492f528782acf22769b0b633187be212 | |||||
ya8 4299c6ca3b470a7d8a420e26eb485b1d | ya8 4299c6ca3b470a7d8a420e26eb485b1d | ||||
yuv410p c7adfe96c8e043a6cb9290c39bf8063c | yuv410p c7adfe96c8e043a6cb9290c39bf8063c | ||||
yuv411p 3fce29db403a25f81be39e01aaf6ff3a | yuv411p 3fce29db403a25f81be39e01aaf6ff3a | ||||