我正在尝试使用 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 个字节,它会按预期工作,但这不是重采样器的工作吗?
此外,如果我更改输入或输出的采样率,我希望看到输入数据和输出数据之间的长度发生变化。但它保持不变。
我使用的代码很多而且很乱,但是如果有人坚持我可以提供它。