다음을 통해 공유


하드웨어 오프로드 오디오 드라이버 구현

오프로드된 오디오용 드라이버를 구현할 때 오프로드된 오디오 스트림을 처리하고 Windows 오디오 시스템에 해당 기능을 노출할 수 있는 드라이버를 개발합니다.

이 항목에서는 하드웨어 오프로드 오디오 스트림을 처리할 수 있는 오디오 어댑터용으로 개발된 오디오 드라이버에 대한 구현 세부 정보를 제공합니다.

이 섹션의 이러한 추가 topics 오프로드된 오디오 스트림을 처리하기 위해 하드웨어 오디오 엔진을 구현하는 오디오 어댑터용 오디오 드라이버를 개발할 때 알아야 할 문제에 대해 설명합니다.

오프로드된 오디오 처리를 위한 Portcls 도우미 인터페이스

오프로드된 오디오에 대한 결함 보고

하드웨어 오프로드 - KS 필터 토폴로지

Windows는 온보드 하드웨어 오디오 엔진을 사용하여 오디오 스트림을 처리할 수 있는 오디오 어댑터의 사용을 지원합니다. 이러한 오디오 어댑터를 개발할 때 연결된 오디오 드라이버는 오디오 시스템이 이 어댑터와 해당 드라이버의 기능을 검색, 사용 및 적절하게 노출할 수 있도록 특정 방식으로 사용자 모드 오디오 시스템에 이 사실을 노출해야 합니다.

하드웨어에서 효과를 구현하는 DSP 장착 시스템을 보여 주는 다이어그램

노드 설명자에 대한 KSNODETYPE_AUDIO_ENGINE GUID

오디오 어댑터가 오프로드된 오디오 스트림을 처리할 수 있는 경우 어댑터의 오디오 드라이버는 어댑터에 대한 KS 필터의 노드를 사용하여 이 기능을 노출합니다.

오디오 어댑터가 오프로드된 오디오 스트림을 처리할 수 있는 경우 어댑터의 오디오 드라이버는 어댑터에 대한 KS 필터의 특정 노드를 사용하여 이 기능을 노출합니다.

오디오 스트림의 경로에 있는 각 노드에는 노드 설명자가 있습니다. 하드웨어가 로드되지 않으면 드라이버는 Type GUID를 KSNODETYPE_AUDIO_ENGINE 설정해야 합니다.

다음은 드라이버가 이 노드에 대한 노드 설명자를 구성하는 방법의 예입니다.

typedef struct _KSNODE_DESCRIPTOR {
  const KSAUTOMATION_TABLE *AutomationTable;    // drv specific
  const GUID               *Type;       // must be set to KSNODETYPE_AUDIO_ENGINE
  const GUID               *Name;       // drv specific (KSNODETYPE_AUDIO_ENGINE?)  
} KSNODE_DESCRIPTOR, *PKSNODE_DESCRIPTOR;

이름 GUID가 KSNODETYPE_AUDIO_ENGINE 설정된 경우 이 노드에 대한 기본 이름 문자열을 만들어야 합니다. 그런 다음 ks.inf에 해당 문자열을 추가하여 드라이버를 설치하는 동안 문자열을 사용하여 MediaCategories 레지스트리 키를 채울 수 있습니다.

노드 형식에 대한 GUID 정의( KSNODETYPE_AUDIO_ENGINE)는 다음과 같습니다.

Code style
#define STATIC_KSNODETYPE_AUDIO_ENGINE\
    0x35caf6e4, 0xf3b3, 0x4168, 0xbb, 0x4b, 0x55, 0xe7, 0x7a, 0x46, 0x1c, 0x7e
DEFINE_GUIDSTRUCT("35CAF6E4-F3B3-4168-BB4B-55E77A461C7E", KSNODETYPE_AUDIO_ENGINE);
#define KSNODETYPE_AUDIO_ENGINE DEFINE_GUIDNAMED(KSNODETYPE_AUDIO_ENGINE)

자세한 내용은 ksmedia.h 헤더 파일을 참조하세요.

앞의 정보에 따라 미니포트 노드에 대한 설명자는 다음과 같이 표시할 수 있습니다.

PCNODE_DESCRIPTOR MiniportNodes[] =
{
    // KSNODE_WAVE_AUDIO_ENGINE
    {
        0,                          // Flags
        NULL,                       // AutomationTable
        &KSNODETYPE_AUDIO_ENGINE,   // Type  KSNODETYPE_AUDIO_ENGINE
        NULL                        // Name
    }
};

오디오 엔진에 대해 설정된 KSPROPSETID_AudioEngine KS 속성

KSPROPSETID_AudioEngine 속성 집합은 하드웨어 오디오 엔진 및 하드웨어 오프로드 오디오 처리를 지원하는 데 사용됩니다. 따라서 오프로드된 오디오 스트림을 처리할 수 있는 어댑터의 드라이버는 이 새 속성 집합의 속성을 지원해야 합니다.

KSPROPSETID_AudioEngine 속성 집합은 다음과 같이 정의됩니다.

#define STATIC_KSPROPSETID_AudioEngine\
    0x3A2F82DCL, 0x886F, 0x4BAA, 0x9E, 0xB4, 0x8, 0x2B, 0x90, 0x25, 0xC5, 0x36
DEFINE_GUIDSTRUCT("3A2F82DC-886F-4BAA-9EB4-082B9025C536", KSPROPSETID_AudioEngine);
#define KSPROPSETID_AudioEngine DEFINE_GUIDNAMED(KSPROPSETID_AudioEngine)

이 속성 집합의 속성 이름은 KSPROPERTY_AUDIOENGINE 열거형에 정의되며 드라이버는 이러한 이름을 지원해야 합니다.

KSPROPSETID_AudioEngine 속성 집합의 속성은 다음과 같습니다.

KSPROPERTY_AUDIOENGINE_BUFFER_SIZE_RANGE

KSPROPERTY_AUDIOENGINE_DESCRIPTOR

KSPROPERTY_AUDIOENGINE_DEVICEFORMAT

KSPROPERTY_AUDIOENGINE_GFXENABLE

KSPROPERTY_AUDIOENGINE_LFXENABLE

KSPROPERTY_AUDIOENGINE_LOOPBACK_PROTECTION

KSPROPERTY_AUDIOENGINE_MIXFORMAT

KSPROPERTY_AUDIOENGINE_SUPPORTEDDEVICEFORMATS

KSPROPERTY_AUDIOENGINE_VOLUMELEVEL

KSPROPSETID_ Audio 속성 집합의 필수 속성

드라이버는 KSPROPSETID_AudioEngine 속성 집합의 속성을 지원하는 것 외에도 KSPROPSETID_Audio 속성 집합에서 다음과 같은 기존 속성을 지원해야 합니다.

KSPROPERTY_AUDIO_MUTE

KSPROPERTY_AUDIO_PEAKMETER2

KSPROPERTY_AUDIO_VOLUMELEVEL

또한 하드웨어 오프로드 오디오 처리에 대한 드라이버 지원 구현을 완료하기 위해 KSPROPSETID_ Audio 속성 집합에서 속성을 사용할 수 있습니다.

KSPROPERTY_AUDIO_LINEAR_BUFFER_POSITION

KSPROPERTY_AUDIO_PRESENTATION_POSITION

KSPROPERTY_AUDIO_WAVERT_CURRENT_WRITE_POSITION

포트 클래스 드라이버 업데이트 및 결함 보고

Windows 포트 클래스 드라이버는 하드웨어 오프로드 오디오 처리를 위해 이전 섹션에서 설명한 지원 외에도 오프로드된 오디오 스트림으로 작업할 수 있는 드라이버를 간단하게 개발할 수 있도록 "도우미 인터페이스"를 제공합니다. 그리고 이러한 드라이버가 결함을 감지하면 드라이버가 결함 오류를 보고할 수 있는 메커니즘이 있습니다. 다음 topics 도우미 인터페이스 및 결함 보고에 대한 자세한 내용을 제공합니다.

오프로드된 오디오 처리를 위한 Portcls 도우미 인터페이스 Windows 포트 클래스 드라이버에는 하드웨어 오프로드 오디오 처리에 대한 이전 섹션에서 설명한 지원 외에도 오프로드된 오디오 스트림으로 작업할 수 있는 드라이버를 간단하게 개발할 수 있도록 하는 "도우미 인터페이스"가 포함되어 있습니다. 그리고 이러한 드라이버가 결함을 감지하면 드라이버가 결함 오류를 보고할 수 있는 메커니즘이 있습니다. 다음 topics 도우미 인터페이스 및 결함 보고에 대한 자세한 내용을 제공합니다.

하드웨어 오프로드 오디오 드라이버 구현

Windows 오디오 처리 개체