0
我写一个DirectShow源过滤器来读取特定的原始文件,原始文件包含时间戳(UTC时间)在每一帧DirectShow的源过滤SETTIME
我的过滤器从微软SDK的修改“推源过滤样本” ,所以最重要的是覆盖GetMediaType(),DecideBufferSize()和FillBuffer()。
我的问题是在FillBuffer(IMediaSample * pSample)中。我不知道如何在此函数中正确调用pSample-> SetTime(),因为时间戳从大数开始,帧将等到StreamTime达到时间戳。
问题可以通过。减去来解决每个帧上的偏移,但我需要在下游过滤器(SampleGrabber)原始时间戳
是否有更好的解决方案?
非常感谢,这听起来可行的方法,但在实施寻求接口事情会变得复杂。顺便说一句 我尝试使用SetMediaTime()来保存起始时间,但它不起作用(SampleGrabber对GetMediaTime()不正确) – 2013-02-27 09:01:04
是的媒体时间是一种不可靠的,我建议你不要使用它。而是直接从源过滤器获取基准时间,而不是从媒体样本的属性获取。 – 2013-02-27 09:03:05