1 /* 2 * Copyright (c) 2002 Francois Gouget 3 * 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. 8 * 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. 13 * 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 17 */ 18 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 */ 28 #endif 29 30 #ifndef DRV_QUERYDEVICEINTERFACE 31 #define DRV_QUERYDEVICEINTERFACE (DRV_RESERVED + 12) 32 #endif 33 #ifndef DRV_QUERYDEVICEINTERFACESIZE 34 #define DRV_QUERYDEVICEINTERFACESIZE (DRV_RESERVED + 13) 35 #endif 36 37 static const unsigned int win_formats[][4] = { 38 {0, 8000, 8, 1}, 39 {0, 8000, 8, 2}, 40 {0, 8000, 16, 1}, 41 {0, 8000, 16, 2}, 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}, 46 {0, 12000, 8, 1}, 47 {0, 12000, 8, 2}, 48 {0, 12000, 16, 1}, 49 {0, 12000, 16, 2}, 50 {0, 16000, 8, 1}, 51 {0, 16000, 8, 2}, 52 {0, 16000, 16, 1}, 53 {0, 16000, 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} 70 }; 71 72 extern const char* dev_name(int); 73 extern const char* wave_open_flags(DWORD); 74 extern const char* mmsys_error(MMRESULT); 75 extern const char* wave_out_error(MMRESULT); 76 extern const char* get_format_str(WORD format); 77 extern const char* wave_time_format(UINT type); 78 extern DWORD bytes_to_samples(DWORD bytes, LPWAVEFORMATEX pwfx); 79 extern DWORD bytes_to_ms(DWORD bytes, LPWAVEFORMATEX pwfx); 80 extern DWORD time_to_bytes(LPMMTIME mmtime, LPWAVEFORMATEX pwfx); 81