DirectSound DirectSound 의 고도의 주제 DirectSound 드라이버 모델   [목차열람] [주소복사] [슬롯비우기]
DirectSound 드라이버 모델
 
Microsoft DirectX 9.0

DirectSound 드라이버 모델

VXD 드라이버 모델에서는, DirectSound 의 모든 믹싱은, 가상 장치 드라이버 Dsound.vxd 로 처리된다. Dsound.vxd 는, 사운드 카드가 호스트 CPU 로부터 데이터를 수신하기 위해서 사용하는 실제의 DMA 버퍼에의 액세스도 제공한다. 이것은 DirectSound 1차 버퍼와 같다. DirectSound 애플리케이션은, 샘플링 레이트나 비트 깊이 등, 1차 버퍼의 특정의 프로퍼티를 설정할 수가 있어 따라 하드웨어 자체의 프로퍼티도 변경할 수 있다.

Windows Driver Model (WDM)에서는, DirectSound 는, 하드웨어에 의해 액셀러레이트 된 버퍼의 경우를 제외해, 사운드 하드웨어에 직접 액세스 하지 않는다. 대신에, DirectSound 는 커널 믹서에 데이터를 송신한다. 커널 믹서의 역할은, 복수의 오디오 스트림의 포맷을 공통의 포맷으로 변환해, 이것들을 믹싱 해, 그 결과를 하드웨어에 송신하는 것이다. 어떤 의미로 Dsound.vxd 가 실시하는 처리와 비슷하다. 큰 차이는, Dsound.vxd 가 DirectSound 버퍼의 데이터만을 믹싱 하는데 대해, 커널 믹서는, Win32 의 waveOut 함수를 사용하는 애플리케이션으로부터의 데이터를 포함한, 모든 Windows 오디오 데이터를 믹싱 하는 것이다. DirectSound 와 웨이브 폼 오디오 출력 장치를 동시에 오픈할 수 없다고 하는 규칙은, WDM 드라이버를 사용하는 시스템에는 들어맞지 않는다.

특히 중요한 (일)것은, 커널 믹서와 오디오 하드웨어의 관계이다. 커널 믹서는, 하드웨어의 DMA 버퍼의 포맷을 지정할 수 있는, 시스템상에서 유일한 소프트웨어이다. 커널 믹서는, 믹싱이 요구된 사운드에 근거해 포맷을 선택한다. 출력 포맷은, 믹싱이 요구된 사운드의 최고 품질의 포맷화, 하드웨어로 지원 되고 있다, 거기에 가장 가까운 포맷으로 설정된다.

이것은, 매우 중요한 의미를 가지고 있다. DirectSound 에서는, 하드웨어의 DMA 버퍼의 포맷을 설정할 수 없다고 하는 것이다. 애플리케이션에서는, 하드웨어 포맷은 실제로 연주되는 데이터에 근거하는 것을 의미한다. 44 kHz 의 파일을 재생하는 경우, Kmixer 는 최대 44 kHz 의 모든 데이터를 믹싱 해, 하드웨어가 44 kHz 로 실행되고 있는 것을 확인한다.

애플리케이션 개발자는, 사용되는 드라이버 모델을 선택하지 않는다. 드라이버 모델은, 사운드 카드의 종류, Windows 의 버전, 인스톨 되고 있는 드라이버에 의해 완전하게 결정된다. 이러한 이유로부터, 애플리케이션을 테스트할 경우에, 모든 가능성을 조사해 두는 것이 매우 중요하다. DirectSound 는 Dsound.vxd 를 사용하는 경우도 있으면, 커널 믹서를 사용하는 경우도 있으므로, 애플리케이션의 동작 및 성능이 어느 경우도 허용 할 수 있는 것인 것을 확인해야 한다.

↑TOP