Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Системный фильтр AEC (Aec.sys) реализует алгоритмы отмены акустического эха (AEC) и подавления шума (NS) в программном обеспечении. Этот фильтр является стандартным компонентом операционной системы в Windows XP и более поздних версиях. Сведения о том, как приложения DirectSoundCapture позволяют использовать системный фильтр AEC, см. в документации по microsoft Windows SDK.
Ограничения, введенные системным фильтром AEC
Граф аудиофильтра, который включает эффект захвата, реализованный в системном фильтре AEC, имеет следующие ограничения:
Системный фильтр AEC может подключаться только к контактам, обрабатывающим форматы данных PCM.
Глубина бита должна составлять 16 битов для потока записи и 8 или 16 бит для потока отрисовки.
Системный фильтр AEC выполняет всю внутреннюю обработку в 16 кГц. Входные и выходные потоки преобразуются, изменяя скорость источника, по мере необходимости.
В Windows XP SP1, Windows Server 2003 и более поздних версиях у системного фильтра AEC контакты для захвата-out и воспроизведения-in должны иметь одинаковую частоту дискретизации, однако частоты дискретизации на контактах для захвата-in и воспроизведения-out могут выбираться независимо друг от друга. Частота выборки на контакте для захвата может быть (в порядке предпочтения) 16 кГц, 48 кГц, 44,1 кГц или 8 кГц. (Порядок предпочтений основан на времени обработки и качестве звука.) Частота выборки на выходном контакте отрисовки может быть (в порядке предпочтения) 16 кГц, 48 кГц или 44,1 кГц. Обратите внимание, что вывод для отрисовки не поддерживает частоту дискретизации 8 кГц.
Узлы AEC и NS (см. рисунок в разделе "Раскрытие эффектов захвата Hardware-Accelerated") могут обрабатывать только монофонические потоки. Если поток записи является многоканальным (например, двухканальный стерео), все каналы, отличные от первого, игнорируются (и удаляются). Только монофонические потоки могут обрабатываться стороной рендеризации.
В Windows XP с пакетом обновления 1 (SP1) Windows Server 2003 и более поздних версий это ограничение не существует. Системный фильтр AEC правильно обрабатывает несоответствия между часами для потоков записи и воспроизведения, при этом можно использовать отдельные устройства для записи и воспроизведения.
При использовании системного фильтра AEC системный драйвер SysAudio отключает аппаратное ускорение для смешивания, преобразования частоты выборки, трехмерной пространственной обработки и т. д. Все смешивание потоков выполняется в программной эмуляции системным драйвером KMixer. Это ограничение необходимо, чтобы все звуки, воспроизводимые устройством воспроизведения, можно было исключить из потока записи с помощью фильтра системы AEC (системы акустической эхокомпенсации).
Любая обработка сигналов, выполняемая до узла AEC или NS на стороне захвата графа или после узла AEC или NS на стороне отрисовки, должна быть линейной и инвариантной. Выполнение любой нелинейной или временной обработки сигнала в любом из этих мест не позволяет AEC устранять эхо в сигнале захвата.
Фильтрация AEC отменяет только эхо, поступающие из отфильтрованных каналов AEC на компьютере. Звук, выводимый через каналы, минующие AEC, не проходит эхокомпенсацию. Эхо в звуковом канале, отличном от AEC, функционально эквивалентно эхо в звуке, который играет на радио в офисе рядом с компьютером. AEC не имеет способа отмены (и никакого влияния на) эхо от радио или канала, отличного от AEC.
Приведенные выше требования применяются ко всем графам фильтров аудио потоковой передачи на уровне ядра, которые включают эффекты захвата, реализованные в Aec.sys. Эти ограничения отражают фундаментальные предположения в проектировании и реализации системного фильтра AEC. Ограничения в форматах потоков могут измениться в будущих версиях Windows.
Любой дизайн продукта, использующий системный фильтр AEC, должен учитывать предыдущие ограничения. Следующие вопросы и ответы показывают, как эти ограничения могут повлиять на поведение фильтрации AEC:
Вопрос. Я создал буфер DirectSound для стереорисовки, но оба канала звучат одинаково, когда я использую AEC. Почему это так?
Ответ. AEC работает только на монопотоках, поэтому KMixer смешивает стереопоток обратно в моно с целью соответствия этому ограничению.
Почему мой 44-кГц, 16-разрядный звук звучит как 16 кГц при использовании AEC?
Ответ. Так как системный фильтр AEC выполняет всю внутреннюю обработку в 16 кГц.
Вопрос: Почему не удается создать буфер DirectSound с использованием технологии аппаратного ускорения и AEC?
Ответ. Так как SysAudio отключает аппаратное ускорение смешивания при включении AEC.
Вопрос. Будет ли системный фильтр AEC работать со старой картой Sound Blaster 16?
Ответ. Да. Хотя карточка Sound Blaster16 не может одновременно управлять потоками 16-разрядной отрисовки и записи, она может одновременно управлять 8-разрядным потоком отрисовки и 16-разрядным потоком захвата, что является сочетанием, поддерживаемым выводами для отрисовки и захвата системного фильтра AEC. Новые звуковые карты должны быть разработаны для поддержки глубины не менее 16 бит для воспроизведения и записи.
Сводка форматов данных для штырей AEC
Приложение DirectSound, которое включает системный фильтр AEC, может выбрать для буферов DirectSound любую частоту выборки или размер выборки, поддерживаемый KMixer. KMixer преобразует данные из буфера рендеринга приложения в формат 16-разрядный моно с частотой 16 кГц перед тем, как он поступает в системный фильтр AEC. Аналогичным образом KMixer может преобразовать данные, предназначенные для буфера записи приложения DirectSoundCapture, в 16-кГц моно 16-разрядный формат после выхода из системного фильтра AEC. Тем не менее, чтобы свести к минимуму объем обработки в графе и добиться высокого качества звука, приложения должны использовать 16-кГц моно 16-разрядный формат как для отрисовки, так и для буферов записи.
Если вы хотите, чтобы звуковое оборудование работало с системным фильтром AEC, то аппаратный штырь отрисовки должен поддерживать хотя бы одну из частот дискретизации, поддерживаемых выходным штырем отрисовки AEC, а аппаратный штырь записи должен поддерживать одну из частот дискретизации, которые поддерживает входной штырь записи AEC. Чтобы добиться оптимальной производительности AEC, ваше оборудование должно поддерживать частоту выборки 16 кГц в дополнение к любым более высоким ставкам, которые она поддерживает. Благодаря поддержке скорости 16 кГц оборудование сокращает объем обработки, который должен выполнять системный фильтр AEC, устраняя необходимость преобразования частоты выборки.
Фильтр системы AEC соединен с выходным разъемом KMixer. KMixer выполняет необходимое преобразование входных потоков в формат, который требуется входному пину для отрисовки. Пин входа отрисовки поддерживает только два формата данных:
Формат 16-кГц mono PCM с размером выборки 16 бит
Формат 16-кГц mono PCM с размером выборки 8 бит
Штырь захвата поддерживает только один формат:
- Формат 16-кГц mono PCM с размером выборки 16 бит
Если формат буфера приложения DirectSoundCapture - это 16 кГц, моно, 16-разрядный PCM, то выходной контакт AEC может обойти KMixer и напрямую подключиться к DSound.DLL (см. предыдущий рисунок). В противном случае выходной контакт AEC подключается к KMixer, который преобразует поток 16-кГц моно 16-разрядной PCM из контакта в любой формат, используемый буфером захвата приложения.
Пин отрисовки AEC может обрабатывать любой из следующих форматов:
16-кГц 16-разрядная PCM с двумя каналами (стерео)
16-кГц 8-разрядная PCM с двумя каналами
48-кГц 16-разрядная PCM с двумя каналами
48-кГц 8-разрядная PCM с двумя каналами
44,1 кГц 16-разрядная PCM с двумя каналами
44,1 кГц 8-разрядная PCM с двумя каналами
Выходной пин создает стереопоток, копируя один канал из узла AEC в оба канала выходного потока.
Пин захвата может обрабатывать любой из следующих форматов:
16-кГц 16-разрядная PCM с любым количеством каналов
48-кГц 16-разрядная PCM с любым количеством каналов
44,1 кГц 16-разрядная PCM с любым количеством каналов
8-кГц 16-разрядная PCM с любым количеством каналов
Контакт захвата использует только первый канал и игнорирует (и отбрасывает) остальные.
Все контакты фильтра системы AEC используют значения параметра данных формата, показанные в следующей таблице.
| Член KSDATARANGE | Значение параметра |
|---|---|
MajorFormat |
KSDATAFORMAT_TYPE_AUDIO |
SubFormat |
KSDATAFORMAT_SUBTYPE_PCM |
Спецификатор |
KSDATAFORMAT_SPECIFIER_WAVEFORMATEX |
Дополнительные сведения о членах MajorFormat, SubFormat и Описатель см. в разделе KSDATARANGE. Пример дескриптора диапазона данных KSDATARANGE_AUDIO , использующего эти три значения параметров, см. в диапазоне данных PCM Stream.