Поделиться через


KSPROPERTY_AEC_STATUS

Свойство KSPROPERTY_AEC_STATUS используется для мониторинга состояния узла AEC (KSNODETYPE_ACOUSTIC_ECHO_CANCEL). Это необязательное свойство узла AEC.

Сводная таблица использования

Получить Присвойте параметру Назначение Тип дескриптора свойства Тип значения свойства

Да

Нет

Pin

KSNODEPROPERTY

ULONG

Значение свойства (данные операции) имеет тип ULONG. Это значение состояния, которое может быть задано в побитовом значении ИЛИ одного или нескольких битов флагов в левом столбце следующей таблицы, которые определены в файле заголовка Ksmedia.h. Соответствующие флаги DSCFX_AEC_STATUS из файла заголовка Dsound.h отображаются в правом столбце таблицы. Сведения об этих флагах см. в документации по 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 (см. предыдущую таблицу) представляют журнал конвергенции (CH) алгоритма AEC. Биты состояния CH могут использоваться приложением Microsoft DirectSound для определения того, конвергентно ли алгоритм, а также остается ли он в конвергентном состоянии с момента начала обработки данных. В зависимости от звукового оборудования алгоритм 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 обнаруживает нехватку в любом из своих четырех контактов (запись, захват, отрисовка или отрисовка), он сбрасывает внутреннее состояние, включая журнал конвергенции.

Обратите внимание, что бит 2 из трех битов состояния CH в настоящее время не используется.

В качестве альтернативы использованию битов состояния CH приложение может отслеживать состояние конвергенции в режиме реального времени, проверяя бит флага AEC_STATUS_FD_CURRENTLY_CONVERGED. Если этот бит задан, алгоритм в настоящее время конвергентно. Алгоритм может временно потерять конвергенцию при изменении акустического пути. Флаг конвергенции в режиме реального времени фильтруется, чтобы предотвратить неуместное переключение битов состояния CH в состояние DSCFX_AEC_STATUS_FD_HISTORY_PREVIOUSLY_DIVERGED.

Требования

Заголовок

Ksmedia.h (включая Ksmedia.h)

См. также

KSNODEPROPERTY

KSNODETYPE_ACOUSTIC_ECHO_CANCEL