/
AudioListener.h
37 lines (29 loc) · 1000 Bytes
/
AudioListener.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#pragma once
#include <mmdeviceapi.h>
#include <Audioclient.h>
#include <audiopolicy.h>
#include "IAudioSink.h"
class AudioListener
{
private:
#define SAFE_RELEASE(punk) \
if ((punk) != NULL) \
{ (punk)->Release(); (punk) = NULL; }
WAVEFORMATEX* m_pwfx = NULL;
IAudioClient* m_pAudioClient = NULL;
IAudioCaptureClient* m_pCaptureClient = NULL;
IMMDeviceEnumerator* m_pEnumerator = NULL;
IMMDevice* m_pDevice = NULL;
UINT32 m_bufferFrameCount;
REFERENCE_TIME m_hnsActualDuration;
const int m_refTimesPerMS = 10000;
const int m_refTimesPerSec = 10000000;
const CLSID m_CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
const IID m_IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
const IID m_IID_IAudioClient = __uuidof(IAudioClient);
const IID m_IID_IAudioCaptureClient = __uuidof(IAudioCaptureClient);
public:
AudioListener(int BitsPerSample, int FormatTag, int BlockAlign, int XSize);
~AudioListener();
HRESULT RecordAudioStream(IAudioSink*);
};