From d63e9943615fe4a7dece768e5c91616a7f63283a Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Thu, 12 Dec 2013 13:42:10 +0100 Subject: [PATCH] avformat/mov: Do not compute a grayscale palette for cinepak in mov. This was never done for avi files, the decoder always produced output no matter if a palette was computed or not. Since a non-standard palette was needed, this simplifies the code. See issue 1067 and ticket #165. Signed-off-by: Michael Niedermayer --- libavformat/mov.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 7ca4f922d5..abdea9b077 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -1314,6 +1314,9 @@ static void mov_parse_stsd_video(MOVContext *c, AVIOContext *pb, /* figure out the palette situation */ color_depth = st->codec->bits_per_coded_sample & 0x1F; color_greyscale = st->codec->bits_per_coded_sample & 0x20; + /* Do not create a greyscale palette for cinepak */ + if (color_greyscale && st->codec->codec_id == AV_CODEC_ID_CINEPAK) + return; /* if the depth is 2, 4, or 8 bpp, file is palettized */ if ((color_depth == 2) || (color_depth == 4) || (color_depth == 8)) { @@ -1329,9 +1332,6 @@ static void mov_parse_stsd_video(MOVContext *c, AVIOContext *pb, color_index = 255; color_dec = 256 / (color_count - 1); for (j = 0; j < color_count; j++) { - if (st->codec->codec_id == AV_CODEC_ID_CINEPAK){ - r = g = b = color_count - 1 - color_index; - } else r = g = b = color_index; sc->palette[j] = (0xFFU << 24) | (r << 16) | (g << 8) | (b); color_index -= color_dec;