音频重新采样器 DSP
音频重新采样器对音频流执行以下一项或两项操作。
- 更改采样率。
- 更改通道数。
CLSID
CLSID_CResamplerMediaObject
接口
格式
PCM 或 IEEE 浮点
媒体类型必须指定未压缩的 PCM 或浮点音频格式。
- 对于 IMFTransform 接口,如 未压缩的音频媒体类型中所述初始化媒体类型。
- 对于 IMediaObject 接口,媒体类型必须是 FORMAT_WaveFormatEx 类型。 有关详细信息,请参阅 DMO_MEDIA_TYPE。
属性
必需的属性
重新采样器需要为其设置以下属性:
自定义通道映射
音频重新采样器根据以下信息将输入音频通道映射到输出音频通道:
- 频道数量。 这在媒体类型的 MF_MT_AUDIO_NUM_CHANNELS 属性或 WAVEFORMATEX 结构的 nChannels 成员中提供。
- 通道掩码,用于将声道分配给扬声器位置。 通道掩码在媒体类型的 MF_MT_AUDIO_CHANNEL_MASK 属性或 WAVEFORMATEXTENSIBLE 结构的 dwChannelMask 成员中提供。
- 映射权重的矩阵。
矩阵包含一系列权重,因此每个输出通道都是输入通道的加权平均值。
可以通过调用 IWMResamplerProps::SetUserChannelMtx 或设置 MFPKEY_WMRESAMP_CHANNELMTX 属性来指定通道映射的自定义矩阵。 如果未提供自定义矩阵,音频重新采样器将使用一组默认矩阵。
默认通道映射
如果未指定自定义矩阵,音频重新采样器 DSP 将使用默认值进行通道映射。
在随后的表中,通道是缩写的:
- L:左
- R:右
- C:居中
- LFE:低频率效果
- BL:向左后
- BR:向右后
- SL:向左环绕
- SR:右侧环绕
下表显示了将 6 个通道 (掩码0x3F) 映射到 2 个通道的默认系数。
L | R | C | LFE | BL | BR | |
---|---|---|---|---|---|---|
L | 0.314 | 0 | 0.222 | 0.031 | 0.268 | 0.164 |
R | 0 | 0.314 | 0.222 | 0.031 | 0.164 | 0.268 |
下表显示了将 6 个通道 (掩码0x60F) 映射到 2 个通道的默认系数。
L | R | C | LFE | SL | SR | |
---|---|---|---|---|---|---|
L | 0.320 | 0 | 0.226 | 0.032 | 0.292 | 0.130 |
R | 0 | 0.320 | 0.226 | 0.032 | 0.130 | 0.292 |
下表显示了将 6 个 (掩码0x3F或0x60F) 通道映射到 1 个通道的默认系数。
L | R | C | LFE | BL (SL) | BR (SR) | |
---|---|---|---|---|---|---|
C | 0.192 | 0.192 | 0.192 | 0.038 | 0.192 | 0.192 |
下表显示了将 8 个通道映射到 2 个通道 (掩码0x63F) 的默认系数。
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.222 | 0 | 0.157 | 0.022 | 0.189 | 0.116 | 0.203 | 0.090 |
R | 0 | 0.222 | 0.157 | 0.022 | 0.116 | 0.189 | 0.090 | 0.203 |
下表显示了将 8 个通道映射到 1 个通道 (掩码0x63F) 的默认系数。
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
C | 0.139 | 0.139 | 0.139 | 0.028 | 0.139 | 0.139 | 0.139 | 0.139 |
下表显示了将 8 个通道 (掩码0x63F) 映射到 6 个通道 (掩码0x3F) 的默认系数。
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.518 | 0 | 0 | 0 | 0 | 0 | 0.189 | 0 |
R | 0 | 0.518 | 0 | 0 | 0 | 0 | 0 | 0.189 |
C | 0 | 0 | 0.518 | 0 | 0 | 0 | 0 | 0 |
LFE | 0 | 0 | 0 | 0.518 | 0 | 0 | 0 | 0 |
BL | 0 | 0 | 0 | 0 | 0.518 | 0 | 0.482 | 0 |
BR | 0 | 0 | 0 | 0 | 0 | 0.518 | 0 | 0.482 |
下表显示了将 8 个通道 (掩码0x63F) 映射到 6 个通道 (掩码0x60F) 的默认系数。
L | R | C | LFE | BL | BR | SL | SR | |
---|---|---|---|---|---|---|---|---|
L | 0.447 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
R | 0 | 0.447 | 0 | 0 | 0 | 0 | 0 | 0 |
C | 0 | 0 | 0.447 | 0 | 0 | 0 | 0 | 0 |
LFE | 0 | 0 | 0 | 0.447 | 0 | 0 | 0 | 0 |
SL | 0 | 0 | 0 | 0 | 0.429 | 0.124 | 0.447 | 0 |
SR | 0 | 0 | 0 | 0 | 0.124 | 0.429 | 0 | 0.447 |
若要了解如何解释系数表,请考虑第一个表,它将 6 个通道映射到 2 个通道。 表的第一行 (0.314、0、0.222、0.031、0.268、0.164) 是一个权重向量,用于指定每个输入通道对输出左声道的贡献程度。 表的第二行 (0, 0.314, 0.222, 0.031, 0.164, 0.268) 是一个权重向量,指定每个输入通道对输出右通道的贡献程度。
以下公式演示如何计算输出通道。
L_out = L*0.314 + C*0.222 + LFE*0.031 + BL*0.268 + BR*0.164
R_out = R*0.314 + C*0.222 + LFE*0.031 + BL*0.164 + BR*0.268
注意
如果使用 Audio Resampler DSP 增加声道数,则将为添加的声道分配值 0。
输出质量
可以通过调用 IWMResamplerProps::SetHalfFilterLength 或通过设置 MFPKEY_WMRESAMP_FILTERQUALITY 属性来指定音频采样器 DSP 的输出质量。 如果未指定输出质量,音频重新采样器 DSP 将使用默认质量值 30。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2008 [仅限桌面应用] |
标头 |
|
DLL |
|