|
17 | 17 | sizeof, |
18 | 18 | Structure, |
19 | 19 | ) |
20 | | -from ctypes.wintypes import BYTE, DWORD, LPCWSTR, WORD |
| 20 | +from ctypes.wintypes import BOOL, BYTE, DWORD, FILETIME, LPCWSTR, WORD |
21 | 21 | from enum import IntEnum |
22 | | -from comtypes import GUID, IUnknown, STDMETHOD |
| 22 | +from comtypes import GUID, IUnknown, STDMETHOD, COMMETHOD |
23 | 23 |
|
24 | 24 | import winKernel |
25 | 25 |
|
|
43 | 43 | TTSFEATURE_PITCH = 8 |
44 | 44 | TTSFEATURE_FIXEDAUDIO = 1024 |
45 | 45 |
|
| 46 | +# Audio related error codes |
| 47 | +AUDERR_BADDEVICEID = -2147220735 |
| 48 | +AUDERR_NEEDWAVEFORMAT = -2147220734 |
| 49 | +AUDERR_NOTSUPPORTED = -2147467263 # E_NOTIMPL |
| 50 | +AUDERR_NOTENOUGHDATA = -2147220991 |
| 51 | +AUDERR_NOTPLAYING = -2147220730 |
| 52 | +AUDERR_WAVEFORMATNOTSUPPORTED = -2147220990 |
| 53 | +AUDERR_WAVEDEVICEBUSY = -2147220989 |
| 54 | +AUDERR_WAVEDEVNOTSUPPORTED = -2147220718 |
| 55 | +AUDERR_NOTRECORDING = -2147220717 |
| 56 | +AUDERR_INVALIDFLAG = -2147220988 |
| 57 | +AUDERR_NODRIVER = -2147220713 |
| 58 | +AUDERR_HANDLEBUSY = -2147220712 |
| 59 | +AUDERR_INVALIDNOTIFYSINK = -2147220711 |
| 60 | +AUDERR_WAVENOTENABLED = -2147220710 |
| 61 | +AUDERR_ALREADYCLAIMED = -2147220707 |
| 62 | +AUDERR_NOTCLAIMED = -2147220706 |
| 63 | +AUDERR_STILLPLAYING = -2147220705 |
| 64 | +AUDERR_ALREADYSTARTED = -2147220704 |
| 65 | +AUDERR_SYNCNOTALLOWED = -2147220703 |
| 66 | + |
46 | 67 | LANGID = WORD |
47 | 68 | QWORD = c_ulonglong |
48 | 69 |
|
@@ -224,6 +245,69 @@ class ITTSNotifySinkW(IUnknown): |
224 | 245 |
|
225 | 246 | ITTSNotifySink = ITTSNotifySinkW |
226 | 247 |
|
| 248 | + |
| 249 | +class IAudio(IUnknown): |
| 250 | + _iid_ = GUID("{F546B340-C743-11cd-80E5-00AA003E4B50}") |
| 251 | + |
| 252 | + |
| 253 | +IAudio._methods_ = [ |
| 254 | + COMMETHOD([], HRESULT, "Flush"), |
| 255 | + COMMETHOD([], HRESULT, "LevelGet", (["out"], POINTER(DWORD), "pdwLevel")), |
| 256 | + COMMETHOD([], HRESULT, "LevelSet", (["in"], DWORD, "dwLevel")), |
| 257 | + COMMETHOD( |
| 258 | + [], |
| 259 | + HRESULT, |
| 260 | + "PassNotify", |
| 261 | + (["in"], c_void_p, "pNotifyInterface"), |
| 262 | + (["in"], GUID, "IIDNotifyInterface"), |
| 263 | + ), |
| 264 | + COMMETHOD([], HRESULT, "PosnGet", (["out"], POINTER(QWORD), "pqwTimeStamp")), |
| 265 | + COMMETHOD([], HRESULT, "Claim"), |
| 266 | + COMMETHOD([], HRESULT, "UnClaim"), |
| 267 | + COMMETHOD([], HRESULT, "Start"), |
| 268 | + COMMETHOD([], HRESULT, "Stop"), |
| 269 | + COMMETHOD([], HRESULT, "TotalGet", (["out"], POINTER(QWORD), "pqWord")), |
| 270 | + COMMETHOD( |
| 271 | + [], |
| 272 | + HRESULT, |
| 273 | + "ToFileTime", |
| 274 | + (["in"], POINTER(QWORD), "pqWord"), |
| 275 | + (["out"], POINTER(FILETIME), "pFT"), |
| 276 | + ), |
| 277 | + COMMETHOD([], HRESULT, "WaveFormatGet", (["out"], POINTER(SDATA), "pdWFEX")), |
| 278 | + COMMETHOD([], HRESULT, "WaveFormatSet", (["in"], SDATA, "dWFEX")), |
| 279 | +] |
| 280 | + |
| 281 | + |
| 282 | +class IAudioDest(IUnknown): |
| 283 | + _iid_ = GUID("{2EC34DA0-C743-11cd-80E5-00AA003E4B50}") |
| 284 | + |
| 285 | + |
| 286 | +IAudioDest._methods_ = [ |
| 287 | + COMMETHOD( |
| 288 | + [], |
| 289 | + HRESULT, |
| 290 | + "FreeSpace", |
| 291 | + (["out"], POINTER(DWORD), "pdwBytes"), |
| 292 | + (["out"], POINTER(BOOL), "pfEOF"), |
| 293 | + ), |
| 294 | + COMMETHOD([], HRESULT, "DataSet", (["in"], c_void_p, "pBuffer"), (["in"], DWORD, "dwSize")), |
| 295 | + COMMETHOD([], HRESULT, "BookMark", (["in"], DWORD, "dwMarkID")), |
| 296 | +] |
| 297 | + |
| 298 | + |
| 299 | +class IAudioDestNotifySink(IUnknown): |
| 300 | + _iid_ = GUID("{ACB08C00-C743-11cd-80E5-00AA003E4B50}") |
| 301 | + |
| 302 | + |
| 303 | +IAudioDestNotifySink._methods_ = [ |
| 304 | + STDMETHOD(HRESULT, "AudioStop", [WORD]), |
| 305 | + STDMETHOD(HRESULT, "AudioStart"), |
| 306 | + STDMETHOD(HRESULT, "FreeSpace", [DWORD, BOOL]), |
| 307 | + STDMETHOD(HRESULT, "BookMark", [DWORD, BOOL]), |
| 308 | +] |
| 309 | + |
| 310 | + |
227 | 311 | CLSID_MMAudioDest = GUID("{CB96B400-C743-11cd-80E5-00AA003E4B50}") |
228 | 312 | CLSID_TTSEnumerator = GUID("{D67C0280-C743-11cd-80E5-00AA003E4B50}") |
229 | 313 |
|
|
0 commit comments