3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2003 Robert Shearman
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright (C) 2008 Maarten Lankhorst
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* All definitions here are packed structures of on-disk formats */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <pshpack2.h>
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _riffchunk
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} RIFFCHUNK, * LPRIFFCHUNK;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _rifflist
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fccListType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} RIFFLIST, * LPRIFFLIST;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define FCC( ch0, ch1, ch2, ch3 ) \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define RIFFROUND(cb) ((cb) + ((cb)&1))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk)+sizeof(RIFFCHUNK)+RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* flags for dwFlags member of AVIMAINHEADER */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIF_HASINDEX 0x00000010
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIF_MUSTUSEINDEX 0x00000020
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIF_ISINTERLEAVED 0x00000100
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIF_TRUSTCKTYPE 0x00000800
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIF_WASCAPTUREFILE 0x00010000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIF_COPYRIGHTED 0x00020000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidMAINAVIHEADER FCC('a','v','i','h')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avimainheader
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwMicroSecPerFrame;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwMaxBytesPerSec;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwPaddingGranularity;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwFlags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwTotalFrames;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwInitialFrames;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwStreams;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSuggestedBufferSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwWidth;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwHeight;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved[4];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVIMAINHEADER;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidODML FCC('o','d','m','l')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidAVIEXTHEADER FCC('d','m','l','h')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _aviextheader
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwGrandFrames;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwFuture[61];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVIEXTHEADER;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidSTREAMLIST FCC('s','t','r','l')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* flags for dwFlags member of AVISTREAMHEADER */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVISF_DISABLED 0x00000001
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVISF_VIDEO_PALCHANGES 0x00010000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef ckidSTREAMHEADER
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidSTREAMHEADER FCC('s','t','r','h')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef streamtypeVIDEO
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define streamtypeVIDEO FCC('v','i','d','s')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define streamtypeAUDIO FCC('a','u','d','s')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define streamtypeMIDI FCC('m','i','d','s')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define streamtypeTEXT FCC('t','x','t','s')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avistreamheader
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fccType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fccHandler;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwFlags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wPriority;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLanguage;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwInitialFrames;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwScale;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwRate;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwStart;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwLength;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSuggestedBufferSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwQuality;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSampleSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync short int left;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync short int top;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync short int right;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync short int bottom;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } rcFrame;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVISTREAMHEADER;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#ifndef ckidSTREAMFORMAT
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidSTREAMFORMAT FCC('s','t','r','f')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#endif
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidAVIOLDINDEX FCC('i','d','x','1')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* flags for dwFlags member of _avioldindex_entry */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIIF_LIST 0x00000001
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIIF_KEYFRAME 0x00000010
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIIF_NO_TIME 0x00000100
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVIIF_COMPRESSOR 0x0FFF0000
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avioldindex
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct _avioldindex_entry
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwFlags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVIOLDINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef union _timecode
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wFrameRate;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wFrameFract;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LONG cFrames;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } DUMMYSTRUCTNAME;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORDLONG qw;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} TIMECODE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TIMECODE_RATE_30DROP 0
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* flags for dwSMPTEflags member of TIMECODEDATA */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TIMECODE_SMPTE_BINARY_GROUP 0x07
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define TIMECODE_SMPTE_COLOR_FRAME 0x08
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _timecodedata
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TIMECODE time;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSMPTEflags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwUser;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} TIMECODEDATA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_OF_INDEXES 0x00
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_OF_CHUNKS 0x01
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_OF_TIMED_CHUNKS 0x02
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_OF_SUB_2FIELD 0x03
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_IS_DATA 0x80
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_SUB_DEFAULT 0x00
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVI_INDEX_SUB_2FIELD 0x01
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avimetaindex
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD adwIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVIMETAINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define ckidAVISUPERINDEX FCC('i','n','d','x')
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avisuperindex {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct _avisuperindex_entry {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORDLONG qwOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwDuration;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVISUPERINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVISTDINDEX_DELTAFRAME (0x80000000)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVISTDINDEX_SIZEMASK (~0x80000000)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avistdindex_entry {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVISTDINDEX_ENTRY;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avistdindex {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORDLONG qwBaseOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved_3;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AVISTDINDEX_ENTRY aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVISTDINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitimedindex_entry {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwDuration;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITIMEDINDEX_ENTRY;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitimedindex {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORDLONG qwBaseOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved_3;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AVITIMEDINDEX_ENTRY aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITIMEDINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitimecodeindex {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TIMECODEDATA aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITIMECODEINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitcdlindex_entryA {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwTick;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TIMECODE time;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSMPTEflags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwUser;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync CHAR szReelId[12];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITCDLINDEX_ENTRYA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitcdlindex_entryW {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwTick;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync TIMECODE time;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSMPTEflags;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwUser;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WCHAR szReelId[12];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITCDLINDEX_ENTRYW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitcdlindexA {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AVITCDLINDEX_ENTRYA aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITCDLINDEXA;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avitcdlindexW {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync UINT cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved[3];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync AVITCDLINDEX_ENTRYW aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* DWORD adwTrailingFill[ANYSIZE_ARRAY]; */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVITCDLINDEXW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVITCDLINDEX_ENTRY WINELIB_NAME_AW(AVITCDLINDEX_ENTRY)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define AVITCDLINDEX WINELIB_NAME_AW(AVITCDLINDEX)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _avifieldindex_chunk {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync FOURCC fcc;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cb;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WORD wLongsPerEntry;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexSubType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync BYTE bIndexType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD nEntriesInUse;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwChunkId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORDLONG qwBaseOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwReserved3;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync struct _avifieldindex_entry {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwOffset;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwSize;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwOffsetField2;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync } aIndex[ANYSIZE_ARRAY];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} AVIFIELDINDEX, * PAVIFIELDINDEX;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#include <poppack.h>