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 및 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 핀의 데이터 형식 요약
DirectSound 애플리케이션은 AEC 시스템 필터를 사용하도록 설정할 때, 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 렌더링 핀은 다음 형식을 처리할 수 있습니다.
두 개의 채널이 있는 16kHz 16비트 PCM(스테레오)
두 개의 채널이 있는 16kHz 8비트 PCM
두 개의 채널이 있는 48kHz 16비트 PCM
두 개의 채널이 있는 48kHz 8비트 PCM
두 개의 채널이 있는 44.1kHz 16비트 PCM
두 개의 채널이 있는 44.1kHz 8비트 PCM
렌더링 핀은 AEC 노드의 단일 채널을 출력 스트림의 두 채널로 복사하여 스테레오 스트림을 생성합니다.
캡처 인 핀은 다음 형식을 처리할 수 있습니다.
채널 수에 상관없이 16kHz 16비트 PCM
채널 수에 상관없이 48-kHz 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 Stream 데이터 범위를 참조하세요.