Dolby 音频解码器是媒体 基础转换 (MFT) ,可解码以下流类型:
- 杜比数字,也称为杜比 AC-3
- Dolby Digital Plus,也称为增强 AC-3 (E-AC-3)
重要
对于 Windows 8 之前的 Windows 版本,根据 Dolby Digital 许可计划的条款,Dolby Digital 技术的 Microsoft 实现受到限制,可供 Microsoft 应用程序使用。
有关这些格式的详细信息,请参阅高级电视系统委员会 (ATSC) 文档 数字音频压缩标准 (AC-3,E-AC-3) 修订版 B。
解码器还可以将 Dolby Digital Plus 流转换为 Dolby Digital 格式以用于 AC-3 S/PIDF 输出,或格式化 Dolby Digital Plus 流进行 HDMI 数字输出。
类标识符
杜比音频解码器的 CLSID) (类标识符 CLSID_CMSDDPlusDecMFT,在头文件 wmcodecdsp.h 中定义。
输入类型
Dolby 音频解码器支持以下输入子类型。
子类型 | 说明 | 标头 |
---|---|---|
MEDIASUBTYPE_DOLBY_AC3 | 杜比数字音频。 | mfapi.h |
MEDIASUBTYPE_DVM | 杜比数字音频;请参阅 音频子类型。 此子类型可与 MEDIASUBTYPE_DOLBY_AC3 互换使用。 |
wmcodecdsp.h |
MFAudioFormat_Dolby_Digital_Plus | Dolby Digital Plus 音频。 | mfapi.h |
下表列出了输入媒体类型的必需属性和可选属性。
Attribute | 说明 | 备注 |
---|---|---|
MF_MT_MAJOR_TYPE | 主要类型。 | 必需。 必须 MFMediaType_Audio。 |
MF_MT_SUBTYPE | 音频子类型。 | 必需。 有关详细信息,请参阅上表。 |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 采样率,以每秒样本数为单位。 | 可选。 有效值为:48000、44100、32000、24000、22050 和 16000。 如果未设置此属性,则默认值为 48000。 注意: 杜比 AC-3 流限制为此列表中的三个最高速率。 |
MF_MT_AUDIO_NUM_CHANNELS | 通道数,包括低频 (LFE) 通道(如果存在)。 | 可选。 有效值在 1 (单声道) 到 8 (7.1 通道配置) 范围内。 如果未设置此属性,则默认值为 2 (立体声) 。 |
MF_MT_AUDIO_CHANNEL_MASK | 指定音频通道到扬声器位置的分配。 | 可选。 如果指定,该值必须与音频通道数一致。 如果未设置属性,则解码器会根据通道数使用默认通道掩码。 |
下表列出了支持的 Dolby 通道配置。
通道配置 | 通道数 | 通道掩码 |
---|---|---|
1/0 (单声道) | 1 | 0x4 (SPEAKER_FRONT_CENTER) |
2/0 (立体声) 或 1+1 (双声道) | 2 | 0x3 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHT) |
3/0 | 3 | 0x7 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER) |
2/1 | 3 | 0x103 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_BACK_CENTER) |
3/1 | 4 | 0x107 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER SPEAKER_BACK_CENTER) |
2/2 | 4 | 0x33 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_BACK_LEFT SPEAKER_BACK_RIGHT) 或 0x603 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_SIDE_LEFT SPEAKER_SIDE_RIGHT) |
3/2 | 5 | 0x37 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTERSPEAKER_BACK_LEFT SPEAKER_BACK_RIGHT) 或 0x607 (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTER SPEAKER_SIDE_LEFTSPEAKER_SIDE_RIGHT) |
3/2 + LFE | 6 | 0x3F (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTERSPEAKER_LOW_FREQUENCYSPEAKER_BACK_LEFT SPEAKER_BACK_RIGHT) 或 0x60F (SPEAKER_FRONT_LEFTSPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTERSPEAKER_LOW_FREQUENCYSPEAKER_SIDE_LEFT SPEAKER_SIDE_RIGHT) |
3/2/2 + LFE 注意: 仅限 Dolby Digital Plus。 |
8 | 0x63F (SPEAKER_FRONT_LEFT SPEAKER_FRONT_RIGHTSPEAKER_FRONT_CENTERSPEAKER_LOW_FREQUENCYSPEAKER_BACK_LEFTSPEAKER_BACK_RIGHT SPEAKER_SIDE_LEFTSPEAKER_SIDE_RIGHT) |
此外,通道配置 1/0、2/0、3/0、2/1、3/1 和 2/2 也可能随 LFE 通道一起显示。
输出类型
Dolby 音频解码器支持以下输出子类型。
子类型 | 说明 | 标头 |
---|---|---|
MFAudioFormat_Dolby_AC3_SPDIF | 为 S/PDIF 数字输出格式化的 Dolby AC-3 音频。 | mfapi.h |
KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS | 为 HDMI 数字输出设置格式的 Dolby Digital Plus 音频。 | ksmedia.h |
MFAudioFormat_Float | IEEE 32 位浮点 PCM 音频 Windows 10:立体声、5.1、7.1 早期版本:立体声,5.1 |
mfapi.h |
MFAudioFormat_PCM | 16 位 PCM 音频 Windows 10:立体声、5.1、7.1 早期版本:立体声,5.1 |
mfapi.h |
下表列出了输出媒体类型的必需属性和可选属性。
Attribute | 说明 | 备注 |
---|---|---|
MF_MT_MAJOR_TYPE | 主要类型。 | 必需。 必须 MFMediaType_Audio。 |
MF_MT_SUBTYPE | 音频子类型。 | 必需。 有关详细信息,请参阅上表。 |
MF_MT_AUDIO_SAMPLES_PER_SECOND | 采样率,以每秒样本数为单位。 | 必需。 有效值为:48000、44100、32000、24000、22050 和 16000。 输出采样率必须与输入采样率相同。 解码器无法更改流的采样率。 |
MF_MT_AUDIO_NUM_CHANNELS | 通道数,包括低频 (LFE) 通道(如果存在)。 | PCM 输出所必需的。 数字输出不需要。 如果输入类型为单声道、立体声或双单声道 (全部不使用 LFE 通道) ,则对于立体声输出,唯一有效的值为 2。 否则,该值可以是:
|
MF_MT_AUDIO_CHANNEL_MASK | 指定将音频声道分配给扬声器位置。 | 如果通道数大于 2,则 PCM 输出是必需的。 该值必须是:
|
MF_MT_AUDIO_BITS_PER_SAMPLE | 每个音频样本的位数。 | PCM 输出所必需的。 对于 MFAudioFormat_Float,该值必须为 32,对于 MFAudioFormat_PCM,该值必须为 16。 数字输出不需要。 |
MF_MT_AUDIO_VALID_BITS_PER_SAMPLE | 每个音频样本中的有效音频数据位数。 | 对于 PCM 输出是可选的。 如果设置,该值必须与 MF_MT_AUDIO_BITS_PER_SAMPLE相同。 数字输出子类型不需要。 |
MF_MT_AUDIO_BLOCK_ALIGNMENT | 阻止对齐(以字节为单位)。 | 对于 PCM 输出是可选的。 数字输出不需要。 |
MF_MT_AUDIO_AVG_BYTES_PER_SECOND | 每秒的平均字节数。 | 对于 PCM 输出是可选的。 数字输出不需要。 |
转换属性
Dolby 音频解码器实现 IMFTransform::GetAttributes 方法。 应用程序可以使用此方法获取或设置以下属性。
Attribute | 说明 |
---|---|
CODECAPI_AVDecAudioDualMono | 指定是将双声道 Dolby 音频流编码为立体声还是双单声道。 在解码第一个 Dolby 帧之前,该值 eAVDecAudioDualMono_UnSpecified。 解码开始后,该值反映最近的 Dolby 帧。 只读。 |
CODECAPI_AVDecAudioDualMonoReproMode | 指定解码器如何重现双单声道音频。 默认值为 eAVDecAudioDualMonoReproMode_LEFT_MONO。 应用程序可以随时设置此属性。 读/写。 |
CODECAPI_AVDecCommonMeanBitRate | 对于 Dolby Digital (AC-3) 流,指定输入流的比特率(以位/秒为单位)。 对于 Dolby Digital Plus (E-AC3) ,该值始终为零。 只读。 |
CODECAPI_AVDecDDDynamicRangeScaleHigh | 解码器执行动态范围控制时的高级剪切。 读/写。 |
CODECAPI_AVDecDDDynamicRangeScaleLow | 解码器执行动态范围控制时的低级提升。 读/写。 |
CODECAPI_AVDecDDOperationalMode | 压缩控制模式。 读/写。 |
CODECAPI_AVDecDDStereoDownMixMode | 立体声下混合的类型。 当输入为多通道流且输出为立体声流时,此属性适用。 读/写。 |
MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE | 此属性返回 FALSE,表示必须在设置新的输入类型之前排空解码器。 读/写。 |
注解
解码器仅接受 A/52B 定义的原始 Dolby 流。 不支持数据包化基本流 (PES) 等有效负载。 对于 Dolby Digital Plus,解码器最多解码 5.1 个通道。 在Windows 10上,7.1 通道流在没有下混合的情况下解码。 在以前的 OS 版本中,如果流是 7.1 通道,则仅解码 5.1 通道下混。 如果流是具有多个独立子流的 Dolby Digital Plus,则仅解码独立子流 0。 解码器跳过其他独立子流。 此外,解码器会跳过所有依赖子流。 解码器支持解密和解码受数字版权管理 (DRM) 技术保护的流。
如果输入媒体类型具有除单声道、立体声或双单声道以外的通道配置, (全部没有 LFE 通道) ,则解码器为输出通道配置提供两个选项:
- 8 通道输出 (7.1 通道配置)
- 6 通道输出 (5.1 通道配置)
- 立体声下混合
如果选择了立体声下混合,则可以使用 CODECAPI_AVDecDDStereoDownMixMode 属性在 MFT 上设置 downmix 的类型。
如果输出类型为 MFAudioFormat_Dolby_AC3_SPDIF,则每个输出缓冲区包含 6,144 个字节。 缓冲区以 8 字节 S/PDIF 标头开头,后跟压缩的 AC-3 帧,后跟 6,144 字节的零填充。
如果输出类型为 KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL_PLUS,则每个输出缓冲区包含 24,576 个字节。 缓冲区从 8 字节 S/PDIF 标头开始,后跟 1-6 个对应于 1,536 个 PCM 样本的压缩 Dolby Digital Plus 帧,然后是 24,576 字节的零填充。 对于 HDMI 输出,仅打包独立的子流 0。
解码器 MFT 注册到标志 MFT_ENUM_FLAG_FIELDOFUSE,这表示 MFT 必须由应用程序解锁,然后才能使用。 有关详细信息,请参阅 使用限制字段。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 8 [桌面应用 |UWP 应用] |
最低受支持的服务器 |
无受支持的版本 |
DLL |
|
请参阅