ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

aviriff.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.