1343
|
1 #ifndef _aviheader_h
|
|
2 #define _aviheader_h
|
|
3
|
|
4 #include "config.h" /* get correct definition WORDS_BIGENDIAN */
|
|
5 #include "bswap.h"
|
|
6
|
|
7 /*
|
|
8 * Some macros to swap little endian structures read from an AVI file
|
|
9 * into machine endian format
|
|
10 */
|
|
11 #ifdef WORDS_BIGENDIAN
|
|
12 #define le2me_MainAVIHeader(h) { \
|
|
13 (h)->dwMicroSecPerFrame = le2me_32((h)->dwMicroSecPerFrame); \
|
|
14 (h)->dwMaxBytesPerSec = le2me_32((h)->dwMaxBytesPerSec); \
|
|
15 (h)->dwPaddingGranularity = le2me_32((h)->dwPaddingGranularity); \
|
|
16 (h)->dwFlags = le2me_32((h)->dwFlags); \
|
|
17 (h)->dwTotalFrames = le2me_32((h)->dwTotalFrames); \
|
|
18 (h)->dwInitialFrames = le2me_32((h)->dwInitialFrames); \
|
|
19 (h)->dwStreams = le2me_32((h)->dwStreams); \
|
|
20 (h)->dwSuggestedBufferSize = le2me_32((h)->dwSuggestedBufferSize); \
|
|
21 (h)->dwWidth = le2me_32((h)->dwWidth); \
|
|
22 (h)->dwHeight = le2me_32((h)->dwHeight); \
|
|
23 }
|
|
24
|
|
25 #define le2me_AVIStreamHeader(h) { \
|
|
26 (h)->fccType = le2me_32((h)->fccType); \
|
|
27 (h)->fccHandler = le2me_32((h)->fccHandler); \
|
|
28 (h)->dwFlags = le2me_32((h)->dwFlags); \
|
|
29 (h)->wPriority = le2me_16((h)->wPriority); \
|
|
30 (h)->wLanguage = le2me_16((h)->wLanguage); \
|
|
31 (h)->dwInitialFrames = le2me_32((h)->dwInitialFrames); \
|
|
32 (h)->dwScale = le2me_32((h)->dwScale); \
|
|
33 (h)->dwRate = le2me_32((h)->dwRate); \
|
|
34 (h)->dwStart = le2me_32((h)->dwStart); \
|
|
35 (h)->dwLength = le2me_32((h)->dwLength); \
|
|
36 (h)->dwSuggestedBufferSize = le2me_32((h)->dwSuggestedBufferSize); \
|
|
37 (h)->dwQuality = le2me_32((h)->dwQuality); \
|
|
38 (h)->dwSampleSize = le2me_32((h)->dwSampleSize); \
|
|
39 le2me_RECT(&(h)->rcFrame); \
|
|
40 }
|
|
41 #define le2me_RECT(h) { \
|
|
42 (h)->left = le2me_16((h)->left); \
|
|
43 (h)->top = le2me_16((h)->top); \
|
|
44 (h)->right = le2me_16((h)->right); \
|
|
45 (h)->bottom = le2me_16((h)->bottom); \
|
|
46 }
|
|
47 #define le2me_BITMAPINFOHEADER(h) { \
|
|
48 (h)->biSize = le2me_32((h)->biSize); \
|
|
49 (h)->biWidth = le2me_32((h)->biWidth); \
|
|
50 (h)->biHeight = le2me_32((h)->biHeight); \
|
|
51 (h)->biPlanes = le2me_16((h)->biPlanes); \
|
|
52 (h)->biBitCount = le2me_16((h)->biBitCount); \
|
|
53 (h)->biCompression = le2me_32((h)->biCompression); \
|
|
54 (h)->biSizeImage = le2me_32((h)->biSizeImage); \
|
|
55 (h)->biXPelsPerMeter = le2me_32((h)->biXPelsPerMeter); \
|
|
56 (h)->biYPelsPerMeter = le2me_32((h)->biYPelsPerMeter); \
|
|
57 (h)->biClrUsed = le2me_32((h)->biClrUsed); \
|
|
58 (h)->biClrImportant = le2me_32((h)->biClrImportant); \
|
|
59 }
|
|
60 #define le2me_WAVEFORMATEX(h) { \
|
|
61 (h)->wFormatTag = le2me_16((h)->wFormatTag); \
|
|
62 (h)->nChannels = le2me_16((h)->nChannels); \
|
|
63 (h)->nSamplesPerSec = le2me_32((h)->nSamplesPerSec); \
|
|
64 (h)->nAvgBytesPerSec = le2me_32((h)->nAvgBytesPerSec); \
|
|
65 (h)->nBlockAlign = le2me_16((h)->nBlockAlign); \
|
|
66 (h)->wBitsPerSample = le2me_16((h)->wBitsPerSample); \
|
|
67 (h)->cbSize = le2me_16((h)->cbSize); \
|
|
68 }
|
|
69 #define le2me_AVIINDEXENTRY(h) { \
|
|
70 (h)->ckid = le2me_32((h)->ckid); \
|
|
71 (h)->dwFlags = le2me_32((h)->dwFlags); \
|
|
72 (h)->dwChunkOffset = le2me_32((h)->dwChunkOffset); \
|
|
73 (h)->dwChunkLength = le2me_32((h)->dwChunkLength); \
|
|
74 }
|
|
75 #else
|
|
76 #define le2me_MainAVIHeader(h) /**/
|
|
77 #define le2me_AVIStreamHeader(h) /**/
|
|
78 #define le2me_RECT(h) /**/
|
|
79 #define le2me_BITMAPINFOHEADER(h) /**/
|
|
80 #define le2me_WAVEFORMATEX(h) /**/
|
|
81 #define le2me_AVIINDEXENTRY(h) /**/
|
|
82 #endif
|
|
83
|
|
84
|
|
85 #endif
|