[FFmpeg-devel] [PATCH 3/3] swscale/swscale_unscaled: fix packed16togbra16() for formats with bpc between 9-14 bits
Ramiro Polla
ramiro.polla at gmail.com
Sun May 18 23:52:09 EEST 2025
Currently, packed16togbra16() always sets the alpha value to 0xFFFF,
without taking the bit depth into consideration.
This commit restricts the alpha value to the bit depth.
---
libswscale/swscale_unscaled.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 8d71a88c23..488db43e0b 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -699,7 +699,7 @@ static void packed16togbra16(const uint8_t *src, int srcStride,
dst[0][x] = av_bswap16(av_bswap16(*src_line++) >> shift);
dst[1][x] = av_bswap16(av_bswap16(*src_line++) >> shift);
dst[2][x] = av_bswap16(av_bswap16(*src_line++) >> shift);
- dst[3][x] = 0xFFFF;
+ dst[3][x] = av_bswap16(0xFFFF >> shift);
}
} else if (src_alpha) {
for (x = 0; x < width; x++) {
@@ -729,7 +729,7 @@ static void packed16togbra16(const uint8_t *src, int srcStride,
dst[0][x] = av_bswap16(*src_line++ >> shift);
dst[1][x] = av_bswap16(*src_line++ >> shift);
dst[2][x] = av_bswap16(*src_line++ >> shift);
- dst[3][x] = 0xFFFF;
+ dst[3][x] = av_bswap16(0xFFFF >> shift);
}
} else if (src_alpha) {
for (x = 0; x < width; x++) {
@@ -759,7 +759,7 @@ static void packed16togbra16(const uint8_t *src, int srcStride,
dst[0][x] = av_bswap16(*src_line++) >> shift;
dst[1][x] = av_bswap16(*src_line++) >> shift;
dst[2][x] = av_bswap16(*src_line++) >> shift;
- dst[3][x] = 0xFFFF;
+ dst[3][x] = 0xFFFF >> shift;
}
} else if (src_alpha) {
for (x = 0; x < width; x++) {
@@ -789,7 +789,7 @@ static void packed16togbra16(const uint8_t *src, int srcStride,
dst[0][x] = *src_line++ >> shift;
dst[1][x] = *src_line++ >> shift;
dst[2][x] = *src_line++ >> shift;
- dst[3][x] = 0xFFFF;
+ dst[3][x] = 0xFFFF >> shift;
}
} else if (src_alpha) {
for (x = 0; x < width; x++) {
--
2.30.2
More information about the ffmpeg-devel
mailing list