具有多个输入引脚的DirectShow多路复用器滤波器如何实现IMediaSeeking通过?

时间:2013-01-19 17:47:14

标签: directshow

我正在处理一个自定义音频混音器滤镜(我有源代码)的错误,在使用某些输入源搜索后,输入音频流似乎不同步(我没有这些来源) )当连接了多个输入时。

在寻找时间戳等之后看起来正确但流中的实际数据与时间戳不同步。

音频混音器具有自定义IMediaSeeking实现,该实现将IMediaSeeking :: SetPositions调用传递给每个输入引脚。这似乎是正确的方法。如果有多个源过滤器,则需要将SetPosition调用传递给每个源。然后由源过滤器仅在其一个引脚上实现搜索(如MSDN中所述)。

从CPosPassThru继承传递实现是否更好,以便它也支持IMediaPosition?有些过滤器似乎使用IMediaPosition调用而不是IMediaSeeking。

muxer过滤器是否需要执行任何特定操作来传递寻求多个输入引脚的调用。那里有任何好的示例源代码?关于编写muxer过滤器的Monogram博客似乎并不包括寻求。

1 个答案:

答案 0 :(得分:1)

为了未来读者的利益,以下似乎工作正常。同步错误在其他地方。

音频混音器具有自定义IMediaSeeking实现,该实现将IMediaSeeking :: SetPositions调用传递给每个输入引脚。

如果有多个源过滤器,则需要将SetPosition调用传递给每个源。然后由源过滤器仅在其一个引脚上实现搜索(如MSDN中所述)。

似乎没有必要向上游转发IMediaPosition。