00001
00002
00003
00004
00005
00006 #ifndef AVIFMT
00007 #define AVIFMT
00008
00009 #ifndef NOAVIFMT
00010
00011 #ifndef __WINE_WINDEF_H
00012 #include "wine/windef.h"
00013 #endif
00014
00015 #ifndef __WINE_MMSYSTEM_H
00016 #ifndef __WINE_MSACM_H
00017 typedef DWORD FOURCC;
00018 #endif
00019 #endif
00020
00021
00022 #ifdef _MSC_VER
00023 #pragma warning(disable:4200)
00024 #endif
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 #ifndef mmioFOURCC
00092 #define mmioFOURCC( ch0, ch1, ch2, ch3 ) \
00093 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
00094 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
00095 #endif
00096
00097
00098 #ifndef aviTWOCC
00099 #define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
00100 #endif
00101
00102 typedef WORD TWOCC;
00103
00104
00105 #define formtypeAVI mmioFOURCC('A', 'V', 'I', ' ')
00106 #define listtypeAVIHEADER mmioFOURCC('h', 'd', 'r', 'l')
00107 #define ckidAVIMAINHDR mmioFOURCC('a', 'v', 'i', 'h')
00108 #define listtypeSTREAMHEADER mmioFOURCC('s', 't', 'r', 'l')
00109 #define ckidSTREAMHEADER mmioFOURCC('s', 't', 'r', 'h')
00110 #define ckidSTREAMFORMAT mmioFOURCC('s', 't', 'r', 'f')
00111 #define ckidSTREAMHANDLERDATA mmioFOURCC('s', 't', 'r', 'd')
00112 #define ckidSTREAMNAME mmioFOURCC('s', 't', 'r', 'n')
00113
00114 #define listtypeAVIMOVIE mmioFOURCC('m', 'o', 'v', 'i')
00115 #define listtypeAVIRECORD mmioFOURCC('r', 'e', 'c', ' ')
00116
00117 #define ckidAVINEWINDEX mmioFOURCC('i', 'd', 'x', '1')
00118
00119
00120
00121
00122 #define streamtypeVIDEO mmioFOURCC('v', 'i', 'd', 's')
00123 #define streamtypeAUDIO mmioFOURCC('a', 'u', 'd', 's')
00124 #define streamtypeMIDI mmioFOURCC('m', 'i', 'd', 's')
00125 #define streamtypeTEXT mmioFOURCC('t', 'x', 't', 's')
00126
00127
00128 #define cktypeDIBbits aviTWOCC('d', 'b')
00129 #define cktypeDIBcompressed aviTWOCC('d', 'c')
00130 #define cktypePALchange aviTWOCC('p', 'c')
00131 #define cktypeWAVEbytes aviTWOCC('w', 'b')
00132
00133
00134 #define ckidAVIPADDING mmioFOURCC('J', 'U', 'N', 'K')
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144 #define FromHex(n) (((n) >= 'A') ? ((n) + 10 - 'A') : ((n) - '0'))
00145 #define StreamFromFOURCC(fcc) ((WORD) ((FromHex(LOBYTE(LOWORD(fcc))) << 4) + \
00146 (FromHex(HIBYTE(LOWORD(fcc))))))
00147
00148
00149 #define TWOCCFromFOURCC(fcc) HIWORD(fcc)
00150
00151
00152
00153
00154 #define ToHex(n) ((BYTE) (((n) > 9) ? ((n) - 10 + 'A') : ((n) + '0')))
00155 #define MAKEAVICKID(tcc, stream) \
00156 MAKELONG((ToHex((stream) & 0x0f) << 8) | \
00157 (ToHex(((stream) & 0xf0) >> 4)), tcc)
00158
00159
00160
00161
00162
00163
00164 #define AVIF_HASINDEX 0x00000010 // Index at end of file?
00165 #define AVIF_MUSTUSEINDEX 0x00000020
00166 #define AVIF_ISINTERLEAVED 0x00000100
00167 #define AVIF_TRUSTCKTYPE 0x00000800 // Use CKType to find key frames?
00168 #define AVIF_WASCAPTUREFILE 0x00010000
00169 #define AVIF_COPYRIGHTED 0x00020000
00170
00171
00172 #define AVI_HEADERSIZE 2048 // size of AVI header list
00173
00174 typedef struct
00175 {
00176 DWORD dwMicroSecPerFrame;
00177 DWORD dwMaxBytesPerSec;
00178 DWORD dwPaddingGranularity;
00179
00180 DWORD dwFlags;
00181 DWORD dwTotalFrames;
00182 DWORD dwInitialFrames;
00183 DWORD dwStreams;
00184 DWORD dwSuggestedBufferSize;
00185
00186 DWORD dwWidth;
00187 DWORD dwHeight;
00188
00189 DWORD dwReserved[4];
00190 } MainAVIHeader;
00191
00192
00193
00194
00195
00196 #define AVISF_DISABLED 0x00000001
00197
00198 #define AVISF_VIDEO_PALCHANGES 0x00010000
00199
00200
00201 typedef struct {
00202 FOURCC fccType;
00203 FOURCC fccHandler;
00204 DWORD dwFlags;
00205 WORD wPriority;
00206 WORD wLanguage;
00207 DWORD dwInitialFrames;
00208 DWORD dwScale;
00209 DWORD dwRate;
00210 DWORD dwStart;
00211 DWORD dwLength;
00212 DWORD dwSuggestedBufferSize;
00213 DWORD dwQuality;
00214 DWORD dwSampleSize;
00215 RECT rcFrame;
00216 } AVIStreamHeader;
00217
00218
00219 #define AVIIF_LIST 0x00000001L // chunk is a 'LIST'
00220 #define AVIIF_KEYFRAME 0x00000010L // this frame is a key frame.
00221
00222 #define AVIIF_NOTIME 0x00000100L // this frame doesn't take any time
00223 #define AVIIF_COMPUSE 0x0FFF0000L // these bits are for compressor use
00224
00225 #define FOURCC_RIFF mmioFOURCC('R', 'I', 'F', 'F')
00226 #define FOURCC_LIST mmioFOURCC('L', 'I', 'S', 'T')
00227
00228 typedef struct
00229 {
00230 DWORD ckid;
00231 DWORD dwFlags;
00232 DWORD dwChunkOffset;
00233 DWORD dwChunkLength;
00234 } AVIINDEXENTRY;
00235
00236 #define AVISTREAMREAD_CONVENIENT (-1L)
00237
00238
00239
00240
00241
00242
00243 #endif
00244 #endif