| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- #pragma once
- #include "../iaudiomgrinterface.h"
- #include <stdint.h>
- #include <assert.h>
- #include <stdio.h>
- #include <errno.h>
- #include <mediaobj.h> // IMediaObject
- #include <wmcodecdsp.h> // CLSID_CWMAudioAEC
- // (must be before audioclient.h)
- #include <audioclient.h>
- #include <MMDeviceApi.h>
- #include <AudioEngineEndPoint.h>
- #include <DeviceTopology.h>
- #include <functiondiscoverykeys.h>
- #include <EndpointVolume.h>
- class AudioMgrImpl : public IAudioMgr
- {
- public:
- AudioMgrImpl(audiomgr_callback_t* pCallback);
- ~AudioMgrImpl();
- int audio_mgr_initialize();
- int audio_mgr_terminate();
- int audio_get_device_count(bool binput);
- int audio_get_device_name(char* pstrbuf, size_t ulen, bool binput, unsigned int uindex);
- int audio_get_device_id(const char* pstrname, bool binput);
- rvc_audio_device_t* audio_get_device_infos(bool binput, int index);
- int audio_get_device_volume(int* ivolume, const char* pstrname, bool binput);
- int audio_set_device_volume(int ivolume, const char* pstrname, bool binput);
- int set_audio_capture_params(audiocap_param_t* param);
- int start_audio_capture();
- int stop_audio_capture();
- int audio_mgr_destroy();
- void audiolog(const char* fmt, ...);
-
- private:
- int32_t getlistdevice(EDataFlow dir, int index, IMMDevice** ppDevice);
- int32_t getdevicename(IMMDevice* pDevice, LPWSTR pszBuffer, int bufferLen);
- private:
- audiomgr_callback_t m_callback;
- IMMDeviceEnumerator* m_pEnumerator;
- IMMDeviceCollection* m_ptrCaptureCollection;
- IMMDevice* m_ptrDeviceIn;
- bool m_builtInAecEnabled;
- IMediaObject* m_dmo;
- bool m_usingInputDeviceIndex;
- uint16_t m_inputDeviceIndex;
- };
|