DirectShow Dump例子问题
有个reader filter第三方的,两个输出PIN,分别为音,视频;我在sdk sample中Dump基础上写了个filter,两个输入PIN,和reader对接,然后保存为文件,现在已连通,运行也正常.
问题来了:
我想截取一段内容保存为文件,用IMediaSeeking接口实现,如截取5秒到10秒的内容保存为文件,Dump中实现了Seek动作的上传,代码如下:
STDMETHODIMP CDump::NoDelegatingQueryInterface( REFIID riid, void **ppv )
{
if( riid == IID_IMediaPosition || riid == IID_IMediaSeeking )
{
if( pPosition == NULL )
m_pPosition = new CRendererPosPassThru( NAME, GetOwner(), &hr, m_pVideoPin );
return m_pPosition->NonDelegatingQueryInterface( riid, ppv );
}
}
看似没有问题,但运行结果为取了5-10秒的视频和全部的音频,如果把PIN换为音频PIN变量,则相反,不知道是为什么?
刚开始怀疑第三方的reader filter有问题,但我用智能连接renderfile在屏幕上播放,音视频确都只播了5秒.
想不通问题应该出在哪里?还请高人指点一下.