최근 수정 시각 : 2022-08-11 09:51:38

WASAPI

파일:Microsoft 로고.svg
{{{#!wiki style="margin:0 -10px -5px"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin:-6px -1px -11px"
{{{#000,#e5e5e5
산하 계열사 및 사업부
GitHub · .NET Foundation · Xbox Game Studios · LinkedIn
제품군
하드웨어 Surface · Xbox · HoloLens · PixelSense · Zune
소프트웨어 Windows · Office · Edge · Media Player · Hyper-V · Microsoft Defender · Visual Studio Code · Visual Studio · Windows Terminal · Microsoft PowerToys · Internet Explorer · MS-DOS · Windows Movie Maker · Autoruns
서비스 Microsoft Azure · OneDrive · Skype · MSN · Bing · LinkedIn · Cortana · 테이 · Xbox network · 정품 인증 · MSDN
관련 기술 ASF · ASP · Blazor · COM · DCOM · DirectX · 파일 시스템( FAT · NTFS · ReFS) · MFC · .NET( .NET Core · .NET Standard · C# · F# · Visual Basic .NET · Windows Forms · WPF · Universal Windows Platform · ASP.NET · ML.NET) · OLE · Silverlight · Visual Basic · VBA · WASAPI · Windows 커널 · Windows 디자인 · Windows API · Windows Runtime · WMA · WMV · Xamarin · XNA
관련 인물
빌 게이츠(은퇴) · 폴 앨런(은퇴) · 스티브 발머(퇴사) · 게이브 뉴웰(퇴사) · 사티아 나델라 · 필 스펜서
기타
Microsoft의 제니맥스 미디어 인수 · Microsoft의 액티비전 블리자드 인수 · 빌 게이츠의 굴욕
관련 틀
365 제품군 · 하드웨어 제품군 · Surface 제품군 · Windows 제품군
}}}}}}}}}}}} ||

파일:attachment/ASIO/audio_vista_whitepaper_im2.jpg
1. 개요2. 반응속도 개선3. 단독 모드4. 하위 호환성5. 문제점6. 플레이어 세팅법7. 같이 보기


Windows Audio Session API

1. 개요

Windows에서 오디오 장치와의 연결을 위한 API.

WASAPI 이전의 윈도우 오디오 아키텍처는 하드웨어 추상화 계층을 지날 때 커널 드라이버인 Kernel Wave Audio Mixer(이하 KMixer)를 통과하도록 설계되었다. DirectX를 통하더라도 이를 우회하는 것은 불가능하였다.[1] 문제는 KMixer를 통과할 때 음질 열화 및 큰 레이턴시[2]가 일어났기 때문에, Vista에서는 이를 해결하는 새로운 오디오 아키텍처인 WASAPI를 만들게 되었고, Vista를 시작으로 이후 버전의 Windows에서 KMixer는 사용되지 않는다.

이름에서도 알 수 있듯이 KMixer는 커널에 붙어 있어 커널 모드에서 동작하였지만, WASAPI부터는 공유모드의 믹서, 볼륨 등의 오디오 아키텍처의 상당부분이 사용자 모드에서 동작하도록 변경되었다.

2. 반응속도 개선

레이턴시가 매우 크게 개선되어, 디지털 오디오 녹음 작업 및 음악 게임 등과 같이 음악의 지연에 민감한 프로그램에서는 DirectSound를 빠르게 대체하고 있다.

해외포럼의 반응들 가운데에는 70ms → 4ms 라는 보고도 있다. 이는 ASIO를 사용했을 때와 거의 비슷한 결과이다. ASIO는 사운드카드가 전용 드라이버를 제공하거나 유저가 ASIO4ALL을 별도로 설치해야 하는 문제가 있는 반면, WASAPI는 Windows Vista 이상 OS만 설치되어 있으면 바로 동작하므로 ASIO보다 편리하다. 지금은 대부분의 DAW가 WASAPI를 지원하므로 옛날 이야기가 되었지만 macOS가 성공적으로 모든 소프트웨어가 CoreAudio로 포팅이 된 것에 반해 Windows의 메이저 DAW와 같은 소프트웨어들이 ASIO와 같은 독자 프로토콜이나 MME/DirectSound 와 같은 레거시 인터페이스만 지원하고 WASAPI를 네이티브로 지원하는 경우가 극히 적다보니 FlexASIO와 같은 WASAPI-ASIO 레이어를 별도로 사용해야 하는 문제들이 있었다. 이 경우 하단의 서술처럼 ASIO 없이도 10ms 이하의 레이턴시 달성이 가능하다. 물론 앞서 이야기한 대로 이제는 아무래도 상관없는 이야기이다.

Windows 10 부터 추가된 WASAPI 동작 모드중 하나인 Low Latency 모드를 사용할 경우 WASAPI 스택 자체에 걸리는 처리 시간은 Shared 상태에서도 1.3ms에 불과하다. Windows 10 이전의 엔진 자체만 12ms의 처리 시간이 걸리던 것에 비해 엄청나게 개선된 성능이다.

3. 단독 모드

WASAPI에는 공유 모드와 단독 모드가 있다. 단독 모드로 동작 시에는 공유 모드에서 사용되는 샘플레이트 컨버터, 믹서 음향 효과를 통과하지 않고, 비트 퍼펙트로 사운드 드라이버에 데이터를 전송할 수 있다. 컴퓨터 내부의 처리구간[3]에서는 음원 데이터의 변화가 없고, 지연시간도 줄어든다. 그러나 단독 모드라는 이름으로도 알 수 있듯이 어떤 응용 프로그램이 단독 모드를 사용하면 다른 응용 프로그램에서 해당 오디오 장치에 접근할 수 없다. 예를 들어, 단독 모드로 노래 들으면서 게임을 하면 게임 사운드가 나오지 않는다. 리듬게임 등 5ms같은 짧은 지연시간도 더하고 싶지 않을 때, 또는 음악을 비트퍼펙트(음원 무변환)로 듣고자 할 때 사용한다.

4. 하위 호환성

응용 프로그램이 MME나 DirectSound를 사용하려고 하면, 호환성 레이어를 통해 WASAPI 공유 모드로 출력된다. 그러나 EAX와 같은 하드웨어 가속 기능은 정상적으로 사용할 수 없게 되었다. 그러나 하드웨어 가속 기능이 없는 사운드 카드를 사용하는 경우에는 오히려 성능이 향상되는 효과를 보았다. WASAPI에서의 처리 방식이 개선되고 우선순위를 정할 수 있게 되어서 실제 성능이 향상되기 때문이다.

5. 문제점

Windows Vista Windows 7에서는 MME WaveIn/WaveOut API를 사용하는 프로그램에서 샘플 레이트 변환을 요구할 때 품질이 저하되는 버그가 있었다. MME를 WASAPI로 에뮬레이트하는 드라이버에 문제가 있었기 때문인데, 이 문제는 Windows 7 SP1 및 Windows Server 2008 R2 SP1 한정으로 핫픽스를 설치해주면 해결된다. 마이크로소프트에서 핫픽스 제공을 중단했기 때문에 다른 사이트에서 구해야 한다. 64비트 32비트 Windows 8부터는 해결되어서 따로 적용할 필요가 없다.

6. 플레이어 세팅법

기본 형식 설정 방법은 다음과 같다.
  • 제어판 - 소리 - 스피커나 헤드폰 등 자신이 사용하는 장치 더블 클릭 - 고급에서 기본형식을 변경

반디캠, 골드웨이브, 곰녹음기(2.0 이후) 등에서는 WASAPI를 이용해서 녹음하는 것도 가능하다. 출력되는 소리를 Loopback 방식으로 녹음하는 것이기 때문에 음질이 손상되지 않으며, 시스템 마스터 볼륨의 영향을 받지 않는다. 또한 스테레오 믹스가 없는 사운드 카드에서도 녹음을 할 수 있다는 장점이 있다.

7. 같이 보기



[1] kmixer.sys 드라이버 내부를 확인해보면 OS 옵션을 통해 이를 우회하는 조건문이 있기는 하나 일반적인 옵션이 아니다. [2] 최소 20ms 이상 [3] 응용 프로그램 → 오디오 드라이버 → 사운드카드 경로