summaryrefslogtreecommitdiffstats
path: root/libmpdemux/demux_mov.c
diff options
context:
space:
mode:
authormosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-09-02 14:48:49 +0000
committermosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-09-02 14:48:49 +0000
commit2445e00ca28bf8b2b0d5afd1c852976ccfa7cfef (patch)
treefb61690c68e5ace7f8dd541c7dda9c39d4df4c1c /libmpdemux/demux_mov.c
parentc320d92ce41bdb2b758e605f53b50ea4e7c87e38 (diff)
downloadmpv-2445e00ca28bf8b2b0d5afd1c852976ccfa7cfef.tar.bz2
mpv-2445e00ca28bf8b2b0d5afd1c852976ccfa7cfef.tar.xz
Support for grayscale paletted files. Patch by Dima K <dimakar@yahoo.com>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10797 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpdemux/demux_mov.c')
-rw-r--r--libmpdemux/demux_mov.c30
1 files changed, 21 insertions, 9 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c
index c62303c18f..4083b4c4bf 100644
--- a/libmpdemux/demux_mov.c
+++ b/libmpdemux/demux_mov.c
@@ -977,7 +977,7 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
}
case MOV_TRAK_VIDEO: {
int i, entry;
- int flag, start, count_flag, end, palette_count;
+ int flag, start, count_flag, end, palette_count, gray;
int hdr_ptr = 76; // the byte just after depth
unsigned char *palette_map;
sh_video_t* sh=new_sh_video(demuxer,priv->track_db);
@@ -1113,7 +1113,8 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
if(depth>32+8) printf("*** depth = 0x%X\n",depth);
// palettized?
- if (depth > 32) depth&=31; // depth > 32 means grayscale
+ gray = 0;
+ if (depth > 32) { depth&=31; gray = 1; } // depth > 32 means grayscale
if ((depth == 2) || (depth == 4) || (depth == 8))
palette_count = (1 << depth);
else
@@ -1145,13 +1146,24 @@ static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak
// load default palette
if (flag & 0x08)
{
- mp_msg(MSGT_DEMUX, MSGL_INFO, "Using default QT palette\n");
- if (palette_count == 4)
- memcpy(palette_map, qt_default_palette_4, 4 * 4);
- else if (palette_count == 16)
- memcpy(palette_map, qt_default_palette_16, 16 * 4);
- if (palette_count == 256)
- memcpy(palette_map, qt_default_palette_256, 256 * 4);
+ if (gray)
+ {
+ mp_msg(MSGT_DEMUX, MSGL_INFO, "Using default QT grayscale palette\n");
+ if (palette_count == 16)
+ memcpy(palette_map, qt_default_grayscale_palette_16, 16 * 4);
+ else if (palette_count == 256)
+ memcpy(palette_map, qt_default_grayscale_palette_256, 256 * 4);
+ }
+ else
+ {
+ mp_msg(MSGT_DEMUX, MSGL_INFO, "Using default QT colour palette\n");
+ if (palette_count == 4)
+ memcpy(palette_map, qt_default_palette_4, 4 * 4);
+ else if (palette_count == 16)
+ memcpy(palette_map, qt_default_palette_16, 16 * 4);
+ else if (palette_count == 256)
+ memcpy(palette_map, qt_default_palette_256, 256 * 4);
+ }
}
// load palette from file
else