1 #ifndef __MMIO
2 #define __MMIO 1
3 
4 typedef unsigned long DWORD;
5 typedef unsigned short WORD;
6 typedef unsigned char BYTE;
7 
8 #ifndef mmioFOURCC
9 #define mmioFOURCC( ch0, ch1, ch2, ch3 )				\
10 		( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) |	\
11 		( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) )
12 #endif
13 
14 #define FOURCC DWORD
15 
16 typedef struct
17 {
18     WORD  left;
19     WORD  top;
20     WORD  right;
21     WORD  bottom;
22 } RECT, LPRECT;
23 
24 #ifndef _WAVEFORMATEX_
25 #define _WAVEFORMATEX_
26 typedef struct __attribute__((__packed__)) _WAVEFORMATEX {
27   WORD   wFormatTag;
28   WORD   nChannels;
29   DWORD  nSamplesPerSec;
30   DWORD  nAvgBytesPerSec;
31   WORD   nBlockAlign;
32   WORD   wBitsPerSample;
33   WORD   cbSize;
34 } WAVEFORMATEX, *PWAVEFORMATEX, *NPWAVEFORMATEX, *LPWAVEFORMATEX;
35 #endif /* _WAVEFORMATEX_ */
36 
37 #ifndef _BITMAPINFOHEADER_
38 #define _BITMAPINFOHEADER_
39 typedef struct __attribute__((__packed__))
40 {
41     int 	biSize;
42     int  	biWidth;
43     int  	biHeight;
44     short 	biPlanes;
45     short 	biBitCount;
46     int 	biCompression;
47     int 	biSizeImage;
48     int  	biXPelsPerMeter;
49     int  	biYPelsPerMeter;
50     int 	biClrUsed;
51     int 	biClrImportant;
52 } BITMAPINFOHEADER, *PBITMAPINFOHEADER, *LPBITMAPINFOHEADER;
53 #endif
54 
55 /* this macro helps print FOURCC */
56 #define INT_2_CHAR_ARG(i)\
57 ,((char *)&i)[0]?((char *)&i)[0]:' '\
58 ,((char *)&i)[1]?((char *)&i)[1]:' '\
59 ,((char *)&i)[2]?((char *)&i)[2]:' '\
60 ,((char *)&i)[3]?((char *)&i)[3]:' '
61 
62 typedef struct
63 {
64     unsigned short wTag;
65     const char *name;
66 }wTagNames;
67 extern wTagNames wtagNames[];
68 extern const char *wtag_find_name(unsigned short wtag);
69 
70 #endif
71