IAudioClient 接口是 Windows Core Audio API 中的一部分,用于创建和控制音频流。该接口提供了一系列方法,允许应用程序与音频引擎进行交互。

以下是 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