IAudioClient::GetBufferSize 方法 (audioclient.h)

GetBufferSize 方法检索终结点缓冲区的大小 (最大容量) 。

语法

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

参数

[out] pNumBufferFrames

指向 UINT32 变量的指针,该方法将缓冲区可以容纳的音频帧数写入其中。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。

返回代码 说明
AUDCLNT_E_NOT_INITIALIZED
音频流尚未成功初始化。
AUDCLNT_E_DEVICE_INVALIDATED
音频终结点设备已拔出,或者音频硬件或关联的硬件资源已重新配置、禁用、删除或以其他方式不可用。
AUDCLNT_E_SERVICE_NOT_RUNNING
Windows 音频服务未运行。
E_POINTER
参数 pNumBufferFramesNULL

注解

此方法需要事先初始化 IAudioClient 接口。 在客户端通过成功调用 IAudioClient::Initialize 方法初始化音频流之前,对此方法的所有调用都将失败并出现错误AUDCLNT_E_NOT_INITIALIZED。

此方法检索客户端应用程序和音频引擎之间共享的终结点缓冲区的长度。 长度表示为缓冲区可以容纳的音频帧数。 音频帧的大小(以字节为单位)按流中的通道数乘以每个通道的样本大小计算得出。 例如,包含 16 位样本的立体声 (2 声道) 流的帧大小为 4 个字节。

IAudioClient::Initialize 方法分配缓冲区。 客户端在传递给 Initialize 方法的 hnsBufferDuration 参数值中指定缓冲区长度。 对于呈现客户端,缓冲区长度确定应用程序在单个处理阶段期间可以写入终结点缓冲区的最大呈现数据量。 对于捕获客户端,缓冲区长度确定音频引擎在单个处理阶段期间可以从终结点缓冲区读取的最大捕获数据量。 客户端在调用 Initialize 后应始终调用 GetBufferSize,以确定分配的缓冲区的实际大小,该大小可能与请求的大小不同。

呈现客户端可以使用此值来计算每次处理过程中可从 IAudioRenderClient::GetBuffer 请求的最大呈现缓冲区大小。

有关调用 GetBufferSize 方法的代码示例,请参阅以下主题:

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 audioclient.h

另请参阅

IAudioClient 接口

IAudioClient::Initialize

IAudioRenderClient::GetBuffer