【发布时间】:2010-07-07 16:52:50
【问题描述】:
我需要将多达 16 个通道的 PCM 音频流拆分为多个立体声流。 由于我还没有找到任何能够做到这一点的东西,我正在尝试编写我的第一个 directshow 过滤器。
任何能够分割音频的东西都会受到欢迎,但我假设我必须这样做,所以我已经做了:
起初,我尝试创建一个基于 ITransformFilter 的过滤器。但是,似乎它考虑了只有一个输入引脚和一个输出引脚的过滤器。因为我需要几个输出引脚,所以我忽略了它,但也许它比我想象的更容易适应,所以非常感谢任何建议。
然后,我开始基于 IBaseFilter。我设法做某事。我在输入引脚连接时创建必要的输出引脚,并在输入断开连接时销毁它们。但是,当我将任何输出引脚连接到 ACM Wrapper(只是为了测试它)时,输入会尝试重新连接,从而破坏我所有的输出引脚。 我试图不破坏它们,但随后我检查了输入引脚的媒体类型,它已更改为立体声流。我没有从我的代码中调用 QueryAccept。
我怎样才能避免重新连接,或者做解复用器过滤器的正确方法是什么?
2010-07-09 编辑: 我回到了 ITransformFilter,但我正在创建必要的引脚。但是,我遇到了与 IBaseFilter 相同的问题:当我将输出引脚连接到 ACM Wrapper 时,输入引脚将其媒体类型更改为 2 个通道。 现在不知道如何进行...
【问题讨论】:
标签: c++ filter directshow