音频重新采样器 DSP

音频重新采样器对音频流执行以下一项或两项操作。

  • 更改采样率。
  • 更改通道数。

CLSID

CLSID_CResamplerMediaObject

接口

格式

PCM 或 IEEE 浮点

媒体类型必须指定未压缩的 PCM 或浮点音频格式。

属性

必需的属性

重新采样器需要为其设置以下属性:

自定义通道映射

音频重新采样器根据以下信息将输入音频通道映射到输出音频通道:

  • 频道数量。 这在媒体类型的 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 [仅限桌面应用]
标头
Wmcodecdsp.h
DLL
Resampledmo.dll

另请参阅

数字信号处理器