Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenaviriff.h
Go to the documentation of this file.
00001 /* 00002 * Copyright (C) 2003 Robert Shearman 00003 * Copyright (C) 2008 Maarten Lankhorst 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library; if not, write to the Free Software 00017 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 00018 */ 00019 00020 /* All definitions here are packed structures of on-disk formats */ 00021 #include <pshpack2.h> 00022 00023 typedef struct _riffchunk 00024 { 00025 FOURCC fcc; 00026 DWORD cb; 00027 } RIFFCHUNK, * LPRIFFCHUNK; 00028 00029 typedef struct _rifflist 00030 { 00031 FOURCC fcc; 00032 DWORD cb; 00033 FOURCC fccListType; 00034 } RIFFLIST, * LPRIFFLIST; 00035 00036 #define FCC( ch0, ch1, ch2, ch3 ) \ 00037 ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \ 00038 ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) ) 00039 00040 #define RIFFROUND(cb) ((cb) + ((cb)&1)) 00041 #define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb)) 00042 00043 /* flags for dwFlags member of AVIMAINHEADER */ 00044 #define AVIF_HASINDEX 0x00000010 00045 #define AVIF_MUSTUSEINDEX 0x00000020 00046 #define AVIF_ISINTERLEAVED 0x00000100 00047 #define AVIF_TRUSTCKTYPE 0x00000800 00048 #define AVIF_WASCAPTUREFILE 0x00010000 00049 #define AVIF_COPYRIGHTED 0x00020000 00050 00051 #define ckidMAINAVIHEADER FCC('a','v','i','h') 00052 typedef struct _avimainheader 00053 { 00054 FOURCC fcc; 00055 DWORD cb; 00056 DWORD dwMicroSecPerFrame; 00057 DWORD dwMaxBytesPerSec; 00058 DWORD dwPaddingGranularity; 00059 DWORD dwFlags; 00060 DWORD dwTotalFrames; 00061 DWORD dwInitialFrames; 00062 DWORD dwStreams; 00063 DWORD dwSuggestedBufferSize; 00064 DWORD dwWidth; 00065 DWORD dwHeight; 00066 DWORD dwReserved[4]; 00067 } AVIMAINHEADER; 00068 00069 #define ckidODML FCC('o','d','m','l') 00070 #define ckidAVIEXTHEADER FCC('d','m','l','h') 00071 typedef struct _aviextheader 00072 { 00073 FOURCC fcc; 00074 DWORD cb; 00075 DWORD dwGrandFrames; 00076 DWORD dwFuture[61]; 00077 } AVIEXTHEADER; 00078 00079 #define ckidSTREAMLIST FCC('s','t','r','l') 00080 00081 /* flags for dwFlags member of AVISTREAMHEADER */ 00082 #define AVISF_DISABLED 0x00000001 00083 #define AVISF_VIDEO_PALCHANGES 0x00010000 00084 00085 #ifndef ckidSTREAMHEADER 00086 #define ckidSTREAMHEADER FCC('s','t','r','h') 00087 #endif 00088 00089 #ifndef streamtypeVIDEO 00090 #define streamtypeVIDEO FCC('v','i','d','s') 00091 #define streamtypeAUDIO FCC('a','u','d','s') 00092 #define streamtypeMIDI FCC('m','i','d','s') 00093 #define streamtypeTEXT FCC('t','x','t','s') 00094 #endif 00095 00096 typedef struct _avistreamheader 00097 { 00098 FOURCC fcc; 00099 DWORD cb; 00100 FOURCC fccType; 00101 FOURCC fccHandler; 00102 DWORD dwFlags; 00103 WORD wPriority; 00104 WORD wLanguage; 00105 DWORD dwInitialFrames; 00106 DWORD dwScale; 00107 DWORD dwRate; 00108 DWORD dwStart; 00109 DWORD dwLength; 00110 DWORD dwSuggestedBufferSize; 00111 DWORD dwQuality; 00112 DWORD dwSampleSize; 00113 struct 00114 { 00115 short int left; 00116 short int top; 00117 short int right; 00118 short int bottom; 00119 } rcFrame; 00120 } AVISTREAMHEADER; 00121 00122 #ifndef ckidSTREAMFORMAT 00123 #define ckidSTREAMFORMAT FCC('s','t','r','f') 00124 #endif 00125 #define ckidAVIOLDINDEX FCC('i','d','x','1') 00126 00127 /* flags for dwFlags member of _avioldindex_entry */ 00128 #define AVIIF_LIST 0x00000001 00129 #define AVIIF_KEYFRAME 0x00000010 00130 #define AVIIF_NO_TIME 0x00000100 00131 #define AVIIF_COMPRESSOR 0x0FFF0000 00132 00133 typedef struct _avioldindex 00134 { 00135 FOURCC fcc; 00136 DWORD cb; 00137 struct _avioldindex_entry 00138 { 00139 DWORD dwChunkId; 00140 DWORD dwFlags; 00141 DWORD dwOffset; 00142 DWORD dwSize; 00143 } aIndex[ANYSIZE_ARRAY]; 00144 } AVIOLDINDEX; 00145 00146 typedef union _timecode 00147 { 00148 struct 00149 { 00150 WORD wFrameRate; 00151 WORD wFrameFract; 00152 LONG cFrames; 00153 } DUMMYSTRUCTNAME; 00154 DWORDLONG qw; 00155 } TIMECODE; 00156 00157 #define TIMECODE_RATE_30DROP 0 00158 00159 /* flags for dwSMPTEflags member of TIMECODEDATA */ 00160 #define TIMECODE_SMPTE_BINARY_GROUP 0x07 00161 #define TIMECODE_SMPTE_COLOR_FRAME 0x08 00162 00163 typedef struct _timecodedata 00164 { 00165 TIMECODE time; 00166 DWORD dwSMPTEflags; 00167 DWORD dwUser; 00168 } TIMECODEDATA; 00169 00170 #define AVI_INDEX_OF_INDEXES 0x00 00171 #define AVI_INDEX_OF_CHUNKS 0x01 00172 #define AVI_INDEX_OF_TIMED_CHUNKS 0x02 00173 #define AVI_INDEX_OF_SUB_2FIELD 0x03 00174 #define AVI_INDEX_IS_DATA 0x80 00175 00176 #define AVI_INDEX_SUB_DEFAULT 0x00 00177 #define AVI_INDEX_SUB_2FIELD 0x01 00178 00179 typedef struct _avimetaindex 00180 { 00181 FOURCC fcc; 00182 UINT cb; 00183 WORD wLongsPerEntry; 00184 BYTE bIndexSubType; 00185 BYTE bIndexType; 00186 DWORD nEntriesInUse; 00187 DWORD dwChunkId; 00188 DWORD dwReserved[3]; 00189 DWORD adwIndex[ANYSIZE_ARRAY]; 00190 } AVIMETAINDEX; 00191 00192 #define ckidAVISUPERINDEX FCC('i','n','d','x') 00193 typedef struct _avisuperindex { 00194 FOURCC fcc; 00195 UINT cb; 00196 WORD wLongsPerEntry; 00197 BYTE bIndexSubType; 00198 BYTE bIndexType; 00199 DWORD nEntriesInUse; 00200 DWORD dwChunkId; 00201 DWORD dwReserved[3]; 00202 struct _avisuperindex_entry { 00203 DWORDLONG qwOffset; 00204 DWORD dwSize; 00205 DWORD dwDuration; 00206 } aIndex[ANYSIZE_ARRAY]; 00207 } AVISUPERINDEX; 00208 00209 #define AVISTDINDEX_DELTAFRAME (0x80000000) 00210 #define AVISTDINDEX_SIZEMASK (~0x80000000) 00211 00212 typedef struct _avistdindex_entry { 00213 DWORD dwOffset; 00214 DWORD dwSize; 00215 } AVISTDINDEX_ENTRY; 00216 00217 typedef struct _avistdindex { 00218 FOURCC fcc; 00219 UINT cb; 00220 WORD wLongsPerEntry; 00221 BYTE bIndexSubType; 00222 BYTE bIndexType; 00223 DWORD nEntriesInUse; 00224 DWORD dwChunkId; 00225 DWORDLONG qwBaseOffset; 00226 DWORD dwReserved_3; 00227 AVISTDINDEX_ENTRY aIndex[ANYSIZE_ARRAY]; 00228 } AVISTDINDEX; 00229 00230 typedef struct _avitimedindex_entry { 00231 DWORD dwOffset; 00232 DWORD dwSize; 00233 DWORD dwDuration; 00234 } AVITIMEDINDEX_ENTRY; 00235 00236 typedef struct _avitimedindex { 00237 FOURCC fcc; 00238 UINT cb; 00239 WORD wLongsPerEntry; 00240 BYTE bIndexSubType; 00241 BYTE bIndexType; 00242 DWORD nEntriesInUse; 00243 DWORD dwChunkId; 00244 DWORDLONG qwBaseOffset; 00245 DWORD dwReserved_3; 00246 AVITIMEDINDEX_ENTRY aIndex[ANYSIZE_ARRAY]; 00247 /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */ 00248 } AVITIMEDINDEX; 00249 00250 typedef struct _avitimecodeindex { 00251 FOURCC fcc; 00252 UINT cb; 00253 WORD wLongsPerEntry; 00254 BYTE bIndexSubType; 00255 BYTE bIndexType; 00256 DWORD nEntriesInUse; 00257 DWORD dwChunkId; 00258 DWORD dwReserved[3]; 00259 TIMECODEDATA aIndex[ANYSIZE_ARRAY]; 00260 } AVITIMECODEINDEX; 00261 00262 typedef struct _avitcdlindex_entryA { 00263 DWORD dwTick; 00264 TIMECODE time; 00265 DWORD dwSMPTEflags; 00266 DWORD dwUser; 00267 CHAR szReelId[12]; 00268 } AVITCDLINDEX_ENTRYA; 00269 00270 typedef struct _avitcdlindex_entryW { 00271 DWORD dwTick; 00272 TIMECODE time; 00273 DWORD dwSMPTEflags; 00274 DWORD dwUser; 00275 WCHAR szReelId[12]; 00276 } AVITCDLINDEX_ENTRYW; 00277 00278 typedef struct _avitcdlindexA { 00279 FOURCC fcc; 00280 UINT cb; 00281 WORD wLongsPerEntry; 00282 BYTE bIndexSubType; 00283 BYTE bIndexType; 00284 DWORD nEntriesInUse; 00285 DWORD dwChunkId; 00286 DWORD dwReserved[3]; 00287 AVITCDLINDEX_ENTRYA aIndex[ANYSIZE_ARRAY]; 00288 /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */ 00289 } AVITCDLINDEXA; 00290 00291 typedef struct _avitcdlindexW { 00292 FOURCC fcc; 00293 UINT cb; 00294 WORD wLongsPerEntry; 00295 BYTE bIndexSubType; 00296 BYTE bIndexType; 00297 DWORD nEntriesInUse; 00298 DWORD dwChunkId; 00299 DWORD dwReserved[3]; 00300 AVITCDLINDEX_ENTRYW aIndex[ANYSIZE_ARRAY]; 00301 /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */ 00302 } AVITCDLINDEXW; 00303 00304 #define AVITCDLINDEX_ENTRY WINELIB_NAME_AW(AVITCDLINDEX_ENTRY) 00305 #define AVITCDLINDEX WINELIB_NAME_AW(AVITCDLINDEX) 00306 00307 typedef struct _avifieldindex_chunk { 00308 FOURCC fcc; 00309 DWORD cb; 00310 WORD wLongsPerEntry; 00311 BYTE bIndexSubType; 00312 BYTE bIndexType; 00313 DWORD nEntriesInUse; 00314 DWORD dwChunkId; 00315 DWORDLONG qwBaseOffset; 00316 DWORD dwReserved3; 00317 struct _avifieldindex_entry { 00318 DWORD dwOffset; 00319 DWORD dwSize; 00320 DWORD dwOffsetField2; 00321 } aIndex[ANYSIZE_ARRAY]; 00322 } AVIFIELDINDEX, * PAVIFIELDINDEX; 00323 00324 #include <poppack.h> Generated on Fri May 25 2012 04:29:07 for ReactOS by
1.7.6.1
|