是否有方法检测DirectShow filtergraph已到达其文件的结尾?在文件末尾,我的意思是带有SampleGrabber过滤器的filtergraph将永远不会收到另一个SampleCB调用。
以下是一些不起作用的东西:
-
相信
IMediaDet::get_StreamLength
(人们常说视频中的帧比实际存在的帧多)
-
IMediaSeeking::GetDuration
(与IMediaDet一致,+/-一帧)
-
IMediaControl::GetState
(即使已从文件处理所有帧,filtergraph仍保持运行)
背景:
我正在做视频处理,我有一个类,创建了一个带有采样捕捉器的filtergraph。无论何时
SampleGrabber::SampleCB
调用时,我用互斥锁阻止它,以便在拉模式下运行filtergraph。当我准备好另一个帧时,我在主线程中解锁互斥并等待
SampleGrabber::SampleCB
IMediaDet::获取\u流长度
告诉我视频的帧数比实际存在的帧数多。一旦我提取了最后一个帧并请求一个比实际存在的多的帧,主线程就会永远阻塞,因为
SampleGrabber::SampleCB
再也不会接到电话了。我想知道什么时候
SampleGrabber::SampleCB
编辑:
WaitForSingleObject