KSPROPERTY_RTAUDIO_BUFFER
KSPROPERTY_RTAUDIO_BUFFER 属性为音频数据指定驱动程序分配的循环缓冲区。
下表总结了此属性的功能。
使用情况摘要表
获取 | 设置 | 目标 | 属性描述符类型 | 属性值类型 |
---|---|---|---|---|
是 |
否 |
固定 |
属性描述符(实例数据)由 KSRTAUDIO_BUFFER_PROPERTY 结构组成,该结构包含 KSPROPERTY 结构以及其他成员。 客户端将其请求的缓冲区大小写入结构中。 如果客户端不必使用特定的基址,则必须将基址指定为 NULL。
属性值(操作数据)是 KSRTAUDIO_BUFFER 类型的结构。 驱动程序使用实际缓冲区大小、基址和已分配的循环缓冲区的内存屏障标志来填充此结构。
返回值
KSPROPERTY_RTAUDIO_BUFFER 属性请求返回 STATUS_SUCCESS,以指示已成功完成。 否则,请求将返回适当的故障状态代码。 下表显示了一些可能的故障状态代码。
状态代码 | 含义 |
---|---|
STATUS_UNSUCCESSFUL |
无法分配具有指定缓冲区属性组合的循环缓冲区。 |
STATUS_INSUFFICIENT_RESOURCES |
无法为缓冲区分配内存。 |
STATUS_DEVICE_NOT_READY |
设备未准备就绪 |
注解
基址是循环缓冲区开始处的虚拟存储地址。 客户端可以直接访问此地址的缓冲区。 缓冲区在虚拟内存中是连续的。 是否使缓冲区在物理内存中连续由驱动程序决定。
客户端将属性描述符中的基址设置为 NULL。 驱动程序将属性值中的基址设置为分配的音频缓冲区的虚拟地址。
通常,音频硬件要求音频缓冲区在样本边界上开始和结束,或者满足其他类型的依赖于硬件的对齐约束。 如果有足够的内存可用,则缓冲区的实际大小是四舍五入(向上或向下)到最近的样本或其他硬件约束边界的请求大小。 实际大小必须至少为请求的大小;否则,音频会话 API (WASAPI) 音频引擎将不使用缓冲区,流创建将失败。
如果 KSPROPERTY_RTAUDIO_BUFFER 属性请求成功,属性值(KSRTAUDIO_BUFFER 类型的结构)包含驱动程序分配的缓冲区的地址和大小。
关闭引脚会自动释放通过此属性分配的缓冲区。
如果需要事件通知,则必须调用 KSPROPERTY_RTAUDIO_BUFFER_WITH_NOTIFICATION 而不是 KSPROPERTY_RTAUDIO_BUFFER。
要求
版本 |
适用于 Windows Vista 及更高版本的 Windows 操作系统。 |
标头 |
Ksmedia.h |