123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- #ifndef PAL_RIFF_H
- #define PAL_RIFF_H
- #include <stdint.h>
- typedef struct RIFFHeader
- {
- uint32_t signature; /* 'RIFF' */
- uint32_t length; /* Total length minus eight, little-endian */
- uint32_t type; /* 'WAVE', 'AVI ', ... */
- } RIFFHeader;
- typedef struct RIFFChunkHeader
- {
- uint32_t type; /* 'fmt ', 'hdrl', 'movi' and so on */
- uint32_t length; /* Total chunk length minus eight, little-endian */
- } RIFFChunkHeader;
- typedef struct RIFFChunk
- {
- RIFFChunkHeader header;
- uint8_t data[1];
- } RIFFChunk;
- typedef struct RIFFListHeader
- {
- uint32_t signature; /* 'LIST' */
- uint32_t length; /* Total list length minus eight, little-endian */
- uint32_t type; /* 'fmt ', 'hdrl', 'movi' and so on */
- } RIFFListHeader;
- typedef union RIFFBlockHeader
- {
- struct {
- uint32_t type;
- uint32_t length;
- };
- RIFFChunkHeader chunk;
- RIFFListHeader list;
- } RIFFBlockHeader;
- typedef struct WAVEFormatPCM
- {
- uint16_t wFormatTag; /* format type */
- uint16_t nChannels; /* number of channels (i.e. mono, stereo, etc.) */
- uint32_t nSamplesPerSec; /* sample rate */
- uint32_t nAvgBytesPerSec; /* for buffer estimation */
- uint16_t nBlockAlign; /* block size of data */
- uint16_t wBitsPerSample;
- } WAVEFormatPCM;
- typedef struct WAVEFormatEx
- {
- WAVEFormatPCM format;
- uint16_t cbSize;
- } WAVEFormatEx;
- typedef struct AVIMainHeader
- {
- uint32_t dwMicroSecPerFrame; // frame display rate (or 0)
- uint32_t dwMaxBytesPerSec; // max. transfer rate
- uint32_t dwPaddingGranularity; // pad to multiples of this size
- #define AVIF_HASINDEX 0x00000010 // Index at end of file?
- #define AVIF_MUSTUSEINDEX 0x00000020
- #define AVIF_ISINTERLEAVED 0x00000100
- uint32_t dwFlags; // the ever-present flags
- uint32_t dwTotalFrames; // # frames in file
- uint32_t dwInitialFrames;
- uint32_t dwStreams;
- uint32_t dwSuggestedBufferSize;
- uint32_t dwWidth;
- uint32_t dwHeight;
- uint32_t dwReserved[4];
- } AVIMainHeader;
- typedef struct AVIStreamHeader
- {
- uint32_t fccType;
- uint32_t fccHandler;
- uint32_t dwFlags;
- uint16_t wPriority;
- uint16_t wLanguage;
- uint32_t dwInitialFrames;
- uint32_t dwScale;
- uint32_t dwRate; /* dwRate / dwScale == samples/second */
- uint32_t dwStart;
- uint32_t dwLength; /* In units above... */
- uint32_t dwSuggestedBufferSize;
- uint32_t dwQuality;
- uint32_t dwSampleSize;
- uint16_t rcFrame[4];
- } AVIStreamHeader;
- typedef struct BitmapInfoHeader
- {
- uint32_t biSize;
- uint32_t biWidth;
- uint32_t biHeight;
- uint16_t biPlanes;
- uint16_t biBitCount;
- uint32_t biCompression;
- uint32_t biSizeImage;
- uint32_t biXPelsPerMeter;
- uint32_t biYPelsPerMeter;
- uint32_t biClrUsed;
- uint32_t biClrImportant;
- } BitmapInfoHeader;
- #define RIFF_RIFF (((uint32_t)'R') | (((uint32_t)'I') << 8) | (((uint32_t)'F') << 16) | (((uint32_t)'F') << 24))
- #define RIFF_WAVE (((uint32_t)'W') | (((uint32_t)'A') << 8) | (((uint32_t)'V') << 16) | (((uint32_t)'E') << 24))
- #define WAVE_fmt (((uint32_t)'f') | (((uint32_t)'m') << 8) | (((uint32_t)'t') << 16) | (((uint32_t)' ') << 24))
- #define WAVE_data (((uint32_t)'d') | (((uint32_t)'a') << 8) | (((uint32_t)'t') << 16) | (((uint32_t)'a') << 24))
- #define RIFF_AVI (((uint32_t)'A') | (((uint32_t)'V') << 8) | (((uint32_t)'I') << 16) | (((uint32_t)' ') << 24))
- #define AVI_hdrl (((uint32_t)'h') | (((uint32_t)'d') << 8) | (((uint32_t)'r') << 16) | (((uint32_t)'l') << 24))
- #define AVI_strl (((uint32_t)'s') | (((uint32_t)'t') << 8) | (((uint32_t)'r') << 16) | (((uint32_t)'l') << 24))
- #define AVI_strh (((uint32_t)'s') | (((uint32_t)'t') << 8) | (((uint32_t)'r') << 16) | (((uint32_t)'h') << 24))
- #define AVI_strf (((uint32_t)'s') | (((uint32_t)'t') << 8) | (((uint32_t)'r') << 16) | (((uint32_t)'f') << 24))
- #define AVI_avih (((uint32_t)'a') | (((uint32_t)'v') << 8) | (((uint32_t)'i') << 16) | (((uint32_t)'h') << 24))
- #define AVI_LIST (((uint32_t)'L') | (((uint32_t)'I') << 8) | (((uint32_t)'S') << 16) | (((uint32_t)'T') << 24))
- #define AVI_movi (((uint32_t)'m') | (((uint32_t)'o') << 8) | (((uint32_t)'v') << 16) | (((uint32_t)'i') << 24))
- #define AVI_01wb (((uint32_t)'0') | (((uint32_t)'1') << 8) | (((uint32_t)'w') << 16) | (((uint32_t)'b') << 24))
- #define AVI_00dc (((uint32_t)'0') | (((uint32_t)'0') << 8) | (((uint32_t)'d') << 16) | (((uint32_t)'c') << 24))
- #define AVI_00db (((uint32_t)'0') | (((uint32_t)'0') << 8) | (((uint32_t)'d') << 16) | (((uint32_t)'b') << 24))
- #define AVI_rec (((uint32_t)'r') | (((uint32_t)'e') << 8) | (((uint32_t)'c') << 16) | (((uint32_t)' ') << 24))
- #define AVI_JUNK (((uint32_t)'J') | (((uint32_t)'U') << 8) | (((uint32_t)'N') << 16) | (((uint32_t)'K') << 24))
- #define AVI_vids (((uint32_t)'v') | (((uint32_t)'i') << 8) | (((uint32_t)'d') << 16) | (((uint32_t)'s') << 24))
- #define AVI_auds (((uint32_t)'a') | (((uint32_t)'u') << 8) | (((uint32_t)'d') << 16) | (((uint32_t)'s') << 24))
- #define VIDS_MSVC (((uint32_t)'M') | (((uint32_t)'S') << 8) | (((uint32_t)'V') << 16) | (((uint32_t)'C') << 24))
- #define VIDS_msvc (((uint32_t)'m') | (((uint32_t)'s') << 8) | (((uint32_t)'v') << 16) | (((uint32_t)'c') << 24))
- #endif
|