압축 오디오 형식에 대한 하위 형식 GUID
Windows 7의 경우 압축된 오디오 형식을 지원하기 위해 Ksmedia.h 헤더 파일에 새 하위 폼 GUID가 추가되었습니다. 하위 형식 GUID는 데이터 형식의 특정 하위 폼을 나타냅니다. 이러한 형식은 압축되지 않은 오디오에 대한 CEA(소비자 전자 협회) 표준에 의해 정의됩니다.
CEA-861-D 표준의 결과로 CEA 디바이스에서 지원하지 않는 오디오 형식이 이러한 디바이스로 전송되지 않도록 해야 합니다. HDMI(고화질 멀티미디어 인터페이스) 및 DisplayPort 는 CEA 디바이스의 예입니다.
사용자 모드 액세스의 경우 GUID는 WAVEFORMATEXTENSIBLE의 SubFormat 멤버 및 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;