2 * Copyright (c) 2002 Francois Gouget
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef WAVE_FORMAT_48M08
20 #define WAVE_FORMAT_48M08 0x00001000 /* 48 kHz, Mono, 8-bit */
21 #define WAVE_FORMAT_48S08 0x00002000 /* 48 kHz, Stereo, 8-bit */
22 #define WAVE_FORMAT_48M16 0x00004000 /* 48 kHz, Mono, 16-bit */
23 #define WAVE_FORMAT_48S16 0x00008000 /* 48 kHz, Stereo, 16-bit */
24 #define WAVE_FORMAT_96M08 0x00010000 /* 96 kHz, Mono, 8-bit */
25 #define WAVE_FORMAT_96S08 0x00020000 /* 96 kHz, Stereo, 8-bit */
26 #define WAVE_FORMAT_96M16 0x00040000 /* 96 kHz, Mono, 16-bit */
27 #define WAVE_FORMAT_96S16 0x00080000 /* 96 kHz, Stereo, 16-bit */
30 #ifndef DRV_QUERYDEVICEINTERFACE
31 #define DRV_QUERYDEVICEINTERFACE (DRV_RESERVED + 12)
33 #ifndef DRV_QUERYDEVICEINTERFACESIZE
34 #define DRV_QUERYDEVICEINTERFACESIZE (DRV_RESERVED + 13)
37 static const unsigned int win_formats
[][4] = {
42 {WAVE_FORMAT_1M08
, 11025, 8, 1},
43 {WAVE_FORMAT_1S08
, 11025, 8, 2},
44 {WAVE_FORMAT_1M16
, 11025, 16, 1},
45 {WAVE_FORMAT_1S16
, 11025, 16, 2},
54 {WAVE_FORMAT_2M08
, 22050, 8, 1},
55 {WAVE_FORMAT_2S08
, 22050, 8, 2},
56 {WAVE_FORMAT_2M16
, 22050, 16, 1},
57 {WAVE_FORMAT_2S16
, 22050, 16, 2},
58 {WAVE_FORMAT_4M08
, 44100, 8, 1},
59 {WAVE_FORMAT_4S08
, 44100, 8, 2},
60 {WAVE_FORMAT_4M16
, 44100, 16, 1},
61 {WAVE_FORMAT_4S16
, 44100, 16, 2},
62 {WAVE_FORMAT_48M08
, 48000, 8, 1},
63 {WAVE_FORMAT_48S08
, 48000, 8, 2},
64 {WAVE_FORMAT_48M16
, 48000, 16, 1},
65 {WAVE_FORMAT_48S16
, 48000, 16, 2},
66 {WAVE_FORMAT_96M08
, 96000, 8, 1},
67 {WAVE_FORMAT_96S08
, 96000, 8, 2},
68 {WAVE_FORMAT_96M16
, 96000, 16, 1},
69 {WAVE_FORMAT_96S16
, 96000, 16, 2}
71 #define NB_WIN_FORMATS (sizeof(win_formats)/sizeof(*win_formats))
73 extern const char* dev_name(int);
74 extern const char* wave_open_flags(DWORD
);
75 extern const char* mmsys_error(MMRESULT
);
76 extern const char* wave_out_error(MMRESULT
);
77 extern const char* get_format_str(WORD format
);
78 extern const char* wave_time_format(UINT type
);
79 extern DWORD
bytes_to_samples(DWORD bytes
, LPWAVEFORMATEX pwfx
);
80 extern DWORD
bytes_to_ms(DWORD bytes
, LPWAVEFORMATEX pwfx
);
81 extern DWORD
time_to_bytes(LPMMTIME mmtime
, LPWAVEFORMATEX pwfx
);