WASAPI

 


[image]
1. 개요
2. 설명
3. 플레이어 세팅법
4. 관련 링크

'''W'''indows '''A'''udio '''S'''ession '''API'''

1. 개요


Microsoft에서 Windows Vista 이후 버전에서 제공하는 Sound Device와 연결을 위한 방법.

2. 설명


DirectSound는 아키텍처상 Hardware Abstract Layer를 지날 때 Kernel Wave Audio Mixer(이하 KMixer)라고 불리는 커널 믹서를 통과하도록 설계되었다.[1] 이 KMixer를 통과할 때 음질 열화 및 큰 레이턴시가 일어난다는 문제가 있기 때문에, Vista부터는 이 부분의 아키텍처 자체를 완전히 뜯어고쳐서 KMixer를 배제한 오디오 시스템을 구성하기에 이른다.
ASIO와 같이 Exclusive Mode(단독 모드)를 지원하기 때문에, 단독 모드로 동작 시에는 리샘플링 없이 비트 퍼펙트로 사운드 드라이버에 데이터를 전송할 수 있으므로 디지털 데이터 전송구간[2]에서는 음질 열화가 없다. 그러나 단독 모드라는 이름으로도 알 수 있듯이 다른 프로그램에서 사운드 드라이버에 접근할 수 없도록 하므로 단독 모드를 활성화시킨 프로그램 외에서 발생하는 소리는 들을 수 없게 된다. 예를 들어, 단독 모드로 노래 들으면서 게임을 하면 게임 사운드가 나오지 않는다.
레이턴시가 매우 크게 개선되어[3], 디지털 오디오 녹음 작업 및 음악 게임 등과 같이 음악의 지연에 민감한 프로그램에서는 DirectSound를 빠르게 대체하고 있다.
Windows Vista 이상의 운영체제에서는 프로그램에서 KMixer가 완전히 삭제되었으며, 프로그램에서 MME나 DirectSound를 사용하면 실제로는 WASAPI(Shared Mode)로 출력된다. 또한 이러한 이유 때문에 EAX와 같은 하드웨어 가속 기능을 정상적으로 사용할 수 없게 되었으며, 반대로 하드웨어 가속 기능이 없는 내장 사운드 칩셋[4]은 WASAPI로 인해 오히려 성능이 향상되는 뜻밖의 이득(?)[5]을 보게 되었다.
Windows VistaWindows 7에서는 MME WaveIn/WaveOut API를 사용하는 프로그램에서 샘플 레이트 변환을 요구할 때 품질이 저하되는 버그가 있었다. MME를 WASAPI로 에뮬레이트하는 드라이버에 문제가 있었기 때문인데, 이 문제는 Windows 7 SP1 및 Windows Server 2008 R2 SP1 한정으로 핫픽스를 설치해주면 해결된다. 마이크로소프트에서 핫픽스 제공을 중단했기 때문에 다른 사이트에서 구해야 한다. 64비트 32비트 Windows 8부터는 해결되어서 따로 적용할 필요가 없다.

3. 플레이어 세팅법


기본 형식 설정 방법은 다음과 같다.
  • 제어판 - 소리 - 스피커나 헤드폰 등 자신이 사용하는 장치 더블 클릭 - 고급에서 기본형식을 변경
반디캠, 골드웨이브, 곰녹음기(2.0 이후) 등에서는 WASAPI를 이용해서 녹음하는 것도 가능하다. 출력되는 소리를 Loopback 방식으로 녹음하는 것이기 때문에 음질이 손상되지 않으며, 시스템 마스터 볼륨의 영향을 받지 않는다. 또한 스테레오 믹스가 없는 사운드 카드에서도 녹음을 할 수 있다는 장점이 있다.

4. 관련 링크



[1] kmixer.sys 커널 드라이버 내부를 확인해보면 OS 옵션을 통해 이를 우회하는 조건문이 있기는 하나 일반적인 옵션이 아니다.[2] 디스크 → 메모리 → (CPU 혹은 DMA) → 사운드카드 경로[3] 해외포럼의 반응들 가운데에는 70ms → 4ms 라는 보고도 있다. 이는 ASIO를 사용했을 때와 거의 비슷한 결과이다. ASIO는 사운드카드가 전용 드라이버를 제공하거나 유저가 ASIO4ALL을 별도로 설치해야 하는 문제가 있는 반면, WASAPI는 Windows Vista 이상 OS만 설치되어 있으면 바로 동작하므로 ASIO보다 편리하다.[4] 메인보드에 붙어있는 CODEC에서 신호를 입/출력하는 것이 끝이다. 별도의 프로세서가 없기 때문에 사운드 처리는 모두 CPU에서 이루어진다.[5] 똑같이 CPU를 사용하지만 처리 방식이 개선되고 우선순위를 정할 수 있게 되어서 실제 성능이 향상되기 때문이다.

분류