· 2 years ago · Jul 14, 2023, 08:45 AM
1//used internally by kit_w32_audio to wrap c++ com interfaces for use in c
2//(i'm making the api intentionally verbose here)
3//interfaces implemented:
4//IMMDeviceEnumerator
5//IMMDeviceCollection
6//IMMDevice
7//IAudioClient
8//IAudioRenderClient
9//IPropertyStore
10#include <_kit_w32_audioCOM.h>
11
12
13
14//IMMDeviceEnumerator
15
16HRESULT _kit_audioCOM_IMMDeviceEnumerator_EnumAudioEndpoints(IMMDeviceEnumerator* enumerator,
17 EDataFlow dataFlow_i, DWORD stateMask_i, IMMDeviceCollection** devices_o)
18{ return enumerator->EnumAudioEndpoints(dataFlow_i, stateMask_i, devices_o); }
19
20
21HRESULT _kit_audioCOM_IMMDeviceEnumerator_GetDefaultAudioEndpoint(IMMDeviceEnumerator* enumerator,
22 EDataFlow dataFlow_i, ERole role_i, IMMDevice** endpoint_o)
23{ return enumerator->GetDefaultAudioEndpoint(dataFlow_i, role_i, endpoint_o); }
24
25
26HRESULT _kit_audioCOM_IMMDeviceEnumerator_GetDevice(IMMDeviceEnumerator* enumerator,
27 LPCWSTR strID_i, IMMDevice** device_o)
28{ return enumerator->GetDevice(strID_i, device_o); }
29
30
31HRESULT _kit_audioCOM_IMMDeviceEnumerator_RegisterEndpointNotificationCallback(IMMDeviceEnumerator* enumerator,
32 IMMNotificationClient* client_i)
33{ return enumerator->RegisterEndpointNotificationCallback(client_i); }
34
35
36HRESULT _kit_audioCOM_IMMDeviceEnumerator_UnregisterEndpointNotificationCallback(IMMDeviceEnumerator* enumerator,
37 IMMNotificationClient* client_i)
38{ return enumerator->UnregisterEndpointNotificationCallback(client_i); }
39
40//
41HRESULT _kit_audioCOM_IMMDeviceEnumerator_QueryInterface(IMMDeviceEnumerator* enumerator,
42 IMMDeviceEnumerator** enumerator_o)
43{ return enumerator->QueryInterface(enumerator_o); }
44
45
46ULONG _kit_audioCOM_IMMDeviceEnumerator_AddRef(IMMDeviceEnumerator* enumerator)
47{ return enumerator->AddRef(); }
48
49
50ULONG _kit_audioCOM_IMMDeviceEnumerator_Release(IMMDeviceEnumerator* enumerator)
51{ return enumerator->Release(); }
52
53
54
55//IMMDeviceCollection
56
57HRESULT _kit_audioCOM_IMMDeviceCollection_GetCount(IMMDeviceCollection* deviceCollection,
58 UINT* devices_o)
59{ return deviceCollection->GetCount(devices_o); }
60
61
62HRESULT _kit_audioCOM_IMMDeviceCollection_Item(IMMDeviceCollection* deviceCollection,
63 UINT deviceNum_i, IMMDevice** device_o)
64{ return deviceCollection->Item(deviceNum_i, device_o); }
65
66//
67HRESULT _kit_audioCOM_IMMDeviceCollection_QueryInterface(IMMDeviceCollection* deviceCollection,
68 IMMDeviceCollection** deviceCollection_o)
69{ return deviceCollection->QueryInterface(deviceCollection_o); }
70
71
72ULONG _kit_audioCOM_IMMDeviceCollection_AddRef(IMMDeviceCollection* deviceCollection)
73{ return deviceCollection->AddRef(); }
74
75
76ULONG _kit_audioCOM_IMMDeviceCollection_Release(IMMDeviceCollection* deviceCollection)
77{ return deviceCollection->Release(); }
78
79
80
81//IMMDevice
82
83HRESULT _kit_audioCOM_IMMDevice_Activate(IMMDevice* device,
84 REFIID iid_i, DWORD clsCtx_i, PROPVARIANT* activationParams_i, void** interface_o)
85{ return device->Activate(iid_i, clsCtx_i, activationParams_i, interface_o); }
86
87
88HRESULT _kit_audioCOM_IMMDevice_GetId(IMMDevice* device,
89 LPWSTR* strID_o)
90{ return device->GetId(strID_o); }
91
92
93HRESULT _kit_audioCOM_IMMDevice_GetState(IMMDevice* device,
94 DWORD* state_o)
95{ return device->GetState(state_o); }
96
97
98HRESULT _kit_audioCOM_IMMDevice_OpenPropertyStore(IMMDevice* device,
99 DWORD access_i, IPropertyStore** properties_o)
100{ return device->OpenPropertyStore(access_i, properties_o); }
101
102
103HRESULT _kit_audioCOM_IMMDevice_QueryInterface(IMMDevice* device,
104 IMMDevice** device_o)
105{ return device->QueryInterface(device_o); }
106
107
108ULONG _kit_audioCOM_IMMDevice_AddRef(IMMDevice* device)
109{ return device->AddRef(); }
110
111
112ULONG _kit_audioCOM_IMMDevice_Release(IMMDevice* device)
113{ return device->Release(); }
114
115
116
117//IAudioClient
118
119HRESULT _kit_audioCOM_IAudioClient_GetBufferSize(IAudioClient* audioClient,
120 UINT32* numBufferFrames_o)
121{ return audioClient->GetBufferSize(numBufferFrames_o); }
122
123
124HRESULT _kit_audioCOM_IAudioClient_GetCurrentPadding(IAudioClient* audioClient,
125 UINT32* numPaddingFrames_o)
126{ return audioClient->GetCurrentPadding(numPaddingFrames_o); }
127
128
129HRESULT _kit_audioCOM_IAudioClient_GetDevicePeriod(IAudioClient* audioClient,
130 REFERENCE_TIME* defaultDevicePeriod_o, REFERENCE_TIME* minimumDevicePeriod_o)
131{ return audioClient->GetDevicePeriod(defaultDevicePeriod_o, minimumDevicePeriod_o); }
132
133
134HRESULT _kit_audioCOM_IAudioClient_GetMixFormat(IAudioClient* audioClient,
135 WAVEFORMATEX** deviceFormat_o)
136{ return audioClient->GetMixFormat(deviceFormat_o); }
137
138
139HRESULT _kit_audioCOM_IAudioClient_GetService(IAudioClient* audioClient,
140 REFIID riid_i, void** ppv_o)
141{ return audioClient->GetService(riid_i, ppv_o); }
142
143
144HRESULT _kit_audioCOM_IAudioClient_GetStreamLatency(IAudioClient* audioClient,
145 REFERENCE_TIME* latency_o)
146{ return audioClient->GetStreamLatency(latency_o); }
147
148
149HRESULT _kit_audioCOM_IAudioClient_Initialize(IAudioClient* audioClient,
150 AUDCLNT_SHAREMODE shareMode_i, DWORD streamFlags_i, REFERENCE_TIME bufferDuration_i,
151 REFERENCE_TIME periodicity_i, const WAVEFORMATEX* format_i, LPCGUID audioSessionGUID_i)
152{ return audioClient->Initialize(shareMode_i, streamFlags_i, bufferDuration_i, periodicity_i, format_i, audioSessionGUID_i); }
153
154
155HRESULT _kit_audioCOM_IAudioClient_IsFormatSupported(IAudioClient* audioClient,
156 AUDCLNT_SHAREMODE shareMode_i, const WAVEFORMATEX* format_i, WAVEFORMATEX** closestMatch_o)
157{ return audioClient->IsFormatSupported(shareMode_i, format_i, closestMatch_o); }
158
159
160HRESULT _kit_audioCOM_IAudioClient_Reset(IAudioClient* audioClient)
161{ return audioClient->Reset(); }
162
163
164HRESULT _kit_audioCOM_IAudioClient_SetEventHandle(IAudioClient* audioClient,
165 HANDLE eventHandle_i)
166{ return audioClient->SetEventHandle(eventHandle_i); }
167
168
169HRESULT _kit_audioCOM_IAudioClient_Start(IAudioClient* audioClient)
170{ return audioClient->Start(); }
171
172
173HRESULT _kit_audioCOM_IAudioClient_Stop(IAudioClient* audioClient)
174{ return audioClient->Stop(); }
175
176
177HRESULT _kit_audioCOM_IAudioClient_QueryInterface(IAudioClient* audioClient,
178 IAudioClient** audioClient_o)
179{ return audioClient->QueryInterface(audioClient_o); }
180
181
182ULONG _kit_audioCOM_IAudioClient_AddRef(IAudioClient* audioClient)
183{ return audioClient->AddRef(); }
184
185
186ULONG _kit_audioCOM_IAudioClient_Release(IAudioClient* audioClient)
187{ return audioClient->Release(); }
188
189
190
191//IAudioRenderClient
192
193HRESULT _kit_audioCOM_IAudioRenderClient_GetBuffer(IAudioRenderClient* audioRenderClient,
194 UINT32 numFramesRequested_i, BYTE** data)
195{ return audioRenderClient->GetBuffer(numFramesRequested_i, data); }
196
197
198HRESULT _kit_audioCOM_IAudioRenderClient_ReleaseBuffer(IAudioRenderClient* audioRenderClient,
199 UINT32 numFramesWritten_i, DWORD flags_i)
200{ return audioRenderClient->ReleaseBuffer(numFramesWritten_i, flags_i); }
201
202
203HRESULT _kit_audioCOM_IAudioRenderClient_QueryInterface(IAudioRenderClient* audioRenderClient,
204 IAudioRenderClient** audioRenderClient_o)
205{ return audioRenderClient->QueryInterface(audioRenderClient_o); }
206
207
208ULONG _kit_audioCOM_IAudioRenderClient_AddRef(IAudioRenderClient* audioRenderClient)
209{ return audioRenderClient->AddRef(); }
210
211
212ULONG _kit_audioCOM_IAudioRenderClient_Release(IAudioRenderClient* audioRenderClient)
213{ return audioRenderClient->Release(); }
214
215
216
217//IPropertyStore
218
219HRESULT _kit_audioCOM_IPropertyStore_Commit(IPropertyStore* properties)
220{ return properties->Commit(); }
221
222
223HRESULT _kit_audioCOM_IPropertyStore_GetAt(IPropertyStore* properties,
224 DWORD propertyKeyIndex_i, PROPERTYKEY* propertyKey_o)
225{ return properties->GetAt(propertyKeyIndex_i, propertyKey_o); }
226
227
228HRESULT _kit_audioCOM_IPropertyStore_GetCount(IPropertyStore* properties,
229 DWORD* numProperties_o)
230{ return properties->GetCount(numProperties_o); }
231
232
233HRESULT _kit_audioCOM_IPropertyStore_GetValue(IPropertyStore* properties,
234 REFPROPERTYKEY key_i, PROPVARIANT* propertyVariant_o)
235{ return properties->GetValue(key_i, propertyVariant_o); }
236
237
238HRESULT _kit_audioCOM_IPropertyStore_SetValue(IPropertyStore* properties,
239 REFPROPERTYKEY key_i, REFPROPVARIANT propertyVariant_i)
240{ return properties->SetValue(key_i, propertyVariant_i); }
241
242
243HRESULT _kit_audioCOM_IPropertyStore_QueryInterface(IPropertyStore* properties,
244 IPropertyStore** properties_o)
245{ return properties->QueryInterface(properties_o); }
246
247
248ULONG _kit_audioCOM_IPropertyStore_AddRef(IPropertyStore* properties)
249{ return properties->AddRef(); }
250
251
252ULONG _kit_audioCOM_IPropertyStore_Release(IPropertyStore* properties)
253{ return properties->Release(); }