mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
lavf/qtpalette: Treat 1-bit video as palettized
This commit for qtpalette.c and qtpalette.h adds 1-bit video to the "palettized video" category, since if the video sample description contains a palette, the two colors in the palette can be any color, not necessarily black & white. Unfortunately, I've noticed that the qtrle (QuickTime Animation) decoder blindly assumes that 1-bit video is black & white. I don't have enough knowledge about the decoder to fix this, though. Below is a link to a sample 1-bit QuickTime Animation clip of a rotating earth that uses blueish colors, and they will be correctly rendered in QuickTime, but not in FFmpeg (which will use black & white). https://drive.google.com/open?id=0B3_pEBoLs0faUlItWm9KaGJSTEE Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
parent
c51c08e0e7
commit
bd03ee1184
@ -46,8 +46,8 @@ int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette)
|
||||
if (greyscale && codec_id == AV_CODEC_ID_CINEPAK)
|
||||
return 0;
|
||||
|
||||
/* If the depth is 2, 4, or 8 bpp, file is palettized. */
|
||||
if ((bit_depth == 2 || bit_depth == 4 || bit_depth == 8)) {
|
||||
/* 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)) {
|
||||
int color_count, color_start, color_end;
|
||||
uint32_t a, r, g, b;
|
||||
|
||||
@ -70,7 +70,9 @@ int ff_get_qtpalette(int codec_id, AVIOContext *pb, uint32_t *palette)
|
||||
* color table */
|
||||
const uint8_t *color_table;
|
||||
color_count = 1 << bit_depth;
|
||||
if (bit_depth == 2)
|
||||
if (bit_depth == 1)
|
||||
color_table = ff_qt_default_palette_2;
|
||||
else if (bit_depth == 2)
|
||||
color_table = ff_qt_default_palette_4;
|
||||
else if (bit_depth == 4)
|
||||
color_table = ff_qt_default_palette_16;
|
||||
|
@ -26,6 +26,11 @@
|
||||
#include <stdint.h>
|
||||
#include "avformat.h"
|
||||
|
||||
static const uint8_t ff_qt_default_palette_2[2 * 3] = {
|
||||
0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00
|
||||
};
|
||||
|
||||
static const uint8_t ff_qt_default_palette_4[4 * 3] = {
|
||||
0x93, 0x65, 0x5E,
|
||||
0xFF, 0xFF, 0xFF,
|
||||
|
Loading…
Reference in New Issue
Block a user