annotate libmpcodecs/components.h @ 8186:b56fd4b1738d

Printing of max volume on exit
author anders
date Thu, 14 Nov 2002 09:49:06 +0000
parents 66d165a5c6b5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8161
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
1 // Basic types:
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
2
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
3 typedef char * Ptr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
4 typedef Ptr * Handle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
5 typedef long Size;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
6 typedef unsigned char Boolean;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
7 typedef unsigned char Str31[32];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
8 typedef long Fixed;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
9
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
10 typedef long OSErr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
11 typedef int OSType;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
12
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
13 typedef long ComponentResult;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
14 typedef unsigned char UInt8;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
15 typedef signed char SInt8;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
16 typedef unsigned short UInt16;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
17 typedef signed short SInt16;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
18 typedef unsigned long UInt32;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
19 typedef signed long SInt32;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
20
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
21 #define FOUR_CHAR_CODE(x) ((unsigned long)(x)) /* otherwise compiler will complain about values with high bit set */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
22
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
23 // codec private shit:
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
24 typedef void *GlobalsPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
25 typedef void **Globals;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
26
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
27 //==================== COMPONENTS ===========================
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
28
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
29 struct __attribute__((__packed__)) ComponentParameters {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
30 UInt8 flags; /* call modifiers: sync/async, deferred, immed, etc */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
31 UInt8 paramSize; /* size in bytes of actual parameters passed to this call */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
32 short what; /* routine selector, negative for Component management calls */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
33 long params[1]; /* actual parameters for the indicated routine */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
34 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
35 typedef struct ComponentParameters ComponentParameters;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
36
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
37
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
38 struct __attribute__((__packed__)) ComponentDescription {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
39 OSType componentType; /* A unique 4-byte code indentifying the command set */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
40 OSType componentSubType; /* Particular flavor of this instance */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
41 OSType componentManufacturer; /* Vendor indentification */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
42 unsigned long componentFlags; /* 8 each for Component,Type,SubType,Manuf/revision */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
43 unsigned long componentFlagsMask; /* Mask for specifying which flags to consider in search, zero during registration */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
44 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
45 typedef struct ComponentDescription ComponentDescription;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
46
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
47
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
48 struct __attribute__((__packed__)) ResourceSpec {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
49 OSType resType; /* 4-byte code */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
50 short resID; /* */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
51 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
52 typedef struct ResourceSpec ResourceSpec;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
53
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
54
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
55 struct __attribute__((__packed__)) ComponentResource {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
56 ComponentDescription cd; /* Registration parameters */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
57 ResourceSpec component; /* resource where Component code is found */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
58 ResourceSpec componentName; /* name string resource */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
59 ResourceSpec componentInfo; /* info string resource */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
60 ResourceSpec componentIcon; /* icon resource */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
61 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
62 typedef struct ComponentResource ComponentResource;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
63 typedef ComponentResource * ComponentResourcePtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
64 typedef ComponentResourcePtr * ComponentResourceHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
65
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
66
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
67 struct __attribute__((__packed__)) ComponentRecord {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
68 long data[1];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
69 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
70 typedef struct ComponentRecord ComponentRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
71 typedef ComponentRecord * Component;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
72
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
73
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
74 struct __attribute__((__packed__)) ComponentInstanceRecord {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
75 long data[1];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
76 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
77 typedef struct ComponentInstanceRecord ComponentInstanceRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
78
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
79 typedef ComponentInstanceRecord * ComponentInstance;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
80
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
81 // ========================= QUICKDRAW =========================
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
82
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
83 struct __attribute__((__packed__)) Rect {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
84 short top;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
85 short left;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
86 short bottom;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
87 short right;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
88 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
89 typedef struct Rect Rect;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
90 typedef Rect * RectPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
91
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
92 struct __attribute__((__packed__)) RGBColor {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
93 unsigned short red; /*magnitude of red component*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
94 unsigned short green; /*magnitude of green component*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
95 unsigned short blue; /*magnitude of blue component*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
96 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
97 typedef struct RGBColor RGBColor;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
98 typedef RGBColor * RGBColorPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
99 typedef RGBColorPtr * RGBColorHdl;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
100
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
101 struct __attribute__((__packed__)) ColorSpec {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
102 short value; /*index or other value*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
103 RGBColor rgb; /*true color*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
104 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
105 typedef struct ColorSpec ColorSpec;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
106 typedef ColorSpec * ColorSpecPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
107 typedef ColorSpec CSpecArray[1];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
108
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
109 struct __attribute__((__packed__)) ColorTable {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
110 long ctSeed; /*unique identifier for table*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
111 short ctFlags; /*high bit: 0 = PixMap; 1 = device*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
112 short ctSize; /*number of entries in CTTable*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
113 CSpecArray ctTable; /*array [0..0] of ColorSpec*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
114 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
115 typedef struct ColorTable ColorTable;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
116 typedef ColorTable * CTabPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
117 typedef CTabPtr * CTabHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
118
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
119 struct __attribute__((__packed__)) MatrixRecord {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
120 Fixed matrix[3][3];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
121 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
122 typedef struct MatrixRecord MatrixRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
123 typedef MatrixRecord * MatrixRecordPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
124
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
125 typedef long ImageSequence;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
126 typedef OSType CodecType;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
127 typedef unsigned short CodecFlags;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
128 typedef unsigned long CodecQ;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
129
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
130 struct __attribute__((__packed__)) ImageDescription {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
131 long idSize; /* total size of ImageDescription including extra data ( CLUTs and other per sequence data ) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
132 CodecType cType; /* what kind of codec compressed this data */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
133 long resvd1; /* reserved for Apple use */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
134 short resvd2; /* reserved for Apple use */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
135 short dataRefIndex; /* set to zero */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
136 short version; /* which version is this data */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
137 short revisionLevel; /* what version of that codec did this */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
138 long vendor; /* whose codec compressed this data */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
139 CodecQ temporalQuality; /* what was the temporal quality factor */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
140 CodecQ spatialQuality; /* what was the spatial quality factor */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
141 short width; /* how many pixels wide is this data */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
142 short height; /* how many pixels high is this data */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
143 Fixed hRes; /* horizontal resolution */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
144 Fixed vRes; /* vertical resolution */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
145 long dataSize; /* if known, the size of data for this image descriptor */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
146 short frameCount; /* number of frames this description applies to */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
147 Str31 name; /* name of codec ( in case not installed ) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
148 short depth; /* what depth is this data (1-32) or ( 33-40 grayscale ) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
149 short clutID; /* clut id or if 0 clut follows or -1 if no clut */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
150 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
151 typedef struct ImageDescription ImageDescription;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
152 typedef ImageDescription * ImageDescriptionPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
153 typedef ImageDescriptionPtr * ImageDescriptionHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
154
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
155 /* values for PixMap.pixelFormat*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
156 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
157 k16LE555PixelFormat = FOUR_CHAR_CODE('L555'), /* 16 bit LE rgb 555 (PC)*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
158 k16LE5551PixelFormat = FOUR_CHAR_CODE('5551'), /* 16 bit LE rgb 5551*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
159 k16BE565PixelFormat = FOUR_CHAR_CODE('B565'), /* 16 bit BE rgb 565*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
160 k16LE565PixelFormat = FOUR_CHAR_CODE('L565'), /* 16 bit LE rgb 565*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
161 k24BGRPixelFormat = FOUR_CHAR_CODE('24BG'), /* 24 bit bgr */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
162 k32BGRAPixelFormat = FOUR_CHAR_CODE('BGRA'), /* 32 bit bgra (Matrox)*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
163 k32ABGRPixelFormat = FOUR_CHAR_CODE('ABGR'), /* 32 bit abgr */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
164 k32RGBAPixelFormat = FOUR_CHAR_CODE('RGBA'), /* 32 bit rgba */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
165 kYUVSPixelFormat = FOUR_CHAR_CODE('yuvs'), /* YUV 4:2:2 byte ordering 16-unsigned = 'YUY2'*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
166 kYUVUPixelFormat = FOUR_CHAR_CODE('yuvu'), /* YUV 4:2:2 byte ordering 16-signed*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
167 kYVU9PixelFormat = FOUR_CHAR_CODE('YVU9'), /* YVU9 Planar 9*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
168 kYUV411PixelFormat = FOUR_CHAR_CODE('Y411'), /* YUV 4:1:1 Interleaved 16*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
169 kYVYU422PixelFormat = FOUR_CHAR_CODE('YVYU'), /* YVYU 4:2:2 byte ordering 16*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
170 kUYVY422PixelFormat = FOUR_CHAR_CODE('UYVY'), /* UYVY 4:2:2 byte ordering 16*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
171 kYUV211PixelFormat = FOUR_CHAR_CODE('Y211'), /* YUV 2:1:1 Packed 8*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
172 k2vuyPixelFormat = FOUR_CHAR_CODE('2vuy') /* UYVY 4:2:2 byte ordering 16*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
173 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
174
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
175 struct __attribute__((__packed__)) PixMapExtension {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
176 long extSize; /*size of struct, duh!*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
177 unsigned long pmBits; /*pixmap attributes bitfield*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
178 void * pmGD; /*this is a GDHandle*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
179 long pmSeed;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
180 Fixed gammaLevel; /*pixmap gammalevel*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
181 Fixed requestedGammaLevel;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
182 unsigned long reserved2;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
183 long longRowBytes; /*used when rowBytes > 16382*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
184 unsigned long signature;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
185 Handle baseAddrHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
186 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
187 typedef struct PixMapExtension PixMapExtension;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
188
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
189 typedef PixMapExtension * PixMapExtPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
190 typedef PixMapExtPtr * PixMapExtHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
191
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
192
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
193 struct __attribute__((__packed__)) PixMap {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
194 Ptr baseAddr; /*pointer to pixels*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
195 short rowBytes; /*offset to next line*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
196 Rect bounds; /*encloses bitmap*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
197 short pmVersion; /*pixMap version number*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
198 short packType; /*defines packing format*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
199 long packSize; /*length of pixel data*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
200 Fixed hRes; /*horiz. resolution (ppi)*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
201 Fixed vRes; /*vert. resolution (ppi)*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
202 short pixelType; /*defines pixel type*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
203 short pixelSize; /*# bits in pixel*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
204 short cmpCount; /*# components in pixel*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
205 short cmpSize; /*# bits per component*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
206 OSType pixelFormat; /*fourCharCode representation*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
207 CTabHandle pmTable; /*color map for this pixMap*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
208 PixMapExtHandle pmExt; /*Handle to pixMap extension*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
209 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
210 typedef struct PixMap PixMap;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
211 typedef PixMap * PixMapPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
212 typedef PixMapPtr * PixMapHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
213
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
214
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
215 struct __attribute__((__packed__)) BitMap {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
216 Ptr baseAddr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
217 short rowBytes;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
218 Rect bounds;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
219 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
220 typedef struct BitMap BitMap;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
221 typedef BitMap * BitMapPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
222 typedef BitMapPtr * BitMapHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
223 typedef struct OpaqueRgnHandle* RgnHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
224
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
225 struct Pattern {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
226 UInt8 pat[8];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
227 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
228 typedef struct Pattern Pattern;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
229 typedef unsigned char Style;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
230 typedef Style StyleField;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
231 struct __attribute__((__packed__)) Point {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
232 short v;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
233 short h;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
234 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
235 typedef struct Point Point;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
236 struct __attribute__((__packed__)) GrafPort {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
237 short device;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
238 BitMap portBits;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
239 Rect portRect;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
240 RgnHandle visRgn;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
241 RgnHandle clipRgn;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
242 Pattern bkPat;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
243 Pattern fillPat;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
244 Point pnLoc;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
245 Point pnSize;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
246 short pnMode;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
247 Pattern pnPat;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
248 short pnVis;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
249 short txFont;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
250 StyleField txFace; /*StyleField occupies 16-bits, but only first 8-bits are used*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
251 UInt8 txFlags; /* QuickTime uses second 8 bits of StyleField for txFlags */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
252 short txMode;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
253 short txSize;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
254 Fixed spExtra;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
255 long fgColor;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
256 long bkColor;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
257 short colrBit;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
258 short patStretch;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
259 Handle picSave;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
260 Handle rgnSave;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
261 Handle polySave;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
262 /*QDProcsPtr*/void* grafProcs;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
263 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
264 typedef struct GrafPort GrafPort;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
265 typedef GrafPort *GWorldPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
266 typedef GWorldPtr *GWorldHandle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
267 #define anyCodec ((CodecComponent)0)
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
268 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
269 /* transfer modes */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
270 srcCopy = 0, /*the 16 transfer modes*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
271 srcOr = 1,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
272 srcXor = 2,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
273 srcBic = 3,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
274 notSrcCopy = 4,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
275 notSrcOr = 5,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
276 notSrcXor = 6,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
277 notSrcBic = 7,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
278 patCopy = 8,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
279 patOr = 9,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
280 patXor = 10,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
281 patBic = 11,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
282 notPatCopy = 12,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
283 notPatOr = 13,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
284 notPatXor = 14,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
285 notPatBic = 15, /* Special Text Transfer Mode */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
286 grayishTextOr = 49,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
287 hilitetransfermode = 50,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
288 hilite = 50, /* Arithmetic transfer modes */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
289 blend = 32,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
290 addPin = 33,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
291 addOver = 34,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
292 subPin = 35,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
293 addMax = 37,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
294 adMax = 37,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
295 subOver = 38,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
296 adMin = 39,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
297 ditherCopy = 64, /* Transparent mode constant */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
298 transparent = 36
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
299 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
300
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
301 typedef unsigned long GWorldFlags;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
302
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
303
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
304
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
305 // ============================== CODECS ===========================
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
306
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
307 typedef Component CompressorComponent;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
308 typedef Component DecompressorComponent;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
309 typedef Component CodecComponent;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
310
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
311 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
312 codecLosslessQuality = 0x00000400,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
313 codecMaxQuality = 0x000003FF,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
314 codecMinQuality = 0x00000000,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
315 codecLowQuality = 0x00000100,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
316 codecNormalQuality = 0x00000200,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
317 codecHighQuality = 0x00000300
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
318 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
319
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
320
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
321
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
322 // callbacks:
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
323 typedef void* ImageCodecDrawBandCompleteUPP;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
324 typedef long long ICMProgressProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
325 typedef long long ICMCompletionProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
326 typedef long long ICMDataProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
327 typedef void* ICMFrameTimePtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
328 typedef void* CDSequenceDataSourcePtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
329 typedef void* ICMFrameTimeInfoPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
330
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
331 // graphics port
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
332 typedef struct OpaqueGrafPtr* GrafPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
333 typedef GrafPtr CGrafPtr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
334
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
335
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
336 /* codec capabilities flags */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
337 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
338 codecCanScale = 1L << 0,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
339 // 1
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
340 codecCanMask = 1L << 1,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
341 // 2
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
342 codecCanMatte = 1L << 2,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
343 // 4
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
344 codecCanTransform = 1L << 3,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
345 // 8
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
346 codecCanTransferMode = 1L << 4,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
347 // 10
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
348 codecCanCopyPrev = 1L << 5,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
349 // 20
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
350 codecCanSpool = 1L << 6,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
351 // 40
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
352 codecCanClipVertical = 1L << 7,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
353 // 80
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
354 codecCanClipRectangular = 1L << 8,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
355 // 100
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
356 codecCanRemapColor = 1L << 9,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
357 // 200
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
358 codecCanFastDither = 1L << 10,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
359 // 400
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
360 codecCanSrcExtract = 1L << 11,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
361 // 800
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
362 codecCanCopyPrevComp = 1L << 12,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
363 // 1000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
364 codecCanAsync = 1L << 13,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
365 // 2000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
366 codecCanMakeMask = 1L << 14,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
367 // 4000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
368 codecCanShift = 1L << 15,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
369 // 8000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
370 codecCanAsyncWhen = 1L << 16,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
371 // 10000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
372 codecCanShieldCursor = 1L << 17,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
373 // 20000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
374 codecCanManagePrevBuffer = 1L << 18,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
375 // 40000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
376 codecHasVolatileBuffer = 1L << 19, // 80000 /* codec requires redraw after window movement */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
377 codecWantsRegionMask = 1L << 20,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
378 // 100000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
379 codecImageBufferIsOnScreen = 1L << 21, // 200000 /* old def of codec using overlay surface, = ( codecIsDirectToScreenOnly | codecUsesOverlaySurface | codecImageBufferIsOverlaySurface | codecSrcMustBeImageBuffer ) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
380 codecWantsDestinationPixels = 1L << 22,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
381 // 400000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
382 codecWantsSpecialScaling = 1L << 23,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
383 // 800000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
384 codecHandlesInputs = 1L << 24,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
385 // 1000000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
386 codecCanDoIndirectSurface = 1L << 25, /* codec can handle indirect surface (GDI) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
387 codecIsSequenceSensitive = 1L << 26,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
388 codecRequiresOffscreen = 1L << 27,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
389 codecRequiresMaskBits = 1L << 28,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
390 codecCanRemapResolution = 1L << 29,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
391 codecIsDirectToScreenOnly = 1L << 30, /* codec can only decompress data to the screen */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
392 codecCanLockSurface = 1L << 31 /* codec can lock destination surface, icm doesn't lock for you */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
393 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
394
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
395 /* codec capabilities flags2 */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
396 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
397 codecUsesOverlaySurface = 1L << 0, /* codec uses overlay surface */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
398 codecImageBufferIsOverlaySurface = 1L << 1, /* codec image buffer is overlay surface, the bits in the buffer are on the screen */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
399 codecSrcMustBeImageBuffer = 1L << 2, /* codec can only source data from an image buffer */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
400 codecImageBufferIsInAGPMemory = 1L << 4, /* codec image buffer is in AGP space, byte writes are OK */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
401 codecImageBufferIsInPCIMemory = 1L << 5 /* codec image buffer is across a PCI bus; byte writes are bad */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
402 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
403
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
404 /* codec condition flags */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
405 // FFD = 13 = 8+4+1
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
406 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
407 codecConditionFirstBand = 1L << 0,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
408 // 1
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
409 codecConditionLastBand = 1L << 1,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
410 // 2
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
411 codecConditionFirstFrame = 1L << 2,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
412 // 4
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
413 codecConditionNewDepth = 1L << 3,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
414 // 8
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
415 codecConditionNewTransform = 1L << 4,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
416 // 10
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
417 codecConditionNewSrcRect = 1L << 5,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
418 // 20
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
419 codecConditionNewMask = 1L << 6,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
420 // 40
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
421 codecConditionNewMatte = 1L << 7,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
422 // 80
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
423 codecConditionNewTransferMode = 1L << 8,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
424 // 100
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
425 codecConditionNewClut = 1L << 9,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
426 // 200
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
427 codecConditionNewAccuracy = 1L << 10,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
428 // 400
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
429 codecConditionNewDestination = 1L << 11,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
430 // 800
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
431 codecConditionFirstScreen = 1L << 12,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
432 // 1000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
433 codecConditionDoCursor = 1L << 13,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
434 // 2000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
435 codecConditionCatchUpDiff = 1L << 14,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
436 // 4000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
437 codecConditionMaskMayBeChanged = 1L << 15,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
438 // 8000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
439 codecConditionToBuffer = 1L << 16,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
440 // 10000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
441 codecConditionCodecChangedMask = 1L << 31
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
442 // 20000
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
443 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
444
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
445
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
446
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
447 struct __attribute__((__packed__)) CodecCapabilities {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
448 long flags;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
449 short wantedPixelSize;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
450 short extendWidth;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
451 short extendHeight;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
452 short bandMin;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
453 short bandInc;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
454 short pad;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
455 unsigned long time;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
456 long flags2; /* field new in QuickTime 4.0 */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
457 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
458 typedef struct CodecCapabilities CodecCapabilities;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
459
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
460 struct __attribute__((__packed__)) CodecDecompressParams {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
461 ImageSequence sequenceID; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
462 ImageDescriptionHandle imageDescription; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
463 Ptr data;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
464 long bufferSize;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
465
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
466 long frameNumber;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
467 long startLine;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
468 long stopLine;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
469 long conditionFlags;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
470
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
471 CodecFlags callerFlags;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
472 // short
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
473 CodecCapabilities * capabilities; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
474 ICMProgressProcRecord progressProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
475 ICMCompletionProcRecord completionProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
476
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
477 ICMDataProcRecord dataProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
478 CGrafPtr port; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
479 PixMap dstPixMap; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
480 BitMapPtr maskBits;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
481 PixMapPtr mattePixMap;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
482 Rect srcRect; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
483 MatrixRecord * matrix; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
484 CodecQ accuracy; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
485 short transferMode; /* predecompress,banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
486 ICMFrameTimePtr frameTime; /* banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
487 long reserved[1];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
488
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
489 /* The following fields only exist for QuickTime 2.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
490 SInt8 matrixFlags; /* high bit set if 2x resize */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
491 SInt8 matrixType;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
492 Rect dstRect; /* only valid for simple transforms */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
493
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
494 /* The following fields only exist for QuickTime 2.1 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
495 UInt16 majorSourceChangeSeed;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
496 UInt16 minorSourceChangeSeed;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
497 CDSequenceDataSourcePtr sourceData;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
498
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
499 RgnHandle maskRegion;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
500
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
501 /* The following fields only exist for QuickTime 2.5 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
502 OSType ** wantedDestinationPixelTypes; /* Handle to 0-terminated list of OSTypes */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
503
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
504 long screenFloodMethod;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
505 long screenFloodValue;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
506 short preferredOffscreenPixelSize;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
507
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
508 /* The following fields only exist for QuickTime 3.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
509 ICMFrameTimeInfoPtr syncFrameTime; /* banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
510 Boolean needUpdateOnTimeChange; /* banddecompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
511 Boolean enableBlackLining;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
512 Boolean needUpdateOnSourceChange; /* band decompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
513 Boolean pad;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
514
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
515 long unused;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
516
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
517 CGrafPtr finalDestinationPort;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
518
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
519 long requestedBufferWidth; /* must set codecWantsSpecialScaling to indicate this field is valid*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
520 long requestedBufferHeight; /* must set codecWantsSpecialScaling to indicate this field is valid*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
521
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
522 /* The following fields only exist for QuickTime 4.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
523 Rect displayableAreaOfRequestedBuffer; /* set in predecompress*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
524 Boolean requestedSingleField;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
525 Boolean needUpdateOnNextIdle;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
526 Boolean pad2[2];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
527 Fixed bufferGammaLevel;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
528
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
529 /* The following fields only exist for QuickTime 5.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
530 UInt32 taskWeight; /* preferred weight for MP tasks implementing this operation*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
531 OSType taskName; /* preferred name (type) for MP tasks implementing this operation*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
532 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
533 typedef struct CodecDecompressParams CodecDecompressParams;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
534
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
535
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
536
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
537 struct __attribute__((__packed__)) ImageSubCodecDecompressCapabilities {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
538 long recordSize; /* sizeof(ImageSubCodecDecompressCapabilities)*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
539 long decompressRecordSize; /* size of your codec's decompress record*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
540 Boolean canAsync; /* default true*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
541 UInt8 pad0;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
542
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
543 /* The following fields only exist for QuickTime 4.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
544 UInt16 suggestedQueueSize;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
545 Boolean canProvideTrigger;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
546
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
547 /* The following fields only exist for QuickTime 5.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
548 Boolean subCodecFlushesScreen; /* only used on Mac OS X*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
549 Boolean subCodecCallsDrawBandComplete;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
550 UInt8 pad2[1];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
551
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
552 /* The following fields only exist for QuickTime 5.1 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
553 Boolean isChildCodec; /* set by base codec before calling Initialize*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
554 UInt8 pad3[3];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
555 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
556 typedef struct ImageSubCodecDecompressCapabilities ImageSubCodecDecompressCapabilities;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
557
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
558
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
559 struct __attribute__((__packed__)) ImageSubCodecDecompressRecord {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
560 Ptr baseAddr;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
561 long rowBytes;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
562 Ptr codecData;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
563 ICMProgressProcRecord progressProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
564 ICMDataProcRecord dataProcRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
565 void * userDecompressRecord; /* pointer to codec-specific per-band data*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
566 UInt8 frameType;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
567 Boolean inhibitMP; /* set this in BeginBand to tell the base decompressor not to call DrawBand from an MP task for this frame. (Only has any effect for MP-capable subcodecs. New in QuickTime 5.0.)*/
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
568 UInt8 pad[2];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
569 long priv[2];
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
570
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
571 /* The following fields only exist for QuickTime 5.0 and greater */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
572 ImageCodecDrawBandCompleteUPP drawBandCompleteUPP; /* only used if subcodec set subCodecCallsDrawBandComplete; if drawBandCompleteUPP is non-nil, codec must call it when a frame is finished, but may return from DrawBand before the frame is finished. */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
573 void * drawBandCompleteRefCon; /* Note: do not call drawBandCompleteUPP directly from a hardware interrupt; instead, use DTInstall to run a function at deferred task time, and call drawBandCompleteUPP from that. */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
574 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
575 typedef struct ImageSubCodecDecompressRecord ImageSubCodecDecompressRecord;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
576
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
577
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
578 /* These are the bits that are set in the Component flags, and also in the codecInfo struct. */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
579 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
580 codecInfoDoes1 = (1L << 0), /* codec can work with 1-bit pixels */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
581 codecInfoDoes2 = (1L << 1), /* codec can work with 2-bit pixels */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
582 codecInfoDoes4 = (1L << 2), /* codec can work with 4-bit pixels */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
583 codecInfoDoes8 = (1L << 3), /* codec can work with 8-bit pixels */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
584 codecInfoDoes16 = (1L << 4), /* codec can work with 16-bit pixels */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
585 codecInfoDoes32 = (1L << 5), /* codec can work with 32-bit pixels */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
586 codecInfoDoesDither = (1L << 6), /* codec can do ditherMode */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
587 codecInfoDoesStretch = (1L << 7), /* codec can stretch to arbitrary sizes */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
588 codecInfoDoesShrink = (1L << 8), /* codec can shrink to arbitrary sizes */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
589 codecInfoDoesMask = (1L << 9), /* codec can mask to clipping regions */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
590 codecInfoDoesTemporal = (1L << 10), /* codec can handle temporal redundancy */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
591 codecInfoDoesDouble = (1L << 11), /* codec can stretch to double size exactly */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
592 codecInfoDoesQuad = (1L << 12), /* codec can stretch to quadruple size exactly */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
593 codecInfoDoesHalf = (1L << 13), /* codec can shrink to half size */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
594 codecInfoDoesQuarter = (1L << 14), /* codec can shrink to quarter size */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
595 codecInfoDoesRotate = (1L << 15), /* codec can rotate on decompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
596 codecInfoDoesHorizFlip = (1L << 16), /* codec can flip horizontally on decompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
597 codecInfoDoesVertFlip = (1L << 17), /* codec can flip vertically on decompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
598 codecInfoHasEffectParameterList = (1L << 18), /* codec implements get effects parameter list call, once was codecInfoDoesSkew */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
599 codecInfoDoesBlend = (1L << 19), /* codec can blend on decompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
600 codecInfoDoesWarp = (1L << 20), /* codec can warp arbitrarily on decompress */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
601 codecInfoDoesRecompress = (1L << 21), /* codec can recompress image without accumulating errors */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
602 codecInfoDoesSpool = (1L << 22), /* codec can spool image data */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
603 codecInfoDoesRateConstrain = (1L << 23) /* codec can data rate constrain */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
604 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
605
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
606
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
607 enum {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
608 codecInfoDepth1 = (1L << 0), /* compressed data at 1 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
609 codecInfoDepth2 = (1L << 1), /* compressed data at 2 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
610 codecInfoDepth4 = (1L << 2), /* compressed data at 4 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
611 codecInfoDepth8 = (1L << 3), /* compressed data at 8 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
612 codecInfoDepth16 = (1L << 4), /* compressed data at 16 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
613 codecInfoDepth32 = (1L << 5), /* compressed data at 32 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
614 codecInfoDepth24 = (1L << 6), /* compressed data at 24 bpp depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
615 codecInfoDepth33 = (1L << 7), /* compressed data at 1 bpp monochrome depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
616 codecInfoDepth34 = (1L << 8), /* compressed data at 2 bpp grayscale depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
617 codecInfoDepth36 = (1L << 9), /* compressed data at 4 bpp grayscale depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
618 codecInfoDepth40 = (1L << 10), /* compressed data at 8 bpp grayscale depth available */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
619 codecInfoStoresClut = (1L << 11), /* compressed data can have custom cluts */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
620 codecInfoDoesLossless = (1L << 12), /* compressed data can be stored in lossless format */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
621 codecInfoSequenceSensitive = (1L << 13) /* compressed data is sensitive to out of sequence decoding */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
622 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
623
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
624 struct __attribute__((__packed__)) CodecInfo {
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
625 Str31 typeName; /* name of the codec type i.e.: 'Apple Image Compression' */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
626 short version; /* version of the codec data that this codec knows about */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
627 short revisionLevel; /* revision level of this codec i.e: 0x00010001 (1.0.1) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
628 long vendor; /* Maker of this codec i.e: 'appl' */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
629 long decompressFlags; /* codecInfo flags for decompression capabilities */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
630 long compressFlags; /* codecInfo flags for compression capabilities */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
631 long formatFlags; /* codecInfo flags for compression format details */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
632 UInt8 compressionAccuracy; /* measure (1-255) of accuracy of this codec for compress (0 if unknown) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
633 UInt8 decompressionAccuracy; /* measure (1-255) of accuracy of this codec for decompress (0 if unknown) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
634 unsigned short compressionSpeed; /* ( millisecs for compressing 320x240 on base mac II) (0 if unknown) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
635 unsigned short decompressionSpeed; /* ( millisecs for decompressing 320x240 on mac II)(0 if unknown) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
636 UInt8 compressionLevel; /* measure (1-255) of compression level of this codec (0 if unknown) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
637 UInt8 resvd; /* pad */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
638 short minimumHeight; /* minimum height of image (block size) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
639 short minimumWidth; /* minimum width of image (block size) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
640 short decompressPipelineLatency; /* in milliseconds ( for asynchronous codecs ) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
641 short compressPipelineLatency; /* in milliseconds ( for asynchronous codecs ) */
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
642 long privateData;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
643 };
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
644 typedef struct CodecInfo CodecInfo;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
645
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
646 static inline void dump_ImageDescription(void* xxx){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
647 ImageDescription* id=(ImageDescription*)xxx;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
648 unsigned char* x;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
649 int i;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
650
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
651 for(i=0;i<id->idSize;i++){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
652 printf(" %02X",((unsigned char*)id)[i]);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
653 if((i%16)==15) printf("\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
654 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
655 printf("\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
656
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
657
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
658 printf("=============== ImageDescription at %p ==================\n",xxx);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
659 printf("idSize=0x%X fourcc=0x%08X\n",id->idSize,id->cType);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
660 printf("ver=%d rev=%d vendor=0x%08X\n",id->version,id->revisionLevel,id->vendor);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
661 printf("tempQ=%d spatQ=%d dim: %d x %d dpi: %d x %d depth: %d\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
662 id->temporalQuality,id->spatialQuality,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
663 id->width, id->height,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
664 id->hRes, id->vRes,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
665 id->depth);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
666 printf("dataSize=%d frameCount=%d clutID=%d\n",id->dataSize, id->frameCount, id->clutID);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
667 printf("name='%.*s'\n",((char*)(&id->name))[0],((char*)(&id->name))+1);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
668 x=((char*)(&id->clutID))+2;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
669 if(id->idSize>sizeof(ImageDescription)){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
670 printf("%02X %02X %02X %02X | %02X %02X %02X %02X | %02X %02X %02X %02X | %02X %02X %02X %02X\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
671 x[0],x[1],x[2],x[3],x[4],x[5],x[6],x[7],x[8],x[9],x[10],x[11],x[12],x[13],x[14],x[15]);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
672 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
673 printf("=========================================================\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
674 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
675
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
676 static inline void dump_Rect(char* title,Rect *r){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
677 printf("%s: %d;%d - %d;%d\n",title,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
678 (int)r->top,(int)r->left,(int)r->bottom,(int)r->right);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
679 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
680
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
681 static inline void dump_MatrixRecord(char* title, MatrixRecord *m){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
682 printf("%s: [%d %d %d][%d %d %d][%d %d %d]\n",title,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
683 m->matrix[0][0],m->matrix[0][1],m->matrix[0][2],
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
684 m->matrix[1][0],m->matrix[1][1],m->matrix[1][2],
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
685 m->matrix[2][0],m->matrix[2][1],m->matrix[2][2]);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
686 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
687
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
688 static inline void dump_PixMap(void* xxx){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
689 PixMap *p=xxx;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
690 printf("=============== PixMap at %p ==================\n",xxx);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
691 printf("base=%p stride=%d\n",p->baseAddr, p->rowBytes);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
692 dump_Rect("bounds",&p->bounds);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
693 printf("pmVersion=0x%X packType=0x%X\n packSize=0x%X\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
694 p->pmVersion,p->packType, p->packSize);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
695 printf("hRes=0x%X vRes=0x%X pixelType=0x%X pixelSize=0x%X\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
696 p->hRes,p->vRes,p->pixelType,p->pixelSize);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
697 printf("cmpCount=0x%X cmpSize=0x%X pixelFormat=0x%X\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
698 p->cmpCount,p->cmpSize,p->pixelFormat);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
699 printf("pmTable=%p pmExt=%p\n",p->pmTable,p->pmExt);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
700 printf("=========================================================\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
701 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
702
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
703 static inline void dump_CodecCapabilities(void* xxx){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
704 CodecCapabilities* cc=xxx;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
705 if(!xxx) return;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
706 printf("=============== CodecCapabilities at %p =================\n",xxx);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
707 printf("flags=0x%X flags2=0x%X\n",cc->flags,cc->flags2);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
708 printf("wantedPixelSize=%d extendWidth=%d extendHeight=%d band=%d+%d\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
709 cc->wantedPixelSize,cc->extendWidth,cc->extendHeight,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
710 cc->bandMin,cc->bandInc);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
711 printf("pad=0x%X time=0x%X\n",cc->pad,cc->time);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
712 printf("=========================================================\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
713 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
714
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
715 static inline void dump_CodecDecompressParams(void* xxx){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
716 CodecDecompressParams* cd=xxx;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
717 ImageDescription **idh;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
718 int i;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
719 if(!xxx) return;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
720 printf("=============== CodecDecompressParams at %p ==================\n",xxx);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
721 printf("sequenceID=%d\n",cd->sequenceID);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
722 idh=cd->imageDescription;
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
723 if(idh && idh[0]) dump_ImageDescription(idh[0]);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
724
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
725 for(i=0;i<sizeof(CodecDecompressParams);i++){
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
726 printf(" %02X",((unsigned char*)cd)[i]);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
727 if((i%16)==15) printf("\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
728 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
729 printf("\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
730
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
731 printf("data=%p size=%d\n",cd->data,cd->bufferSize);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
732 printf("frameno=%d lines: %d .. %d condflags=0x%X callerflags=0x%X\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
733 cd->frameNumber, cd->startLine, cd->stopLine, cd->conditionFlags,cd->callerFlags);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
734 // printf("maskBits=%p mattePixMap=%p\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
735 // cd->maskBits,cd->mattePixMap);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
736 // dump_PixMap(&cd->dstPixMap);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
737 // if(cd->mattePixMap) dump_PixMap(cd->mattePixMap);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
738 // dump_MatrixRecord("matrix",cd->matrix);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
739 printf("accuracy=%d transferMode=%d matrixFlags=0x%X matrixType=%d\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
740 (int)cd->accuracy, (int)cd->transferMode, (int)cd->matrixFlags, (int)cd->matrixType);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
741 printf("srcrect: %d;%d - %d;%d\n",cd->srcRect.top,cd->srcRect.left,cd->srcRect.bottom,cd->srcRect.right);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
742 printf("dstrect: %d;%d - %d;%d\n",cd->dstRect.top,cd->dstRect.left,cd->dstRect.bottom,cd->dstRect.right);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
743 printf("wantedDestinationPixelTypes=%p\n",cd->wantedDestinationPixelTypes);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
744 printf("screenFloodMethod=%d value=%d preferredOffscreenPixelSize=%d\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
745 cd->screenFloodMethod, cd->screenFloodValue, cd->preferredOffscreenPixelSize);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
746 printf("callbacks: progress=%p compl=%p data=%p ftime=%p srcdata=%p sync=%p\n",
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
747 cd->progressProcRecord, cd->completionProcRecord,
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
748 cd->dataProcRecord, cd->frameTime, cd->sourceData, cd->syncFrameTime);
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
749 // printf("\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
750
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
751 printf("=========================================================\n");
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
752
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
753
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
754 }
66d165a5c6b5 minimalist quicktime video structures header
arpi
parents:
diff changeset
755