压缩的音频格式的子格式 GUID
对于 Windows7,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(第 1 层和第 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) |
0x0a |
0000000a-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS |
Dolby Digital Plus |
0x0f |
未使用。 |
Reserved |
下表列出了以高比特率音频采样数据包传输的音频格式的 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) - Meridian Lossless Packing(Dolby Digital True HD - 24 位 196KHz/高达 18M bps, 8 通道) |
0x0e |
00000164-0000-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_WMA_PRO |
Windows Media Audio (WMA) 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 |
一位音频 |
0x0d |
0000000d-0cea-0010-8000-00aa00389b71 KSDATAFORMAT_SUBTYPE_IEC61937_DST |
直接流传输 (DST) |
下面的代码示例演示音频微型端口驱动程序如何定义和初始化 KSDATARANGE_AUDIO 结构,以便与具有全功能 Dolby Digital Plus 的 HDMI 接收器一起使用。 此类型的接收器支持 44.1Hz 和 48KHz 的传输速率。
对于 48 KHz 的采样率,音频微型端口驱动程序使用以下代码定义和初始化 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.1 KHz 的采样率,音频微型端口驱动程序使用以下代码定义和初始化 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;