以下是 IAudioClient 接口的定义:
DECLARE_INTERFACE_(IAudioClient, IUnknown) {
STDMETHOD(Initialize)(
THIS_
AUDCLNT_SHAREMODE shareMode,
DWORD streamFlags,
REFERENCE_TIME hnsBufferDuration,
REFERENCE_TIME hnsPeriodicity,
const WAVEFORMATEX *pFormat,
LPCGUID audioSessionGuid
) PURE;
STDMETHOD(GetBufferSize)(
THIS_
UINT32 *pNumBufferFrames
) PURE;
STDMETHOD(GetStreamLatency)(
THIS_
REFERENCE_TIME *phnsLatency
) PURE;
STDMETHOD(GetCurrentPadding)(
THIS_
UINT32 *pNumPaddingFrames
) PURE;
STDMETHOD(IsFormatSupported)(
THIS_
AUDCLNT_SHAREMODE shareMode,
const WAVEFORMATEX *pFormat,
WAVEFORMATEX **ppClosestMatch
) PURE;
STDMETHOD(GetMixFormat)(
THIS_
WAVEFORMATEX **ppDeviceFormat
) PURE;
STDMETHOD(GetDevicePeriod)(
THIS_
REFERENCE_TIME *phnsDefaultDevicePeriod,
REFERENCE_TIME *phnsMinimumDevicePeriod
) PURE;
STDMETHOD(Start)(
THIS
) PURE;
STDMETHOD(Stop)(
THIS
) PURE;
STDMETHOD(Reset)(
THIS
) PURE;
STDMETHOD(SetEventHandle)(
THIS_
HANDLE eventHandle
) PURE;
STDMETHOD(GetService)(
THIS_
REFIID riid,
void **ppv
) PURE;
};
这个接口包含一系列方法,用于配置音频流、获取有关音频流状态的信息,以及控制音频流的生命周期。例如:
- Initialize: 用于初始化音频流。
- GetBufferSize: 获取缓冲区的大小(以帧为单位)。
- GetStreamLatency: 获取音频流的延迟。
- GetCurrentPadding: 获取当前缓冲区中的填充帧数。
- IsFormatSupported: 检查指定的音频格式是否被支持。
- GetMixFormat: 获取音频引擎的混合格式。
- GetDevicePeriod: 获取默认和最小的设备周期。
- Start, Stop, Reset: 控制音频流的运行状态。
- SetEventHandle: 设置用于通知音频引擎的事件句柄。
- GetService: 获取与音频流相关的服务接口。
IAudioClient 接口通常与 IAudioRenderClient 或 IAudioCaptureClient 接口一起使用,这些接口用于实际处理音频数据的渲染或捕获。
转载请注明出处:http://www.zyzy.cn/article/detail/23900/Win32 API/Audioclient.h/IAudioClient