IAudioCaptureClient::ReleaseBuffer 方法 (audioclient.h)
ReleaseBuffer 方法释放缓冲区。
语法
HRESULT ReleaseBuffer(
[in] UINT32 NumFramesRead
);
参数
[in] NumFramesRead
客户端从捕获缓冲区读取的音频帧数。 此参数必须等于以前获取的数据包中的帧数或 0。
返回值
如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。
返回代码 | 说明 |
---|---|
|
NumFramesRead 参数设置为数据包大小或 0 以外的值。 |
|
此调用之前没有相应的 IAudioCaptureClient::GetBuffer 调用。 |
|
音频终结点设备已拔出,或者音频硬件或关联的硬件资源已重新配置、禁用、删除或以其他方式不可用。 |
|
Windows 音频服务未运行。 |
注解
当客户端完成读取之前通过调用 IAudioCaptureClient::GetBuffer 方法获取的数据包时,应调用此方法。
客户端从 GetBuffer 调用获取的数据包中的数据保证在客户端调用 ReleaseBuffer 释放数据包之前保持有效。
在每个 GetBuffer 调用与其相应的 ReleaseBuffer 调用之间,客户端必须读取整个数据包,或者读取任何数据包。 如果客户端在 GetBuffer 调用后读取整个数据包,则应调用 ReleaseBuffer ,并将 NumFramesRead 设置为数据包中的帧总数。 在这种情况下,对 GetBuffer 的下一次调用将生成新的数据包。 如果客户端在调用 GetBuffer 后从数据包中读取任何数据,则应调用 NumFramesRead 设置为 0 的 ReleaseBuffer。 在这种情况下,下一个 GetBuffer 调用将生成与上一个 GetBuffer 调用相同的数据包。
如果客户端调用 ReleaseBuffer 且 NumFramesRead 设置为数据包大小或 0 以外的任何值,则调用失败并返回错误代码AUDCLNT_E_INVALID_SIZE。
客户端应避免获取缓冲区的 GetBuffer 调用与释放缓冲区的 ReleaseBuffer 调用之间的过度延迟。 音频引擎的实现假定 GetBuffer 调用和相应的 ReleaseBuffer 调用在同一缓冲区处理期间发生。 延迟释放缓冲区超过一个时间段的客户端可能会丢失示例数据。
有关调用 ReleaseBuffer 方法的代码示例,请参阅 捕获流。
要求
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | audioclient.h |
另请参阅
反馈
提交和查看相关反馈