source: trunk/csharp/audio/NAudio/WaveOutCapabilities.cs @ 1855

Revision 1783, 5.5 KB checked in by daniel-weck, 5 years ago (diff)

removed unnecessary source code from NAudio (we only use ACM-based resampling/PCM de-compressing)

Line 
1using System;
2using System.Runtime.InteropServices;
3
4namespace NAudio.Wave
5{
6    /// <summary>
7    /// WaveOutCapabilities structure (based on WAVEOUTCAPS from mmsystem.h)
8    /// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_waveoutcaps_str.asp
9    /// </summary>
10    [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
11    public struct WaveOutCapabilities
12    {
13        /// <summary>
14        /// wMid
15        /// </summary>
16        private short manufacturerId;
17        /// <summary>
18        /// wPid
19        /// </summary>
20        private short productId;
21        /// <summary>
22        /// vDriverVersion
23        /// </summary>
24        private int driverVersion;
25        /// <summary>
26        /// Product Name (szPname)
27        /// </summary>
28        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MaxProductNameLength)]
29        private string productName;
30        /// <summary>
31        /// Supported formats (bit flags) dwFormats
32        /// </summary>
33        private SupportedWaveFormat supportedFormats;
34        /// <summary>
35        /// Supported channels (1 for mono 2 for stereo) (wChannels)
36        /// Seems to be set to -1 on a lot of devices
37        /// </summary>
38        private short channels;
39        /// <summary>
40        /// wReserved1
41        /// </summary>
42        private short reserved;
43        /// <summary>
44        /// Optional functionality supported by the device
45        /// </summary>
46        private WaveOutSupport support; // = new WaveOutSupport();
47
48        private const int MaxProductNameLength = 32;
49
50        /// <summary>
51        /// Number of channels supported
52        /// </summary>
53        public int Channels
54        {
55            get
56            {
57                return channels;
58            }
59        }
60
61        /// <summary>
62        /// Whether playback control is supported
63        /// </summary>
64        public bool SupportsPlaybackRateControl
65        {
66            get
67            {
68                return (support & WaveOutSupport.PlaybackRate) == WaveOutSupport.PlaybackRate;
69            }
70        }
71
72        /// <summary>
73        /// The product name
74        /// </summary>
75        public string ProductName
76        {
77            get
78            {
79                return productName;
80            }
81        }
82    }
83
84    /// <summary>
85    /// Supported wave formats for WaveOutCapabilities
86    /// </summary>
87    public enum SupportedWaveFormat
88    {
89        /// <summary>
90        /// 11.025 kHz, Mono,   8-bit
91        /// </summary>
92        WAVE_FORMAT_1M08 = 0x00000001,
93        /// <summary>
94        /// 11.025 kHz, Stereo, 8-bit
95        /// </summary>
96        WAVE_FORMAT_1S08 = 0x00000002,
97        /// <summary>
98        /// 11.025 kHz, Mono,   16-bit
99        /// </summary>
100        WAVE_FORMAT_1M16 = 0x00000004,
101        /// <summary>
102        /// 11.025 kHz, Stereo, 16-bit
103        /// </summary>
104        WAVE_FORMAT_1S16 = 0x00000008,
105        /// <summary>
106        /// 22.05  kHz, Mono,   8-bit
107        /// </summary>
108        WAVE_FORMAT_2M08 = 0x00000010,
109        /// <summary>
110        /// 22.05  kHz, Stereo, 8-bit
111        /// </summary>
112        WAVE_FORMAT_2S08 = 0x00000020,
113        /// <summary>
114        /// 22.05  kHz, Mono,   16-bit
115        /// </summary>
116        WAVE_FORMAT_2M16 = 0x00000040,
117        /// <summary>
118        /// 22.05  kHz, Stereo, 16-bit
119        /// </summary>
120        WAVE_FORMAT_2S16 = 0x00000080,
121        /// <summary>
122        /// 44.1   kHz, Mono,   8-bit
123        /// </summary>
124        WAVE_FORMAT_4M08 = 0x00000100,
125        /// <summary>
126        /// 44.1   kHz, Stereo, 8-bit
127        /// </summary>
128        WAVE_FORMAT_4S08 = 0x00000200,
129        /// <summary>
130        /// 44.1   kHz, Mono,   16-bit
131        /// </summary>
132        WAVE_FORMAT_4M16 = 0x00000400,
133        /// <summary>
134        ///  44.1   kHz, Stereo, 16-bit
135        /// </summary>
136        WAVE_FORMAT_4S16 = 0x00000800,
137
138        /// <summary>
139        /// 44.1   kHz, Mono,   8-bit
140        /// </summary>
141        WAVE_FORMAT_44M08 = 0x00000100,
142        /// <summary>
143        /// 44.1   kHz, Stereo, 8-bit
144        /// </summary>
145        WAVE_FORMAT_44S08 = 0x00000200,
146        /// <summary>
147        /// 44.1   kHz, Mono,   16-bit
148        /// </summary>
149        WAVE_FORMAT_44M16 = 0x00000400,
150        /// <summary>
151        /// 44.1   kHz, Stereo, 16-bit
152        /// </summary>
153        WAVE_FORMAT_44S16 = 0x00000800,
154        /// <summary>
155        /// 48     kHz, Mono,   8-bit
156        /// </summary>
157        WAVE_FORMAT_48M08 = 0x00001000,
158        /// <summary>
159        ///  48     kHz, Stereo, 8-bit
160        /// </summary>
161        WAVE_FORMAT_48S08 = 0x00002000,
162        /// <summary>
163        /// 48     kHz, Mono,   16-bit
164        /// </summary>
165        WAVE_FORMAT_48M16 = 0x00004000,
166        /// <summary>
167        /// 48     kHz, Stereo, 16-bit
168        /// </summary>
169        WAVE_FORMAT_48S16 = 0x00008000,
170        /// <summary>
171        /// 96     kHz, Mono,   8-bit
172        /// </summary>
173        WAVE_FORMAT_96M08 = 0x00010000,
174        /// <summary>
175        /// 96     kHz, Stereo, 8-bit
176        /// </summary>
177        WAVE_FORMAT_96S08 = 0x00020000,
178        /// <summary>
179        /// 96     kHz, Mono,   16-bit
180        /// </summary>
181        WAVE_FORMAT_96M16 = 0x00040000,
182        /// <summary>
183        /// 96     kHz, Stereo, 16-bit
184        /// </summary>
185        WAVE_FORMAT_96S16 = 0x00080000,
186
187    }
188}
Note: See TracBrowser for help on using the repository browser.