如何让 CResamplerMediaObject 正常工作?

问题描述 投票:0回答:0

我正在尝试使用 CResamplerMediaObject 对我从 DefaultAudioEndpoint 捕获的音频进行重新采样,以便将其克隆到我选择的任何其他 AudioEndpoint。

但是无论Input/OutputType是什么,它似乎只是通过我输入的内容而没有修改。

如果 Input/OutputType 看起来像这样:

inputType()
 WAVEFORMATEXTENSIBLE:
    wFormatTag = 65534
    cbSize = 22
    nAvgBytesPerSec = 384000
    nBlockAlign = 8
    nChannels = 2
    nSamplesPerSec = 48000
    wBitsPerSample = 32
    ext->dwChannelMask = 3
    ext->Samples.wValidBitsPerSample = 32
    ext->Samples.wSamplesPerBlock = 32
    ext->SubFormat = {00000003-0000-0010-8000-00AA00389B71}

 Properties of the media type: 
    MF_MT_AUDIO_NUM_CHANNELS = 2
    MF_MT_AUDIO_SAMPLES_PER_SECOND = 48000
    MF_MT_AUDIO_BLOCK_ALIGNMENT = 8
    MF_MT_AUDIO_AVG_BYTES_PER_SECOND = 384000
    MF_MT_AUDIO_BITS_PER_SAMPLE = 32
    MF_MT_ALL_SAMPLES_INDEPENDENT = 1
    MF_MT_AUDIO_CHANNEL_MASK = 3
    MF_MT_AUDIO_VALID_BITS_PER_SAMPLE = 0

outputType()
 WAVEFORMATEXTENSIBLE:
    wFormatTag = 65534
    cbSize = 22
    nAvgBytesPerSec = 1536000
    nBlockAlign = 32
    nChannels = 8
    nSamplesPerSec = 48000
    wBitsPerSample = 32
    ext->dwChannelMask = 1599
    ext->Samples.wValidBitsPerSample = 32
    ext->Samples.wSamplesPerBlock = 32
    ext->SubFormat = {00000003-0000-0010-8000-00AA00389B71}

 Properties of the media type:
    MF_MT_AUDIO_NUM_CHANNELS = 8
    MF_MT_AUDIO_SAMPLES_PER_SECOND = 48000
    MF_MT_AUDIO_BLOCK_ALIGNMENT = 32
    MF_MT_AUDIO_AVG_BYTES_PER_SECOND = 1536000
    MF_MT_AUDIO_BITS_PER_SAMPLE = 32
    MF_MT_ALL_SAMPLES_INDEPENDENT = 1
    MF_MT_AUDIO_CHANNEL_MASK = 1599
    MF_MT_AUDIO_VALID_BITS_PER_SAMPLE = 0

对于每个长度为 8 字节 ( ( wBitsPerSample / 8 ) * nChannels) 的输入帧,我希望得到一个长度为 32 字节的输出帧。相反,输出帧仍然是 8 字节长。

如果我在输出数据中插入缺失的 6 个字节,它会按预期工作,但这不是重采样器的工作吗?

此外,如果我更改输入或输出的采样率,我希望看到输入数据和输出数据之间的长度发生变化。但它保持不变。

我使用的代码很多而且很乱,但是如果有人坚持我可以提供它。

windows audio resampling
© www.soinside.com 2019 - 2024. All rights reserved.