WaveRT 포트 드라이버 이해
WaveRT 포트 드라이버는 이전 WaveCyclic 포트 드라이버의 단순성과 WavePci 포트 드라이버의 하드웨어 가속 성능을 결합합니다.
WaveRT 포트 드라이버는 데이터 버퍼에 직접 액세스할 수 있는 기본 클라이언트(일반적으로 오디오 엔진)를 제공하여 오디오 데이터를 지속적으로 매핑하고 복사할 필요가 없습니다. 또한 이 직접 액세스는 드라이버가 오디오 스트림의 데이터를 조작할 필요가 없습니다. 따라서 WaveRT 포트 드라이버는 일부 오디오 디바이스에 있는 DMA(직접 메모리 액세스) 컨트롤러의 요구 사항을 수용합니다.
다른 웨이브 렌더링 및 웨이브 캡처 디바이스와 구별하기 위해 WaveRT 포트 드라이버는 KSCATEGORY_AUDIO, KSCATEGORY_RENDER 및KSCATEGORY_CAPTURE 외에도 KSCATEGORY_REALTIME 자체적으로 등록합니다. 이 자체 등록은 어댑터 드라이버를 설치하는 동안 발생합니다.
Windows Vista 이상 운영 체제에서 운영 체제가 시작되고 오디오 엔진이 초기화되면 오디오 엔진은 오디오 디바이스를 나타내는 KS 필터를 열거합니다. 열거형 중에 오디오 엔진은 찾은 오디오 디바이스에 대한 드라이버를 인스턴스화합니다. 이 프로세스는 이러한 디바이스에 대한 필터 개체를 생성합니다. WaveRT 오디오 디바이스의 경우 결과 필터 개체에는 다음 구성 요소가 있습니다.
필터에 대한 제네릭 시스템 함수를 관리하는 WaveRT 포트 드라이버의 instance
필터의 모든 하드웨어 관련 기능을 처리하기 위한 WaveRT 미니포트 드라이버의 instance
필터 개체를 만든 후 오디오 엔진과 WaveRT 미니포트 드라이버는 필요한 오디오 처리 유형에 맞게 오디오 스트림을 열 준비가 됩니다. 오디오 렌더링(재생)을 위해 KS 필터를 준비하려면 오디오 엔진과 WaveRT 미니포트 드라이버가 다음을 수행하여 재생 스트림을 엽니다.
오디오 엔진은 KS 필터에 핀을 열고 WaveRT 미니포트 드라이버는 핀의 instance 만듭니다. 오디오 엔진이 핀을 열면 스트림의 웨이브 형식도 드라이버에 전달합니다. 드라이버는 웨이브 형식 정보를 사용하여 다음 단계에서 적절한 버퍼 크기를 선택합니다.
오디오 엔진은 만들 특정 크기의 순환 버퍼에 대한 요청을 미니포트 드라이버에 보냅니다. 주기적 버퍼라는 용어는 버퍼 위치 레지스터가 재생 또는 레코드 작업에서 버퍼의 끝에 도달하면 위치 레지스터가 버퍼의 시작 부분으로 자동으로 래핑할 수 있다는 사실을 나타냅니다. 연속된 물리적 메모리 블록을 설정하는 WaveCyclic 미니포트 드라이버와 달리 WaveRT 미니포트 드라이버에는 실제 메모리에 연속된 버퍼가 필요하지 않습니다. 드라이버는 KSPROPERTY_RTAUDIO_BUFFER 속성을 사용하여 버퍼의 공간을 할당합니다. 오디오 디바이스의 하드웨어가 요청된 크기의 버퍼에서 스트리밍할 수 없는 경우 드라이버는 오디오 디바이스의 리소스 제한 내에서 작동하여 원래 요청된 크기에 가장 가까운 크기의 버퍼를 만듭니다. 그런 다음 드라이버는 버퍼를 오디오 디바이스의 DMA 엔진에 매핑하고 사용자 모드에서 오디오 엔진에서 버퍼에 액세스할 수 있도록 합니다.
오디오 엔진은 주기적 버퍼에 오디오 데이터를 주기적으로 쓰도록 스레드를 예약합니다.
오디오 디바이스의 하드웨어가 순환 버퍼를 직접 지원하지 않는 경우 미니포트 드라이버는 주기적으로 오디오 디바이스를 다시 프로그래밍하여 동일한 버퍼를 계속 사용합니다. 예를 들어 하드웨어가 버퍼 루핑을 지원하지 않는 경우 드라이버는 버퍼의 끝에 도달할 때마다 DMA 주소를 버퍼의 시작으로 다시 설정해야 합니다. 이 업데이트는 ISR(인터럽트 서비스 루틴) 또는 우선 순위가 높은 스레드에서 수행할 수 있습니다.
결과 구성은 순환 버퍼를 지원하거나 미니포트 드라이버와 함께 작동하여 하드웨어를 정기적으로 업데이트하는 오디오 장치 하드웨어에 결함 복원력 오디오 신호를 제공합니다.
오디오 캡처(녹음)를 위해 KS 필터를 준비하려면 오디오 엔진 및 WaveRT 미니포트 드라이버가 비슷한 단계를 사용하여 레코드 스트림을 엽니다.
WaveRT 포트 드라이버에서 제공하는 성능 향상 중 하나는 웨이브 렌더링 또는 웨이브 캡처 중에 오디오 스트림의 엔드투엔드 처리 지연이 감소하는 것입니다. 이 지연을 스트림 대기 시간이라고 합니다.
이러한 두 가지 유형의 스트림 대기 시간에 대한 자세한 내용은 다음 topics 참조하세요.
WaveRT 포트 드라이버를 보완하는 WaveRT 미니포트 드라이버를 개발하는 방법에 대한 자세한 내용은 WaveRT 미니포트 드라이버 개발 항목을 참조하세요.