annotate loader/wine/avifmt.h @ 22463:979b2aa16e80

support for AMR; it works inserting in the first byte of the demux_packet a 1-byte header that live555 seems to be stripping for some reason, although according to the specs it should be there. Patch by Carl Eugen Hoyos.
author nicodvb
date Tue, 06 Mar 2007 22:53:52 +0000
parents 167342641f0b
children 93b87066f9da
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
1 /****************************************************************************
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
2 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
3 * AVIFMT - AVI file format definitions
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
4 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
5 ****************************************************************************/
16194
167342641f0b Remove stray MSDOS linebreaks
ivo
parents: 7386
diff changeset
6 #ifndef AVIFMT
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
7 #define AVIFMT
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
8
16194
167342641f0b Remove stray MSDOS linebreaks
ivo
parents: 7386
diff changeset
9 #ifndef NOAVIFMT
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
10
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
11 #ifndef __WINE_WINDEF_H
7386
174e2a58b4cd avifile sync - 95% cosmetics 5% bug
arpi
parents: 1
diff changeset
12 #include "wine/windef.h"
1
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
13 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
14
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
15 #ifndef __WINE_MMSYSTEM_H
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
16 #ifndef __WINE_MSACM_H
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
17 typedef DWORD FOURCC;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
18 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
19 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
20
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
21
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
22 #ifdef _MSC_VER
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
23 #pragma warning(disable:4200)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
24 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
25
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
26 /* The following is a short description of the AVI file format. Please
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
27 * see the accompanying documentation for a full explanation.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
28 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
29 * An AVI file is the following RIFF form:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
30 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
31 * RIFF('AVI'
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
32 * LIST('hdrl'
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
33 * avih(<MainAVIHeader>)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
34 * LIST ('strl'
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
35 * strh(<Stream header>)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
36 * strf(<Stream format>)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
37 * ... additional header data
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
38 * LIST('movi'
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
39 * { LIST('rec'
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
40 * SubChunk...
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
41 * )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
42 * | SubChunk } ....
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
43 * )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
44 * [ <AVIIndex> ]
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
45 * )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
46 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
47 * The main file header specifies how many streams are present. For
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
48 * each one, there must be a stream header chunk and a stream format
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
49 * chunk, enlosed in a 'strl' LIST chunk. The 'strf' chunk contains
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
50 * type-specific format information; for a video stream, this should
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
51 * be a BITMAPINFO structure, including palette. For an audio stream,
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
52 * this should be a WAVEFORMAT (or PCMWAVEFORMAT) structure.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
53 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
54 * The actual data is contained in subchunks within the 'movi' LIST
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
55 * chunk. The first two characters of each data chunk are the
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
56 * stream number with which that data is associated.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
57 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
58 * Some defined chunk types:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
59 * Video Streams:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
60 * ##db: RGB DIB bits
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
61 * ##dc: RLE8 compressed DIB bits
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
62 * ##pc: Palette Change
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
63 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
64 * Audio Streams:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
65 * ##wb: waveform audio bytes
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
66 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
67 * The grouping into LIST 'rec' chunks implies only that the contents of
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
68 * the chunk should be read into memory at the same time. This
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
69 * grouping is used for files specifically intended to be played from
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
70 * CD-ROM.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
71 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
72 * The index chunk at the end of the file should contain one entry for
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
73 * each data chunk in the file.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
74 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
75 * Limitations for the current software:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
76 * Only one video stream and one audio stream are allowed.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
77 * The streams must start at the beginning of the file.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
78 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
79 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
80 * To register codec types please obtain a copy of the Multimedia
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
81 * Developer Registration Kit from:
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
82 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
83 * Microsoft Corporation
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
84 * Multimedia Systems Group
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
85 * Product Marketing
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
86 * One Microsoft Way
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
87 * Redmond, WA 98052-6399
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
88 *
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
89 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
90
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
91 #ifndef mmioFOURCC
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
92 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
93 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
94 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
95 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
96
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
97 /* Macro to make a TWOCC out of two characters */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
98 #ifndef aviTWOCC
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
99 #define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
100 #endif
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
101
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
102 typedef WORD TWOCC;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
103
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
104 /* form types, list types, and chunk types */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
105 #define formtypeAVI mmioFOURCC('A', 'V', 'I', ' ')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
106 #define listtypeAVIHEADER mmioFOURCC('h', 'd', 'r', 'l')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
107 #define ckidAVIMAINHDR mmioFOURCC('a', 'v', 'i', 'h')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
108 #define listtypeSTREAMHEADER mmioFOURCC('s', 't', 'r', 'l')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
109 #define ckidSTREAMHEADER mmioFOURCC('s', 't', 'r', 'h')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
110 #define ckidSTREAMFORMAT mmioFOURCC('s', 't', 'r', 'f')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
111 #define ckidSTREAMHANDLERDATA mmioFOURCC('s', 't', 'r', 'd')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
112 #define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
113
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
114 #define listtypeAVIMOVIE mmioFOURCC('m', 'o', 'v', 'i')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
115 #define listtypeAVIRECORD mmioFOURCC('r', 'e', 'c', ' ')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
116
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
117 #define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
118
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
119 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
120 ** Stream types for the <fccType> field of the stream header.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
121 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
122 #define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
123 #define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
124 #define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
125 #define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
126
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
127 /* Basic chunk types */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
128 #define cktypeDIBbits aviTWOCC('d', 'b')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
129 #define cktypeDIBcompressed aviTWOCC('d', 'c')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
130 #define cktypePALchange aviTWOCC('p', 'c')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
131 #define cktypeWAVEbytes aviTWOCC('w', 'b')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
132
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
133 /* Chunk id to use for extra chunks for padding. */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
134 #define ckidAVIPADDING mmioFOURCC('J', 'U', 'N', 'K')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
135
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
136 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
137 ** Useful macros
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
138 **
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
139 ** Warning: These are nasty macro, and MS C 6.0 compiles some of them
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
140 ** incorrectly if optimizations are on. Ack.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
141 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
142
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
143 /* Macro to get stream number out of a FOURCC ckid */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
144 #define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
145 #define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
146 (FromHex(HIBYTE(LOWORD(fcc))))))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
147
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
148 /* Macro to get TWOCC chunk type out of a FOURCC ckid */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
149 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
150
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
151 /* Macro to make a ckid for a chunk out of a TWOCC and a stream number
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
152 ** from 0-255.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
153 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
154 #define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
155 #define MAKEAVICKID(tcc, stream) \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
156 MAKELONG((ToHex((stream) & 0x0f) << 8) | \
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
157 (ToHex(((stream) & 0xf0) >> 4)), tcc)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
158
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
159 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
160 ** Main AVI File Header
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
161 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
162
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
163 /* flags for use in <dwFlags> in AVIFileHdr */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
164 #define AVIF_HASINDEX 0x00000010 // Index at end of file?
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
165 #define AVIF_MUSTUSEINDEX 0x00000020
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
166 #define AVIF_ISINTERLEAVED 0x00000100
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
167 #define AVIF_TRUSTCKTYPE 0x00000800 // Use CKType to find key frames?
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
168 #define AVIF_WASCAPTUREFILE 0x00010000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
169 #define AVIF_COPYRIGHTED 0x00020000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
170
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
171 /* The AVI File Header LIST chunk should be padded to this size */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
172 #define AVI_HEADERSIZE 2048 // size of AVI header list
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
173
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
174 typedef struct
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
175 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
176 DWORD dwMicroSecPerFrame; // frame display rate (or 0L)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
177 DWORD dwMaxBytesPerSec; // max. transfer rate
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
178 DWORD dwPaddingGranularity; // pad to multiples of this
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
179 // size; normally 2K.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
180 DWORD dwFlags; // the ever-present flags
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
181 DWORD dwTotalFrames; // # frames in file
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
182 DWORD dwInitialFrames;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
183 DWORD dwStreams;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
184 DWORD dwSuggestedBufferSize;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
185
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
186 DWORD dwWidth;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
187 DWORD dwHeight;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
188
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
189 DWORD dwReserved[4];
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
190 } MainAVIHeader;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
191
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
192 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
193 ** Stream header
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
194 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
195
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
196 #define AVISF_DISABLED 0x00000001
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
197
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
198 #define AVISF_VIDEO_PALCHANGES 0x00010000
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
199
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
200
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
201 typedef struct {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
202 FOURCC fccType;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
203 FOURCC fccHandler;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
204 DWORD dwFlags; /* Contains AVITF_* flags */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
205 WORD wPriority;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
206 WORD wLanguage;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
207 DWORD dwInitialFrames;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
208 DWORD dwScale;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
209 DWORD dwRate; /* dwRate / dwScale == samples/second */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
210 DWORD dwStart;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
211 DWORD dwLength; /* In units above... */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
212 DWORD dwSuggestedBufferSize;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
213 DWORD dwQuality;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
214 DWORD dwSampleSize;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
215 RECT rcFrame;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
216 } AVIStreamHeader;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
217
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
218 /* Flags for index */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
219 #define AVIIF_LIST 0x00000001L // chunk is a 'LIST'
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
220 #define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
221
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
222 #define AVIIF_NOTIME 0x00000100L // this frame doesn't take any time
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
223 #define AVIIF_COMPUSE 0x0FFF0000L // these bits are for compressor use
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
224
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
225 #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
226 #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
227
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
228 typedef struct
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
229 {
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
230 DWORD ckid;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
231 DWORD dwFlags;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
232 DWORD dwChunkOffset; // Position of chunk
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
233 DWORD dwChunkLength; // Length of chunk
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
234 } AVIINDEXENTRY;
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
235
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
236 #define AVISTREAMREAD_CONVENIENT (-1L)
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
237
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
238 /*
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
239 ** Palette change chunk
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
240 **
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
241 ** Used in video streams.
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
242 */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
243 #endif /* NOAVIFMT */
3b5f5d1c5041 Initial revision
arpi_esp
parents:
diff changeset
244 #endif