오디오 처리 개체 아키텍처
API(오디오 처리 개체)는 Windows 오디오 스트림에 대한 사용자 지정 가능한 소프트웨어 기반 디지털 신호 처리를 제공합니다.
오디오 처리 개체 개요
Windows를 사용하면 OEM 및 타사 오디오 하드웨어 제조업체가 오디오 드라이버의 부가 가치 기능의 일부로 사용자 지정 디지털 신호 처리 효과를 포함할 수 있습니다. 이러한 효과는 사용자 모드 시스템 효과 API(오디오 처리 개체)로 패키지됩니다.
API(오디오 처리 개체)는 Windows 오디오 스트림에 대한 소프트웨어 기반 디지털 신호 처리를 제공합니다. APO는 특정 DSP(디지털 신호 처리) 효과를 제공하기 위해 작성된 알고리즘을 포함하는 COM 호스트 개체입니다. 이 기능은 비공식적으로 "오디오 효과"로 알려져 있습니다. API의 예로는 그래픽 이퀄라이저, 반향, tremolo, AEC(Acoustic Echo Cancellation) 및 AGC(자동 게인 제어)가 있습니다. API는 COM 기반의 실시간 in-process 개체입니다.
참고 이 설명서의 설명 및 용어는 주로 스피커와 같은 출력 디바이스를 나타냅니다. 그러나 이 기술은 대칭이며 기본적으로 입력 디바이스에 대해 역방향으로 작동합니다.
소프트웨어 API 및 하드웨어 DSP
DSP(하드웨어 디지털 신호 프로세서)는 디지털 신호 처리의 운영 요구 사항에 최적화된 아키텍처를 갖춘 특수 마이크로프로세서(또는 SIP 블록)입니다. 소프트웨어 APO를 사용하는 대신 용도에 맞게 빌드된 하드웨어에서 오디오 처리를 구현하는 데 상당한 이점이 있을 수 있습니다. 한 가지 장점은 하드웨어 구현 DSP에서 CPU 사용 및 관련 전력 소비가 낮을 수 있다는 것입니다.
소프트웨어 기반 APO를 구현하기 전에 고려해야 할 프로젝트 목표 및 제약 조건과 관련된 다른 장점과 단점이 있습니다.
소프트웨어 기반 효과는 스트림 초기화 시 소프트웨어 디바이스 파이프에 삽입됩니다. 이러한 솔루션은 기본 CPU에 대한 모든 효과 처리를 수행하며 외부 하드웨어에 의존하지 않습니다. 이 유형의 솔루션은 드라이버 및 하드웨어가 RAW 처리만 지원하는 경우 HDAudio, USB 및 Bluetooth 디바이스와 같은 기존 Windows 오디오 솔루션에 가장 적합합니다. RAW 처리에 대한 자세한 내용은 오디오 신호 처리 모드를 참조하세요.
하드웨어 DSP용 프록시 APO
하드웨어 DSP에 적용된 모든 효과는 프록시 APO를 통해 보급해야 합니다. Microsoft는 기본 프록시 APO(MsApoFxProxy.dll)를 제공합니다. Microsoft 제공 APO를 사용하려면 이 속성 집합 및 속성을 지원해야 합니다.
필요에 따라 고유한 프록시 APO를 구현할 수 있습니다.
Windows 제공(시스템) API
Windows는 다양한 오디오 효과를 제공하는 기본 API 집합을 설치합니다. 시스템에서 제공하는 APO 효과 목록은 오디오 신호 처리 모드를 참조하세요.
OEM은 제공된 모든 시스템 API를 포함하거나 일부 또는 전부를 사용자 지정 APO로 바꿀 수 있습니다.
사용자 지정 API
추가 오디오 효과를 추가하여 Windows 오디오 환경을 향상시키기 위해 사용자 지정 API를 만들 수 있습니다.
OEM은 Windows를 제공할 때 제공된 Windows API와 사용자 지정 API의 조합을 포함할 수 있습니다.
OEM 또는 타사에서 사용자 지정 APO를 설치하여 디바이스를 구매한 후 오디오 환경을 향상시킬 수 있습니다. 사용자가 표준 INF 파일을 사용하여 오디오 디바이스 드라이버를 설치하면 자동으로 시스템의 API에 액세스할 수 있습니다. IHV(독립 하드웨어 공급업체) 및 OEM(원본 장비 제조업체)은 Microsoft 클래스 드라이버를 사용하는 동안 추가 사용자 지정 시스템 효과를 제공할 수 있습니다. 이렇게 하려면 DSP 알고리즘을 API로 패키징하고 표준 INF 파일을 수정하여 오디오 엔진의 신호 처리 그래프에 API를 삽입합니다.
사용자 지정 API를 만드는 방법에 대한 자세한 내용은 오디오 처리 개체 구현을 참조하세요.
사용자 지정 APO 지원 앱
사용자가 사용자 지정 APO와 연결된 설정을 구성할 수 있도록 하려면 하드웨어 지원 앱을 만드는 것이 좋습니다. 자세한 내용은 HSA(하드웨어 지원 앱): 드라이버 개발자를 위한 단계를 참조하세요.
사용자 지정 APO 테스트 및 요구 사항
Microsoft HLK는 API와 함께 사용할 수 있는 테스트를 제공합니다. 오디오 테스트에 대한 자세한 내용은 Device.Audio Testing 및 Device.Audio Tests를 참조하세요.
이러한 두 테스트는 API로 작업할 때 특히 유용할 수 있습니다.
API를 지원하기 위한 오디오 요구 사항에 대한 자세한 내용은 Device.Audio 요구 사항을 참조하세요.
사용자 지정 APO 도구 및 유틸리티
"오디오 효과 검색 샘플"을 사용하여 사용 가능한 오디오 효과를 탐색할 수 있습니다. 이 샘플에서는 오디오 디바이스 렌더링 및 캡처에 대한 오디오 효과를 쿼리하는 방법과 오디오 효과로 변경 내용을 모니터링하는 방법을 보여 줍니다. SDK 샘플의 일부로 포함되며 다음 링크를 사용하여 다운로드할 수 있습니다.
애플리케이션 오디오 효과 인식
애플리케이션은 API를 호출하여 시스템에서 현재 활성 상태인 오디오 효과를 확인할 수 있습니다. 오디오 효과 인식 API에 대한 자세한 내용은 AudioRenderEffectsManager 클래스를 참조하세요.
오디오 처리 개체 아키텍처
오디오 효과 배치
API로 구현된 오디오 효과에 대한 세 가지 위치가 있습니다. SFX(스트림 효과), MFX(모드 효과) 및 엔드포인트 효과(EFX)에 있습니다.
스트림 효과(SFX)
스트림 효과 APO에는 모든 스트림에 대한 효과의 instance 있습니다. 스트림 효과는 지정된 모드에 대한 혼합(렌더링) 이전 또는 티(캡처) 뒤이며 믹서 앞의 채널 수를 변경하는 데 사용할 수 있습니다. 스트림 효과는 원시 스트림에 사용되지 않습니다.
일부 버전의 Windows는 최적화로 SFX 또는 MFX API를 RAW 모드로 로드하지 않습니다.
- Windows 8.1 RAW SFX 또는 RAW MFX를 로드하지 않습니다.
- Windows 10 RAW MFX를 로드하지만 RAW SFX는 로드하지 않습니다.
모드 효과(MFX)
MFX(모드 효과)는 동일한 모드로 매핑되는 모든 스트림에 적용됩니다. 모드 효과는 혼합(렌더링) 이후 또는 지정된 모드의 티(캡처) 앞에 적용되지만, 혼합(렌더링) 이전 또는 모든 모드의 티(캡처) 다음에 적용됩니다. 스트림 효과의 세부 사항이 필요하지 않은 시나리오별 효과 또는 효과는 여기에 배치해야 합니다. 주기성 및 형식과 같은 동일한 특성을 공유하는 여러 스트림에 대해 하나의 instance 있으므로 모드 효과를 사용하는 것이 더 효율적입니다.
엔드포인트 효과(EFX)
EFX(엔드포인트 효과)는 동일한 엔드포인트를 사용하는 모든 스트림에 적용됩니다. 엔드포인트 효과는 원시 스트림에도 항상 적용됩니다. 즉, 혼합(렌더링) 이후 또는 모든 모드의 티(캡처) 이전입니다. 엔드포인트 효과는 주의하여 사용해야 하며, 의심스러운 경우 모드 영역에 효과를 적용해야 합니다. 엔드포인트 영역에 배치해야 하는 일부 효과는 화자 보호 및 화자 보정입니다.
이 다이어그램은 Windows 10 스트림(SFX), 모드(MFX) 및 엔드포인트(EFX) 효과에 대한 가능한 위치를 보여 줍니다.
여러 사용자 지정 APO 효과
여러 애플리케이션에서 작동하도록 여러 APO 기반 효과를 구성할 수 있습니다.
이 다이어그램에서는 여러 애플리케이션이 스트림, 모드 및 엔드포인트 APO 효과의 여러 조합에 액세스할 수 있는 방법을 보여 줍니다. 모든 API는 COM 기반이며 사용자 모드에서 실행됩니다. 이 시나리오에서는 어떤 효과도 하드웨어 또는 커널 모드에서 실행되지 않습니다.
참고 이 페이지의 맨 아래에 있는 스크롤 막대를 사용하여 이 다이어그램을 모두 볼 수 있습니다.
렌더링 및 캡처를 위한 소프트웨어 모드 효과 및 하드웨어 엔드포인트 효과
이 다이어그램에서는 렌더링 및 캡처를 위한 소프트웨어 모드 효과 및 하드웨어 엔드포인트 효과를 보여 줍니다.
하드웨어 효과가 있는 DSP 장착 시스템
이 다이어그램은 하드웨어에서 효과를 구현하는 DSP 장착 시스템을 보여 줍니다. 이 시나리오에서는 하드웨어에서 구현되는 효과를 앱에 알리기 위해 프록시 APO를 만들어야 합니다.