[Mplayer-cvslog] CVS: main/libmpdemux qtpalette.h,NONE,1.1 demux_mov.c,1.31,1.32

Mike Melanson melanson at mplayer.dev.hu
Thu Jan 24 06:20:27 CET 2002


Update of /cvsroot/mplayer/main/libmpdemux
In directory mplayer:/var/tmp.root/cvs-serv9674/libmpdemux

Modified Files:
	demux_mov.c 
Added Files:
	qtpalette.h 
Log Message:
QT demuxer now supports the default QT palettes


--- NEW FILE ---
//  Default Palettes for Quicktime Files
//  Automatically generated from a utility derived from XAnim:
//    http://xanim.va.pubnix.com/home.html

#ifndef QTPALETTE_H
#define QTPALETTE_H

unsigned char qt_default_palette_4[4 * 4] = {
  0x93, 0x65, 0x5E, 0x00,
  0xFF, 0xFF, 0xFF, 0x00,
  0xDF, 0xD0, 0xAB, 0x00,
  0x00, 0x00, 0x00, 0x00 
};

unsigned char qt_default_palette_16[16 * 4] = {
  0xFF, 0xFB, 0xFF, 0x00,
  0xEF, 0xD9, 0xBB, 0x00,
  0xE8, 0xC9, 0xB1, 0x00,
  0x93, 0x65, 0x5E, 0x00,
  0xFC, 0xDE, 0xE8, 0x00,
  0x9D, 0x88, 0x91, 0x00,
  0xFF, 0xFF, 0xFF, 0x00,
  0xFF, 0xFF, 0xFF, 0x00,
  0xFF, 0xFF, 0xFF, 0x00,
  0x47, 0x48, 0x37, 0x00,
  0x7A, 0x5E, 0x55, 0x00,
  0xDF, 0xD0, 0xAB, 0x00,
  0xFF, 0xFB, 0xF9, 0x00,
  0xE8, 0xCA, 0xC5, 0x00,
  0x8A, 0x7C, 0x77, 0x00,
  0x00, 0x00, 0x00, 0x00 
};

unsigned char qt_default_palette_256[256 * 4] = {
  /* #0 */ 0xFF, 0xFF, 0xFF, 0x00,
  /* #1 */ 0xFF, 0xFF, 0xCC, 0x00,
  /* #2 */ 0xFF, 0xFF, 0x99, 0x00,
  /* #3 */ 0xFF, 0xFF, 0x66, 0x00,
  /* #4 */ 0xFF, 0xFF, 0x33, 0x00,
  /* #5 */ 0xFF, 0xFF, 0x00, 0x00,
  /* #6 */ 0xFF, 0xCC, 0xFF, 0x00,
  /* #7 */ 0xFF, 0xCC, 0xCC, 0x00,
  /* #8 */ 0xFF, 0xCC, 0x99, 0x00,
  /* #9 */ 0xFF, 0xCC, 0x66, 0x00,
  /* #10 */ 0xFF, 0xCC, 0x33, 0x00,
  /* #11 */ 0xFF, 0xCC, 0x00, 0x00,
  /* #12 */ 0xFF, 0x99, 0xFF, 0x00,
  /* #13 */ 0xFF, 0x99, 0xCC, 0x00,
  /* #14 */ 0xFF, 0x99, 0x99, 0x00,
  /* #15 */ 0xFF, 0x99, 0x66, 0x00,
  /* #16 */ 0xFF, 0x99, 0x33, 0x00,
  /* #17 */ 0xFF, 0x99, 0x00, 0x00,
  /* #18 */ 0xFF, 0x66, 0xFF, 0x00,
  /* #19 */ 0xFF, 0x66, 0xCC, 0x00,
  /* #20 */ 0xFF, 0x66, 0x99, 0x00,
  /* #21 */ 0xFF, 0x66, 0x66, 0x00,
  /* #22 */ 0xFF, 0x66, 0x33, 0x00,
  /* #23 */ 0xFF, 0x66, 0x00, 0x00,
  /* #24 */ 0xFF, 0x33, 0xFF, 0x00,
  /* #25 */ 0xFF, 0x33, 0xCC, 0x00,
  /* #26 */ 0xFF, 0x33, 0x99, 0x00,
  /* #27 */ 0xFF, 0x33, 0x66, 0x00,
  /* #28 */ 0xFF, 0x33, 0x33, 0x00,
  /* #29 */ 0xFF, 0x33, 0x00, 0x00,
  /* #30 */ 0xFF, 0x00, 0xFF, 0x00,
  /* #31 */ 0xFF, 0x00, 0xCC, 0x00,
  /* #32 */ 0xFF, 0x00, 0x99, 0x00,
  /* #33 */ 0xFF, 0x00, 0x66, 0x00,
  /* #34 */ 0xFF, 0x00, 0x33, 0x00,
  /* #35 */ 0xFF, 0x00, 0x00, 0x00,
  /* #36 */ 0xCC, 0xFF, 0xFF, 0x00,
  /* #37 */ 0xCC, 0xFF, 0xCC, 0x00,
  /* #38 */ 0xCC, 0xFF, 0x99, 0x00,
  /* #39 */ 0xCC, 0xFF, 0x66, 0x00,
  /* #40 */ 0xCC, 0xFF, 0x33, 0x00,
  /* #41 */ 0xCC, 0xFF, 0x00, 0x00,
  /* #42 */ 0xCC, 0xCC, 0xFF, 0x00,
  /* #43 */ 0xCC, 0xCC, 0xCC, 0x00,
  /* #44 */ 0xCC, 0xCC, 0x99, 0x00,
  /* #45 */ 0xCC, 0xCC, 0x66, 0x00,
  /* #46 */ 0xCC, 0xCC, 0x33, 0x00,
  /* #47 */ 0xCC, 0xCC, 0x00, 0x00,
  /* #48 */ 0xCC, 0x99, 0xFF, 0x00,
  /* #49 */ 0xCC, 0x99, 0xCC, 0x00,
  /* #50 */ 0xCC, 0x99, 0x99, 0x00,
  /* #51 */ 0xCC, 0x99, 0x66, 0x00,
  /* #52 */ 0xCC, 0x99, 0x33, 0x00,
  /* #53 */ 0xCC, 0x99, 0x00, 0x00,
  /* #54 */ 0xCC, 0x66, 0xFF, 0x00,
  /* #55 */ 0xCC, 0x66, 0xCC, 0x00,
  /* #56 */ 0xCC, 0x66, 0x99, 0x00,
  /* #57 */ 0xCC, 0x66, 0x66, 0x00,
  /* #58 */ 0xCC, 0x66, 0x33, 0x00,
  /* #59 */ 0xCC, 0x66, 0x00, 0x00,
  /* #60 */ 0xCC, 0x33, 0xFF, 0x00,
  /* #61 */ 0xCC, 0x33, 0xCC, 0x00,
  /* #62 */ 0xCC, 0x33, 0x99, 0x00,
  /* #63 */ 0xCC, 0x33, 0x66, 0x00,
  /* #64 */ 0xCC, 0x33, 0x33, 0x00,
  /* #65 */ 0xCC, 0x33, 0x00, 0x00,
  /* #66 */ 0xCC, 0x00, 0xFF, 0x00,
  /* #67 */ 0xCC, 0x00, 0xCC, 0x00,
  /* #68 */ 0xCC, 0x00, 0x99, 0x00,
  /* #69 */ 0xCC, 0x00, 0x66, 0x00,
  /* #70 */ 0xCC, 0x00, 0x33, 0x00,
  /* #71 */ 0xCC, 0x00, 0x00, 0x00,
  /* #72 */ 0x99, 0xFF, 0xFF, 0x00,
  /* #73 */ 0x99, 0xFF, 0xCC, 0x00,
  /* #74 */ 0x99, 0xFF, 0x99, 0x00,
  /* #75 */ 0x99, 0xFF, 0x66, 0x00,
  /* #76 */ 0x99, 0xFF, 0x33, 0x00,
  /* #77 */ 0x99, 0xFF, 0x00, 0x00,
  /* #78 */ 0x99, 0xCC, 0xFF, 0x00,
  /* #79 */ 0x99, 0xCC, 0xCC, 0x00,
  /* #80 */ 0x99, 0xCC, 0x99, 0x00,
  /* #81 */ 0x99, 0xCC, 0x66, 0x00,
  /* #82 */ 0x99, 0xCC, 0x33, 0x00,
  /* #83 */ 0x99, 0xCC, 0x00, 0x00,
  /* #84 */ 0x99, 0x99, 0xFF, 0x00,
  /* #85 */ 0x99, 0x99, 0xCC, 0x00,
  /* #86 */ 0x99, 0x99, 0x99, 0x00,
  /* #87 */ 0x99, 0x99, 0x66, 0x00,
  /* #88 */ 0x99, 0x99, 0x33, 0x00,
  /* #89 */ 0x99, 0x99, 0x00, 0x00,
  /* #90 */ 0x99, 0x66, 0xFF, 0x00,
  /* #91 */ 0x99, 0x66, 0xCC, 0x00,
  /* #92 */ 0x99, 0x66, 0x99, 0x00,
  /* #93 */ 0x99, 0x66, 0x66, 0x00,
  /* #94 */ 0x99, 0x66, 0x33, 0x00,
  /* #95 */ 0x99, 0x66, 0x00, 0x00,
  /* #96 */ 0x99, 0x33, 0xFF, 0x00,
  /* #97 */ 0x99, 0x33, 0xCC, 0x00,
  /* #98 */ 0x99, 0x33, 0x99, 0x00,
  /* #99 */ 0x99, 0x33, 0x66, 0x00,
  /* #100 */ 0x99, 0x33, 0x33, 0x00,
  /* #101 */ 0x99, 0x33, 0x00, 0x00,
  /* #102 */ 0x99, 0x00, 0xFF, 0x00,
  /* #103 */ 0x99, 0x00, 0xCC, 0x00,
  /* #104 */ 0x99, 0x00, 0x99, 0x00,
  /* #105 */ 0x99, 0x00, 0x66, 0x00,
  /* #106 */ 0x99, 0x00, 0x33, 0x00,
  /* #107 */ 0x99, 0x00, 0x00, 0x00,
  /* #108 */ 0x66, 0xFF, 0xFF, 0x00,
  /* #109 */ 0x66, 0xFF, 0xCC, 0x00,
  /* #110 */ 0x66, 0xFF, 0x99, 0x00,
  /* #111 */ 0x66, 0xFF, 0x66, 0x00,
  /* #112 */ 0x66, 0xFF, 0x33, 0x00,
  /* #113 */ 0x66, 0xFF, 0x00, 0x00,
  /* #114 */ 0x66, 0xCC, 0xFF, 0x00,
  /* #115 */ 0x66, 0xCC, 0xCC, 0x00,
  /* #116 */ 0x66, 0xCC, 0x99, 0x00,
  /* #117 */ 0x66, 0xCC, 0x66, 0x00,
  /* #118 */ 0x66, 0xCC, 0x33, 0x00,
  /* #119 */ 0x66, 0xCC, 0x00, 0x00,
  /* #120 */ 0x66, 0x99, 0xFF, 0x00,
  /* #121 */ 0x66, 0x99, 0xCC, 0x00,
  /* #122 */ 0x66, 0x99, 0x99, 0x00,
  /* #123 */ 0x66, 0x99, 0x66, 0x00,
  /* #124 */ 0x66, 0x99, 0x33, 0x00,
  /* #125 */ 0x66, 0x99, 0x00, 0x00,
  /* #126 */ 0x66, 0x66, 0xFF, 0x00,
  /* #127 */ 0x66, 0x66, 0xCC, 0x00,
  /* #128 */ 0x66, 0x66, 0x99, 0x00,
  /* #129 */ 0x66, 0x66, 0x66, 0x00,
  /* #130 */ 0x66, 0x66, 0x33, 0x00,
  /* #131 */ 0x66, 0x66, 0x00, 0x00,
  /* #132 */ 0x66, 0x33, 0xFF, 0x00,
  /* #133 */ 0x66, 0x33, 0xCC, 0x00,
  /* #134 */ 0x66, 0x33, 0x99, 0x00,
  /* #135 */ 0x66, 0x33, 0x66, 0x00,
  /* #136 */ 0x66, 0x33, 0x33, 0x00,
  /* #137 */ 0x66, 0x33, 0x00, 0x00,
  /* #138 */ 0x66, 0x00, 0xFF, 0x00,
  /* #139 */ 0x66, 0x00, 0xCC, 0x00,
  /* #140 */ 0x66, 0x00, 0x99, 0x00,
  /* #141 */ 0x66, 0x00, 0x66, 0x00,
  /* #142 */ 0x66, 0x00, 0x33, 0x00,
  /* #143 */ 0x66, 0x00, 0x00, 0x00,
  /* #144 */ 0x33, 0xFF, 0xFF, 0x00,
  /* #145 */ 0x33, 0xFF, 0xCC, 0x00,
  /* #146 */ 0x33, 0xFF, 0x99, 0x00,
  /* #147 */ 0x33, 0xFF, 0x66, 0x00,
  /* #148 */ 0x33, 0xFF, 0x33, 0x00,
  /* #149 */ 0x33, 0xFF, 0x00, 0x00,
  /* #150 */ 0x33, 0xCC, 0xFF, 0x00,
  /* #151 */ 0x33, 0xCC, 0xCC, 0x00,
  /* #152 */ 0x33, 0xCC, 0x99, 0x00,
  /* #153 */ 0x33, 0xCC, 0x66, 0x00,
  /* #154 */ 0x33, 0xCC, 0x33, 0x00,
  /* #155 */ 0x33, 0xCC, 0x00, 0x00,
  /* #156 */ 0x33, 0x99, 0xFF, 0x00,
  /* #157 */ 0x33, 0x99, 0xCC, 0x00,
  /* #158 */ 0x33, 0x99, 0x99, 0x00,
  /* #159 */ 0x33, 0x99, 0x66, 0x00,
  /* #160 */ 0x33, 0x99, 0x33, 0x00,
  /* #161 */ 0x33, 0x99, 0x00, 0x00,
  /* #162 */ 0x33, 0x66, 0xFF, 0x00,
  /* #163 */ 0x33, 0x66, 0xCC, 0x00,
  /* #164 */ 0x33, 0x66, 0x99, 0x00,
  /* #165 */ 0x33, 0x66, 0x66, 0x00,
  /* #166 */ 0x33, 0x66, 0x33, 0x00,
  /* #167 */ 0x33, 0x66, 0x00, 0x00,
  /* #168 */ 0x33, 0x33, 0xFF, 0x00,
  /* #169 */ 0x33, 0x33, 0xCC, 0x00,
  /* #170 */ 0x33, 0x33, 0x99, 0x00,
  /* #171 */ 0x33, 0x33, 0x66, 0x00,
  /* #172 */ 0x33, 0x33, 0x33, 0x00,
  /* #173 */ 0x33, 0x33, 0x00, 0x00,
  /* #174 */ 0x33, 0x00, 0xFF, 0x00,
  /* #175 */ 0x33, 0x00, 0xCC, 0x00,
  /* #176 */ 0x33, 0x00, 0x99, 0x00,
  /* #177 */ 0x33, 0x00, 0x66, 0x00,
  /* #178 */ 0x33, 0x00, 0x33, 0x00,
  /* #179 */ 0x33, 0x00, 0x00, 0x00,
  /* #180 */ 0x00, 0xFF, 0xFF, 0x00,
  /* #181 */ 0x00, 0xFF, 0xCC, 0x00,
  /* #182 */ 0x00, 0xFF, 0x99, 0x00,
  /* #183 */ 0x00, 0xFF, 0x66, 0x00,
  /* #184 */ 0x00, 0xFF, 0x33, 0x00,
  /* #185 */ 0x00, 0xFF, 0x00, 0x00,
  /* #186 */ 0x00, 0xCC, 0xFF, 0x00,
  /* #187 */ 0x00, 0xCC, 0xCC, 0x00,
  /* #188 */ 0x00, 0xCC, 0x99, 0x00,
  /* #189 */ 0x00, 0xCC, 0x66, 0x00,
  /* #190 */ 0x00, 0xCC, 0x33, 0x00,
  /* #191 */ 0x00, 0xCC, 0x00, 0x00,
  /* #192 */ 0x00, 0x99, 0xFF, 0x00,
  /* #193 */ 0x00, 0x99, 0xCC, 0x00,
  /* #194 */ 0x00, 0x99, 0x99, 0x00,
  /* #195 */ 0x00, 0x99, 0x66, 0x00,
  /* #196 */ 0x00, 0x99, 0x33, 0x00,
  /* #197 */ 0x00, 0x99, 0x00, 0x00,
  /* #198 */ 0x00, 0x66, 0xFF, 0x00,
  /* #199 */ 0x00, 0x66, 0xCC, 0x00,
  /* #200 */ 0x00, 0x66, 0x99, 0x00,
  /* #201 */ 0x00, 0x66, 0x66, 0x00,
  /* #202 */ 0x00, 0x66, 0x33, 0x00,
  /* #203 */ 0x00, 0x66, 0x00, 0x00,
  /* #204 */ 0x00, 0x33, 0xFF, 0x00,
  /* #205 */ 0x00, 0x33, 0xCC, 0x00,
  /* #206 */ 0x00, 0x33, 0x99, 0x00,
  /* #207 */ 0x00, 0x33, 0x66, 0x00,
  /* #208 */ 0x00, 0x33, 0x33, 0x00,
  /* #209 */ 0x00, 0x33, 0x00, 0x00,
  /* #210 */ 0x00, 0x00, 0xFF, 0x00,
  /* #211 */ 0x00, 0x00, 0xCC, 0x00,
  /* #212 */ 0x00, 0x00, 0x99, 0x00,
  /* #213 */ 0x00, 0x00, 0x66, 0x00,
  /* #214 */ 0x00, 0x00, 0x33, 0x00,
  /* #215 */ 0xEE, 0x00, 0x00, 0x00,
  /* #216 */ 0xDD, 0x00, 0x00, 0x00,
  /* #217 */ 0xBB, 0x00, 0x00, 0x00,
  /* #218 */ 0xAA, 0x00, 0x00, 0x00,
  /* #219 */ 0x88, 0x00, 0x00, 0x00,
  /* #220 */ 0x77, 0x00, 0x00, 0x00,
  /* #221 */ 0x55, 0x00, 0x00, 0x00,
  /* #222 */ 0x44, 0x00, 0x00, 0x00,
  /* #223 */ 0x22, 0x00, 0x00, 0x00,
  /* #224 */ 0x11, 0x00, 0x00, 0x00,
  /* #225 */ 0x00, 0xEE, 0x00, 0x00,
  /* #226 */ 0x00, 0xDD, 0x00, 0x00,
  /* #227 */ 0x00, 0xBB, 0x00, 0x00,
  /* #228 */ 0x00, 0xAA, 0x00, 0x00,
  /* #229 */ 0x00, 0x88, 0x00, 0x00,
  /* #230 */ 0x00, 0x77, 0x00, 0x00,
  /* #231 */ 0x00, 0x55, 0x00, 0x00,
  /* #232 */ 0x00, 0x44, 0x00, 0x00,
  /* #233 */ 0x00, 0x22, 0x00, 0x00,
  /* #234 */ 0x00, 0x11, 0x00, 0x00,
  /* #235 */ 0x00, 0x00, 0xEE, 0x00,
  /* #236 */ 0x00, 0x00, 0xDD, 0x00,
  /* #237 */ 0x00, 0x00, 0xBB, 0x00,
  /* #238 */ 0x00, 0x00, 0xAA, 0x00,
  /* #239 */ 0x00, 0x00, 0x88, 0x00,
  /* #240 */ 0x00, 0x00, 0x77, 0x00,
  /* #241 */ 0x00, 0x00, 0x55, 0x00,
  /* #242 */ 0x00, 0x00, 0x44, 0x00,
  /* #243 */ 0x00, 0x00, 0x22, 0x00,
  /* #244 */ 0x00, 0x00, 0x11, 0x00,
  /* #245 */ 0xEE, 0xEE, 0xEE, 0x00,
  /* #246 */ 0xDD, 0xDD, 0xDD, 0x00,
  /* #247 */ 0xBB, 0xBB, 0xBB, 0x00,
  /* #248 */ 0xAA, 0xAA, 0xAA, 0x00,
  /* #249 */ 0x88, 0x88, 0x88, 0x00,
  /* #250 */ 0x77, 0x77, 0x77, 0x00,
  /* #251 */ 0x55, 0x55, 0x55, 0x00,
  /* #252 */ 0x44, 0x44, 0x44, 0x00,
  /* #253 */ 0x22, 0x22, 0x22, 0x00,
  /* #254 */ 0x11, 0x11, 0x11, 0x00,
  /* #255 */ 0x00, 0x00, 0x00, 0x00
};

#endif

Index: demux_mov.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_mov.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -r1.31 -r1.32
--- demux_mov.c	13 Jan 2002 06:01:00 -0000	1.31
+++ demux_mov.c	24 Jan 2002 05:20:19 -0000	1.32
@@ -18,6 +18,8 @@
 
 #include "bswap.h"
 
+#include "qtpalette.h"
+
 #ifdef HAVE_ZLIB
 #include <zlib.h>
 #endif
@@ -600,18 +602,33 @@
 		  end = BE_16(&trak->stdata[hdr_ptr]);
 		  hdr_ptr += 2;
 		  palette_map = (unsigned char *)sh->bih + 40;
-		  for (i = start; i <= end; i++)
+
+		  // load default palette
+		  if (flag & 0x08)
+		  {
+		    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);
+		  }
+		  // load palette from file
+		  else
 		  {
-		    entry = BE_16(&trak->stdata[hdr_ptr]);
-		    hdr_ptr += 2;
-		    // apparently, if count_flag is set, entry is same as i
-		    if (count_flag & 0x8000)
-		      entry = i;
-		    // only care about top 8 bits of 16-bit R, G, or B value
-		    palette_map[entry * 4 + 0] = trak->stdata[hdr_ptr + 0];
-		    palette_map[entry * 4 + 1] = trak->stdata[hdr_ptr + 2];
-		    palette_map[entry * 4 + 2] = trak->stdata[hdr_ptr + 4];
-		    hdr_ptr += 6;
+		    for (i = start; i <= end; i++)
+		    {
+		      entry = BE_16(&trak->stdata[hdr_ptr]);
+		      hdr_ptr += 2;
+		      // apparently, if count_flag is set, entry is same as i
+		      if (count_flag & 0x8000)
+		        entry = i;
+		      // only care about top 8 bits of 16-bit R, G, or B value
+		      palette_map[entry * 4 + 0] = trak->stdata[hdr_ptr + 0];
+		      palette_map[entry * 4 + 1] = trak->stdata[hdr_ptr + 2];
+		      palette_map[entry * 4 + 2] = trak->stdata[hdr_ptr + 4];
+		      hdr_ptr += 6;
+		    }
 		  }
 		}
 		else




More information about the MPlayer-cvslog mailing list