AEC 시스템 필터

AEC 시스템 필터(Aec.sys)는 소프트웨어에서 AEC(음향 에코 취소) 및 NS(노이즈 억제) 알고리즘을 구현합니다. 이 필터는 Windows XP 이상에서 표준 운영 체제 구성 요소입니다. DirectSoundCapture 애플리케이션에서 AEC 시스템 필터를 사용하도록 설정하는 방법에 대한 자세한 내용은 Microsoft Windows SDK 설명서를 참조하세요.

AEC 시스템 필터에 의해 부과되는 제약 조건

AEC 시스템 필터에서 구현되는 캡처 효과를 통합하는 오디오 필터 그래프에는 다음과 같은 제한 사항이 적용됩니다.

  • AEC 시스템 필터는 PCM 데이터 형식을 처리하는 핀에만 연결할 수 있습니다.

  • 비트 깊이는 캡처 스트림의 경우 16비트, 렌더링 스트림의 경우 8비트 또는 16비트여야 합니다.

  • AEC 시스템 필터는 16kHz에서 모든 내부 처리를 수행합니다. 입력 및 출력 스트림은 필요에 따라 변환된 원본 속도입니다.

  • Windows XP SP1, Windows Server 2003 이상에서는 AEC 시스템 필터의 캡처 아웃 및 렌더링 핀(다음 그림 참조)의 샘플 속도가 동일해야 하지만 캡처 및 렌더링 핀의 샘플 속도는 각각 다른 핀과 독립적으로 선택할 수 있습니다. 캡처 핀의 샘플 속도는 (기본 설정 순서대로) 16kHz, 48kHz, 44.1kHz 또는 8kHz일 수 있습니다. (기본 설정 순서는 처리 시간 및 오디오 품질을 기반으로 합니다.) 렌더링 핀의 샘플 속도는 (기본 설정 순서대로) 16kHz, 48kHz 또는 44.1kHz일 수 있습니다. 렌더링 핀은 8kHz의 샘플 속도를 지원하지 않습니다.

AEC 시스템 필터의 핀 및 연결을 보여 주는 다이어그램

  • AEC 및 NS 노드( Hardware-Accelerated 캡처 효과 노출의 그림 참조)는 모노포닉 스트림만 처리할 수 있습니다. 캡처 스트림이 다중 채널(예: 2채널 스테레오)인 경우 첫 번째 채널 이외의 모든 채널은 무시되고 삭제됩니다. 렌더링 쪽에서는 모노포닉 스트림만 처리할 수 있습니다.

  • Windows XP SP1, Windows Server 2003 이상에서는 이 제한이 없습니다. AEC 시스템 필터는 캡처 및 렌더링 스트림에 대한 클록 간의 불일치를 올바르게 처리하며 캡처 및 렌더링에 별도의 디바이스를 사용할 수 있습니다.

  • AEC 시스템 필터를 사용하는 경우 SysAudio 시스템 드라이버는 혼합, 샘플 속도 변환, 3D 공간화 등을 위해 하드웨어 가속을 해제합니다. 스트림의 모든 혼합은 KMixer 시스템 드라이버에 의해 소프트웨어 에뮬레이션에서 수행됩니다. 이 제한은 렌더링 디바이스에서 재생되는 모든 오디오가 AEC 시스템 필터에 의해 캡처 스트림에서 취소될 수 있도록 하는 데 필요합니다.

  • 그래프의 캡처 쪽 또는 렌더링 쪽의 AEC 또는 NS 노드 다음에 AEC 또는 NS 노드 이전에 수행되는 모든 신호 처리는 선형 시간 고정이어야 합니다. 이러한 위치 중 하나에서 비선형 또는 시간이 다른 신호 처리를 수행하면 AEC가 캡처 신호의 에코를 취소하지 않습니다.

  • AEC 필터링은 컴퓨터의 AEC 필터링 채널에서 오는 에코만 취소합니다. AEC를 통과하지 않는 채널을 통해 출력되는 오디오는 에코 취소되지 않습니다. 비 AEC 오디오 채널의 에코는 컴퓨터 옆에 있는 사무실의 라디오에서 재생되는 오디오의 에코와 기능적으로 동일합니다. AEC는 라디오 또는 비 AEC 채널에서 에코를 취소할 방법이 없으며 아무런 영향도 주지 않습니다.

위의 요구 사항은 Aec.sys 구현된 캡처 효과를 통합하는 모든 커널 스트리밍 오디오 필터 그래프에 적용됩니다. 이러한 제한은 AEC 시스템 필터의 설계 및 구현에 대한 기본 가정을 반영합니다. 스트림 형식에 대한 제약 조건은 이후 버전의 Windows에서 변경될 수 있습니다.

AEC 시스템 필터를 사용하는 모든 제품 디자인은 이전 제약 조건을 고려해야 합니다. 다음 질문과 답변은 이러한 제약 조건이 AEC 필터링 동작에 미치는 영향을 보여 줍니다.

Q: 스테레오 렌더링을 위한 DirectSound 버퍼를 만들었지만 AEC를 사용할 때 두 채널 모두 동일하게 들립니다. 그 이유는 무엇입니까?

A: AEC는 모노 스트림에서만 작동하므로 KMixer는 이 제약 조건을 충족하기 위해 스테레오 스트림을 모노로 다시 혼합합니다.

Q: AEC를 사용할 때 44kHz, 16비트 오디오가 16kHz처럼 들리는 이유는 무엇인가요?

A: AEC 시스템 필터는 16kHz에서 모든 내부 처리를 수행하기 때문입니다.

Q: AEC를 사용하여 하드웨어 가속 DirectSound 버퍼를 가져올 수 없는 이유는 무엇인가요?

A: AEC를 사용하도록 설정하면 SysAudio가 하드웨어 가속 혼합을 해제하기 때문입니다.

Q: AEC 시스템 필터가 이전 사운드 블래스터 16 카드 작동합니까?

A: 예. Sound Blaster16 카드 동시에 16비트 렌더링 및 캡처 스트림을 관리할 수 없지만 8비트 렌더링 스트림과 16비트 캡처 스트림을 동시에 관리할 수 있습니다. 이는 AEC 시스템 필터의 렌더링 및 캡처 핀이 지원하는 조합입니다. 새 오디오 카드는 렌더링 및 캡처 모두에 대해 16비트 이상의 비트 깊이를 지원하도록 설계되어야 합니다.

AEC 핀에 대한 데이터 형식 요약

AEC 시스템 필터를 사용하도록 설정하는 DirectSound 애플리케이션은 KMixer에서 지원하는 샘플 속도 또는 샘플 크기로 DirectSound 버퍼를 선택할 수 있습니다. KMixer는 AEC 시스템 필터에 들어가기 전에 애플리케이션의 렌더링 버퍼에서 16kHz 모노 16비트 형식으로 데이터를 변환합니다. 마찬가지로 KMixer는 DirectSoundCapture 애플리케이션의 캡처 버퍼를 대상으로 하는 데이터를 AEC 시스템 필터를 종료한 후 16kHz 모노 16비트 형식으로 변환할 수 있습니다. 그러나 그래프에서 수행되는 처리량을 최소화하고 최고 오디오 품질을 얻으려면 애플리케이션은 렌더링 및 캡처 버퍼 모두에 16kHz 모노 16비트 형식을 사용해야 합니다.

오디오 하드웨어가 AEC 시스템 필터로 작동하도록 하려면 하드웨어 렌더링 핀이 AEC 렌더링 핀에서 지원하는 샘플 속도 중 하나 이상을 지원해야 하며 하드웨어 캡처 핀은 AEC 캡처 핀에서 지원하는 샘플 속도 중 하나를 지원해야 합니다. 최상의 AEC 성능을 달성하려면 하드웨어에서 지원하는 더 높은 속도 외에도 16kHz 샘플 속도를 지원해야 합니다. 하드웨어는 16kHz 속도를 지원하여 샘플 속도 변환을 수행할 필요가 없도록 하여 AEC 시스템 필터가 수행해야 하는 처리량을 줄입니다.

AEC 시스템 필터의 렌더링 핀은 KMixer의 출력 핀에 연결됩니다. KMixer는 입력 스트림의 필요한 변환을 렌더링 핀에 필요한 형식으로 변환합니다. 렌더링 핀은 다음 두 가지 데이터 형식만 지원합니다.

  • 샘플 크기가 16비트인 16kHz 모노 PCM 형식

  • 샘플 크기가 8비트인 16kHz 모노 PCM 형식

캡처 아웃 핀은 하나의 형식만 지원합니다.

  • 샘플 크기가 16비트인 16kHz 모노 PCM 형식

DirectSoundCapture 애플리케이션의 버퍼 형식이 16kHz 모노 16비트 PCM인 경우 AEC 캡처 아웃 핀은 KMixer를 무시하고 DSound.DLL 직접 연결할 수 있습니다(이전 그림 참조). 그렇지 않으면 AEC 캡처 아웃 핀이 KMixer에 연결됩니다. 이 핀은 16kHz 모노 16비트 PCM 스트림을 핀에서 애플리케이션의 캡처 버퍼가 사용하는 형식으로 변환합니다.

AEC 렌더링 핀은 다음 형식을 처리할 수 있습니다.

  • 2개의 채널이 있는 16kHz 16비트 PCM(스테레오)

  • 2개의 채널이 있는 16kHz 8비트 PCM

  • 2개의 채널이 있는 48kHz 16비트 PCM

  • 2개의 채널이 있는 48kHz 8비트 PCM

  • 2개의 채널이 있는 44.1kHz 16비트 PCM

  • 2개의 채널이 있는 44.1kHz 8비트 PCM

렌더링 핀은 AEC 노드의 단일 채널을 출력 스트림의 두 채널로 복사하여 스테레오 스트림을 생성합니다.

캡처 인 핀은 다음 형식을 처리할 수 있습니다.

  • 채널 수가 없는 16kHz 16비트 PCM

  • 채널 수가 없는 48kHz 16비트 PCM

  • 채널 수가 있는 44.1kHz 16비트 PCM

  • 채널 수가 없는 8kHz 16비트 PCM

캡처 인 핀은 첫 번째 채널만 사용하고 다른 채널을 무시하고 삭제합니다.

모든 AEC 시스템 필터의 핀은 다음 표에 표시된 데이터 형식 매개 변수 값을 사용합니다.

KSDATARANGE 멤버 매개 변수 값

MajorFormat

KSDATAFORMAT_TYPE_AUDIO

SubFormat

KSDATAFORMAT_SUBTYPE_PCM

지정자

KSDATAFORMAT_SPECIFIER_WAVEFORMATEX

MajorFormat, SubFormat지정자 멤버에 대한 자세한 내용은 KSDATARANGE를 참조하세요. 이러한 세 가지 매개 변수 값을 사용하는 KSDATARANGE_AUDIO 데이터 범위 설명자의 예는 PCM 스트림 데이터 범위를 참조하세요.