KSPROPERTY_AEC_STATUS

KSPROPERTY_AEC_STATUS 属性用于监视 AEC 节点 (KSNODETYPE_ACOUSTIC_ECHO_CANCEL) 的状态。 这是 AEC 节点的可选属性。

使用情况摘要表

获取 设置 目标 属性描述符类型 属性值类型

固定

KSNODEPROPERTY

ULONG

属性值(操作数据)的类型为 ULONG。 这是一个状态值,可设置为下表左侧列中一个或多个标志位的按位 OR,这些标志位在头文件 Ksmedia.h 中定义。 头文件 Dsound.h 中的相应 DSCFX_AEC_STATUS 标志显示在表的右列中。 有关这些标志的信息,请参阅 Microsoft Windows SDK 文档。

AEC 状态标志 DSCFX_AEC_STATUS 标志

AEC_STATUS_FD_HISTORY_UNINITIALIZED

0x0

DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED

AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED

0x1

DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED

AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED

0x2

DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED

AEC_STATUS_FD_CURRENTLY_CONVERGED

0x8

DSCFX_AEC_STATUS_CURRENTLY_CONVERGED

返回值

KSPROPERTY_AEC_STATUS 属性请求返回 STATUS_SUCCESS,以指示它已成功完成。 否则,请求将返回适当的错误状态代码。

注解

AEC 状态标志(见上表)中的三个最小有效位表示 AEC 算法的收敛历史记录 (CH)。 Microsoft DirectSound 应用程序可以使用 CH 状态位来确定算法是否已聚合,以及它是否自开始处理数据以来一直处于聚合状态。 根据音频硬件,AEC 算法可能无法聚合,在这种情况下,生成的捕获缓冲区可能会包括来自扬声器的回声。

创建包含 AEC 节点的筛选器或重置节点时,AEC 算法最初将三个 CH 状态位设置为零。 此设置表示未初始化的状态 AEC_STATUS_FD_HISTORY_UNINITIALIZED。

AEC 算法聚合后,CH 状态将切换到已聚合状态 AEC_STATUS_FD_HISTORY_CONTINUOUSLY_CONVERGED。 如果 AEC 算法曾丢失聚合,则 CH 状态将切换到分歧状态 AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED。 尽管状态最有可能从聚合状态切换到分歧状态,但它也可能直接从未初始化的状态切换到聚合状态。 在 CH 状态切换到分歧状态后,它将保持该状态,直到检测到算法重置或饥饿。

AEC 系统筛选器在其四个引脚中的任何一个检测到饥饿时,即捕获输入、捕获输出、呈现输入或呈现输出,它将重置其内部状态(包括聚合历史记录)。

请注意,当前未使用三个 CH 状态位中的第 2 位。

作为使用 CH 状态位的替代方法,应用程序可以通过检查 AEC_STATUS_FD_CURRENTLY_CONVERGED 标志位来监视实时聚合状态。 如果设置了此位,则算法当前聚合。 当声学路径发生更改时,算法可能会暂时失去聚合。 实时聚合标志经过筛选,以防止这种瞬间损失不恰当地将 CH 状态位切换到 DSCFX_AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED 状态。

要求

标头

Ksmedia.h(包括 Ksmedia.h)

另请参阅

KSNODEPROPERTY

KSNODETYPE_ACOUSTIC_ECHO_CANCEL