| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- //-------------------------------------------------------------------------
- // File: AecKsBinder.h
- //
- // Desciption: Definition of audio devices binding functions
- //
- // Copyright (c) 2004-2006, Microsoft Corporation. All rights reserved.
- //---------------------------------------------------------------------------
- #ifndef _AEC_KSBINDER_H_
- #define _AEC_KSBINDER_H_
- #include <ATLComCli.h>
- #include <AudioEngineEndPoint.h>
- #include <DeviceTopology.h>
- #include <EndpointVolume.h>
- #include <MMDeviceApi.h>
- #include <atlbase.h>
- #include <audioclient.h>
- typedef struct
- {
- KSPROPERTY KsProperty;
- BOOLEAN bEndpointFlag;
- ULONG ulEntityId;
- union {
- ULONG ulEndpoint;
- ULONG ulInterface;
- };
- ULONG ulOffset;
- } USBAUDIO_MEMORY_PROPERTY, *PUSBAUDIO_MEMORY_PROPERTY;
- static const GUID USB_AUDIO_PROP_SET_GUID = {0xC3FA16D7,
- 0x274E,
- 0x4f2b,
- {0xA6, 0x3B, 0xD5, 0xE1, 0x09, 0x55, 0xFA, 0x27}};
- const DWORD USBAUDIO_PROPERTY_GETSET_MEM = 0;
- #define MAX_STR_LEN 512
- typedef struct
- {
- TCHAR szDeviceName[MAX_STR_LEN];
- TCHAR szDeviceID[MAX_STR_LEN];
- bool bIsMicArrayDevice;
- } AUDIO_DEVICE_INFO, *PAUDIO_DEVICE_INFO;
- HRESULT GetDeviceNum(EDataFlow eDataFlow, UINT &uDevCount);
- __inline HRESULT GetRenderDeviceNum(UINT &uDevCount)
- {
- return GetDeviceNum(eRender, uDevCount);
- }
- __inline HRESULT GetCaptureDeviceNum(UINT &uDevCount)
- {
- return GetDeviceNum(eCapture, uDevCount);
- }
- HRESULT EnumDevice(EDataFlow eDataFlow, UINT uNumElements, AUDIO_DEVICE_INFO *pDevicInfo);
- __inline HRESULT EnumRenderDevice(UINT uNumElements, AUDIO_DEVICE_INFO *pDevicInfo)
- {
- return EnumDevice(eRender, uNumElements, pDevicInfo);
- }
- __inline HRESULT EnumCaptureDevice(UINT uNumElements, AUDIO_DEVICE_INFO *pDevicInfo)
- {
- return EnumDevice(eCapture, uNumElements, pDevicInfo);
- }
- HRESULT DeviceBindTo(
- EDataFlow eDataFlow, // eCapture or eRender
- INT uDevIdx, // Device Index. USE_DEFAULT_DEVICE - use default device.
- IAudioClient **ppAudioClient, // pointer pointer to IAudioClient interface
- IAudioEndpointVolume **ppEndpointVolume,
- WCHAR **ppszEndpointDeviceId // Device ID. Need to be freed in caller with CoTaskMemoryFree
- );
- __inline HRESULT CaptureDeviceBindTo(
- INT uDevIdx,
- IAudioClient **ppAudioClient, // pointer pointer to IAudioClient interface
- IAudioEndpointVolume **ppEndpointVolume,
- WCHAR **ppszEndpointDeviceId)
- {
- return DeviceBindTo(eCapture, uDevIdx, ppAudioClient, ppEndpointVolume, ppszEndpointDeviceId);
- }
- __inline HRESULT RenderDeviceBindTo(
- INT uDevIdx,
- IAudioClient **ppAudioClient, // pointer pointer to IAudioClient interface
- IAudioEndpointVolume **ppEndpointVolume,
- WCHAR **ppszEndpointDeviceId)
- {
- return DeviceBindTo(eRender, uDevIdx, ppAudioClient, ppEndpointVolume, ppszEndpointDeviceId);
- }
- HRESULT DeviceIsMicArray(wchar_t szDeviceId[], bool &bIsMicArray);
- HRESULT EndpointIsMicArray(IMMDevice *pEndpoint, bool &isMicrophoneArray);
- HRESULT GetJackSubtypeForEndpoint(IMMDevice *pEndpoint, GUID *pgSubtype);
- __checkReturn HRESULT GetInputJack(IMMDevice *pDevice, CComPtr<IPart> &spPart);
- HRESULT GetMicArrayGeometry(wchar_t szDeviceId[],
- KSAUDIO_MIC_ARRAY_GEOMETRY **ppGeometry,
- ULONG &cbSize);
- #endif //_AEC_KSBINDER_H_
|