changeset 4332:ae889abf93cd

QT demuxer now supports the default QT palettes
author melanson
date Thu, 24 Jan 2002 05:20:19 +0000
parents ce1e3668fa2b
children c67d50d4a889
files libmpdemux/demux_mov.c libmpdemux/qtpalette.h
diffstat 2 files changed, 321 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/demux_mov.c	Thu Jan 24 00:53:22 2002 +0000
+++ b/libmpdemux/demux_mov.c	Thu Jan 24 05:20:19 2002 +0000
@@ -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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libmpdemux/qtpalette.h	Thu Jan 24 05:20:19 2002 +0000
@@ -0,0 +1,293 @@
+//  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