描述:
调用Run函数时,内部好像先调用Pause函数,在调用Run函数,我程序不知道为什么在调用Pause后Filter直接析构,在析构出出错 堆栈为:
FltNtrcvr.ax!CMySourceFilter::~CMySourceFilter() 行115 + 0x3b C++
FltNtrcvr.ax!CMySourceFilter::`scalar deleting destructor'() + 0x2b C++
quartz.dll!7cfa208b()
quartz.dll!7cfa20ef()
quartz.dll!7cf8be94()
quartz.dll!7cfa1e72()
FltNtrcvr.ax!CCritSec::Unlock() 行997 + 0xc C++
FltNtrcvr.ax!CBaseReferenceClock::GetTime(__int64 * pTime=0x0012ed68) 行143 C++
003d90f8()
quartz.dll!7cfb8944()
quartz.dll!7cfa452e()
quartz.dll!7cfa44c7()
MyClient.exe!CDXGraph::Run() 行264 + 0x14 C++
程序在调用Pause前进入CBaseReferenceClock::GetTime两次 没问题 ,调用完Pause后出现的。我将Pause删除问题仍然存在,麻烦大家帮忙看下,程序可能出现此现象问题的地方。
还有源Filter在建立Graph时用传数据么,是不是GetMediaType接口定义好类型就可以了;解码器中传入的是什么数据,像分辨率什么的如何设定的,
解决方案1:
自己写的source filter? pull还是push
解决方案2: 只有一个原因,你提前释放Filter组件的接口了,导致Filter组件资源自我释放!
但要解决还得靠自己慢慢调试
这么点信息很难分析问题啊