diff options
author | mosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-09-02 14:48:49 +0000 |
---|---|---|
committer | mosu <mosu@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2003-09-02 14:48:49 +0000 |
commit | 2445e00ca28bf8b2b0d5afd1c852976ccfa7cfef (patch) | |
tree | fb61690c68e5ace7f8dd541c7dda9c39d4df4c1c /libmpdemux/demux_mov.c | |
parent | c320d92ce41bdb2b758e605f53b50ea4e7c87e38 (diff) | |
download | mpv-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.c | 30 |
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 |