압축 오디오 형식에 대한 하위 형식 GUID

Windows 7의 경우 압축된 오디오 형식을 지원하기 위해 Ksmedia.h 헤더 파일에 새 하위 폼 GUID가 추가되었습니다. 하위 형식 GUID는 데이터 형식의 특정 하위 폼을 나타냅니다. 이러한 형식은 압축되지 않은 오디오에 대한 CEA(소비자 전자 협회) 표준에 의해 정의됩니다.

CEA-861-D 표준의 결과로 CEA 디바이스에서 지원하지 않는 오디오 형식이 이러한 디바이스로 전송되지 않도록 해야 합니다. HDMI(고화질 멀티미디어 인터페이스) 및 DisplayPort 는 CEA 디바이스의 예입니다.

사용자 모드 액세스의 경우 GUID는 WAVEFORMATEXTENSIBLESubFormat 멤버 및 WAVEFORMATEXTENSIBLE_IEC61937 FormatExt 멤버지정됩니다. 오디오 드라이버에 대한 커널 모드 액세스의 경우 GUID는 KSDATARANGE_AUDIO 구조의 DataRange 멤버에 지정됩니다.

사용 가능한 압축 오디오 형식의 GUID는 다음 표에 나와 있습니다.

사용 가능한 모든 형식이 Windows 7 HD 오디오 클래스 드라이버에서 지원되는 것은 아닙니다. Windows 7에서 지원하는 형식은 별표(*)가 있는 표에 표시됩니다.

CEA 861 형식 SubFormat GUID 설명

0x00

스트림을 참조하세요.

0x01

00000000-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_WAVEFORMATEX

IEC 60958 PCM

0x02

00000092-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL

AC-3

0x03

00000003-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_MPEG1

MPEG-1(Layer1 및 2)

0x04

00000005-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_MPEG3

MPEG-3(계층 3)

0x05

00000004-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_MPEG2

MPEG-2(다중 채널)

0x06

00000006-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_AAC

고급 오디오 코딩* (ADTS의 MPEG-2/4 AAC)

0x07

00000008-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DTS

DTS(Digital Theater Sound)

0x0a

0000000a-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS

Dolby Digital Plus

0x0f

사용되지 않습니다.

예약됨

고비트 속도 오디오 샘플 패킷으로 전송되는 오디오 형식의 GUID는 다음 표에 나와 있습니다.

CEA 861 형식 SubFormat GUID 설명

0x0b

0000000b-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DTS_HD

DTS-HD(24비트, 95KHz)

0x0c

0000000c-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_MLP

MAT(MLP) - 자오선 무손실 패킹(Dolby Digital True HD - 24비트 196KHz/최대 18M bps, 8개 채널)

0x0e

00000164-0000-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO

WMA(Windows Media Audio) Pro

타사 솔루션에서 구현할 수 있는 압축 오디오 형식의 GUID는 다음 표에 나와 있습니다.

CEA 861 형식 SubFormat GUID 설명

0x08

00000008-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_ATRAC

적응형 변환 어쿠스틱 코딩(ATRAC)

0x09

00000009-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_ONE_BIT_AUDIO

1비트 오디오

0x0d

0000000d-0cea-0010-8000-00aa00389b71

KSDATAFORMAT_SUBTYPE_IEC61937_DST

DST(직접 스트림 전송)

다음 코드 예제에서는 오디오 미니포트 드라이버가 완벽하게 작동하는 Dolby Digital Plus 디코더가 있는 HDMI 싱크에서 사용할 KSDATARANGE_AUDIO 구조를 정의하고 초기화하는 방법을 보여 줍니다. 이 유형의 싱크는 44.1 및 48KHz의 전송 속도를 지원합니다.

샘플링 속도 48KHz의 경우 오디오 미니포트 드라이버는 다음 코드를 사용하여 KSDATARANGE_AUDIO 구조를 정의하고 초기화합니다. 이 코드는 오디오 미니포트 드라이버가 노출하는 데이터 범위를 보여 줍니다.

//Define and initialize KSDATARANGE_AUDIO structure
// for use with a sample rate of 48 KHz.
KSDATARANGE_AUDIO drDDPlus48;
drDDPlus48.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus48.DataRange.Flags = 0; // Ignored.
drDDPlus48.DataRange.SampleSize = 0; // Ignored.
drDDPlus48.DataRange.Reserved = 0;
drDDPlus48.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus48.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus48.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus48.MaximumChannels = 2
drDDPlus48.MinimumBitsPerSample = 16; // All encoded data is transmitted at
drDDPlus48.MaximumBitsPerSample = 16; // 16 bits over IEC 60958.
drDDPlus48.MinimumSampleFrequency = 192000; // 48 KHz * 4.
drDDPlus48.MaximumSampleFrequency = 192000;

샘플링 속도가 44.1KHz인 경우 오디오 미니포트 드라이버는 다음 코드를 사용하여 KSDATARANGE_AUDIO 구조를 정의하고 초기화합니다.

//Define and initialize KSDATARANGE_AUDIO structure
// for use with a sample rate of 41.1 KHz.
KSDATARANGE_AUDIO drDDPlus44;
drDDPlus44.DataRange.FormatSize = sizeof(KSDATARANGE_AUDIO);
drDDPlus44.DataRange.Flags = 0 // Ignored.
drDDPlus44.DataRange.SampleSize = 0 // Ignored.
drDDPlus44.DataRange.Reserved = 0; 
drDDPlus44.DataRange.MajorFormat = KSDATAFORMAT_TYPE_AUDIO;
drDDPlus44.DataRange.SubFormat = KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS;
drDDPlus44.DataRange.Specifier = KSDATAFORMAT_SPECIFIER_WAVEFORMATEX;
drDDPlus44.MaximumChannels = 2
drDDPlus44.MinimumBitsPerSample = 16; // All encoded data is transmitted at
drDDPlus44.MaximumBitsPerSample = 16; // 16 bits over IEC 60958.
drDDPlus44.MinimumSampleFrequency = 176400; // 44.1 KHz * 4
drDDPlus44.MaximumSampleFrequency = 176400;