diff options
author | Marton Balint <cus@passwd.hu> | 2018-04-19 20:11:02 +0200 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2018-04-30 21:50:12 +0200 |
commit | c60a824ee87ae3b15ed1cb92b780bec9b642b019 (patch) | |
tree | 23990f27d37d199f2906c95cc8653c7235a8ea13 /libavformat/qtpalette.c | |
parent | da55304cafea712f1f78955f931c33f83c687477 (diff) | |
download | ffmpeg-c60a824ee87ae3b15ed1cb92b780bec9b642b019.tar.gz |
avformat/qtpalette: parse color table according to the QuickTime file format specs
The specs says that the the first color component in the color array is
not alpha, but simply 0.
Fixes 0 alpha of fate-suite/cvid/catfight-cvid-pal8-partial.mov
Signed-off-by: Marton Balint <cus@passwd.hu>
Diffstat (limited to 'libavformat/qtpalette.c')
-rw-r--r-- | libavformat/qtpalette.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libavformat/qtpalette.c b/libavformat/qtpalette.c index 666c6b7351..6833f0cea9 100644 --- a/libavformat/qtpalette.c +++ b/libavformat/qtpalette.c @@ -49,7 +49,7 @@ int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette) /* If the depth is 1, 2, 4, or 8 bpp, file is palettized. */ if ((bit_depth == 1 || bit_depth == 2 || bit_depth == 4 || bit_depth == 8)) { uint32_t color_count, color_start, color_end; - uint32_t a, r, g, b; + uint32_t r, g, b; /* Ignore the greyscale bit for 1-bit video and sample * descriptions containing a color table. */ @@ -94,17 +94,17 @@ int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette) color_end = avio_rb16(pb); if ((color_start <= 255) && (color_end <= 255)) { for (i = color_start; i <= color_end; i++) { - /* each A, R, G, or B component is 16 bits; - * only use the top 8 bits */ - a = avio_r8(pb); - avio_r8(pb); + /* Each color is made of four unsigned 16 bit integers. The + * first integer is 0, the remaining integers are the red, + * the green and the blue values. We only use the top 8 bit. */ + avio_skip(pb, 2); r = avio_r8(pb); avio_r8(pb); g = avio_r8(pb); avio_r8(pb); b = avio_r8(pb); avio_r8(pb); - palette[i] = (a << 24 ) | (r << 16) | (g << 8) | (b); + palette[i] = (0xFFU << 24) | (r << 16) | (g << 8) | (b); } } } |