WASAPI

덤프버전 : r20240101

파일:Microsoft 로고.svg

[ 펼치기 · 접기 ]

||<-2><tablebgcolor=#FFFFFF,#1F2023><bgcolor=#888888,#2D2F34><tablewidth=100%> 산하 계열사 및 사업부 ||
||<-2><width=100%> GitHub · .NET Foundation · Xbox Game Studios · LinkedIn ||
||<-2><bgcolor=#888888,#2D2F34><width=100%> 제품군 ||
||<bgcolor=#888888,#2D2F34><width=15%> 하드웨어 ||Surface · Xbox · HoloLens · PixelSense · Zune ||
||<bgcolor=#888888,#2D2F34> 소프트웨어 ||Windows · Office · Edge · Hyper-V · MS-DOS · Groove 음악 · Microsoft Defender · Visual Studio Code · Visual Studio · Windows Terminal · Microsoft PowerToys · Internet Explorer · Windows Media Player · Windows Movie Maker ||
||<bgcolor=#888888,#2D2F34> 서비스 ||Microsoft Azure · OneDrive · Skype · MSN · Bing · LinkedIn · 코타나 · 테이 · Xbox Live · 정품 인증 · MSDN ||
||<bgcolor=#888888,#2D2F34> 관련 기술 ||Windows 커널 · Windows 디자인 · ASF · 블레이저 · DirectX · FAT · NTFS · ReFS · MFC · .NET · COM · DCOM · OLE · ActiveX · ASP · Universal Windows Platform · WASAPI · WMA · WMV · Windows API · Windows Runtime · Xamarin · XNA · Silverlight ||
||<-2><bgcolor=#888888,#2D2F34><width=100%> 관련 인물 ||
||<-2><width=100%> 빌 게이츠(은퇴) · 폴 앨런(은퇴) · 스티브 발머(퇴사) · 게이브 뉴웰(퇴사) · 사티아 나델라 · 필 스펜서 ||



파일: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 이상 운영 체제만 설치되어 있으면 바로 동작하므로 ASIO보다 편리하다. 지금은 대부분의 DAW가 WASAPI를 지원하므로 옛날 이야기가 되었지만 macOS가 성공적으로 모든 소프트웨어가 Core Audio로 이식된 것에 반해 Windows의 메이저 DAW와 같은 소프트웨어들이 ASIO와 같은 독자 프로토콜이나 MME/DirectSound 와 같은 레거시 인터페이스만 지원하고 WASAPI를 네이티브로 지원하는 경우가 극히 적다보니 FlexASIO와 같은 WASAPI-ASIO 레이어를 별도로 사용해야 하는 문제들이 있었다. 이 경우 하단의 서술처럼 ASIO 없이도 Shared 모드 기준 10ms의 레이턴시 달성이 가능하고 ASIO와 같은 Exclusive 모드에서는 2ms대의 레이턴시 달성이 가능하다. 다만 실제로 코딩을 해보면, Exclusive 모드 기준으로도 대부분 (Realtek ASIO, USB 꼬다리댁 등) 환경에서 최소 지연시간이 144샘플 (48kHz 환경에서 3.0ms) 까지만 나오므로 유의. ASIO 장치에서 설정할 수 있는 64/32 버퍼사이즈는 실제로 WASAPI에선 잘 안 얻어지는것으로 보인다.

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

아래 문단에서 설명하는 Exclusive모드의 경우 ASIO와 같이 한 프로그램만이 독점적으로만 사용이 가능해서 DAW를 사용하면 다른 프로그램은 소리를 출력하는 것이 불가능 한 문제가 있는데 WASAPI Low latency mode의 경우 Shared 모드를 지원하면서 Exclusive에서 보이는 레이턴시를 사용하는 것이 가능하다는 큰 장점이 있다.

다만 많은 수의 DAW를 포함한 프로그램들이 WASAPI를 지원해도 이 Low Latency 모드를 지원하는 DAW는 많지 않은데 이 모드를 지원하는 경우 일반 내장 리얼텍 사운드 카드만 가지고도 2.7ms의 라운드 트립 레이턴시를 사용하는것이 가능하다.

3. 단독 모드[편집]


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

4. 하위 호환성[편집]


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


5. 문제점[편집]


Windows VistaWindows 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. 같이 보기[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-05 04:48:24에 나무위키 WASAPI 문서에서 가져왔습니다.

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