我有一个DirectShow图形,其中SampleGrabber滤镜进行一些处理。处理需要高达50毫秒,因此播放速度经常变慢。处理可以打开和关闭。
我的问题是,如果处理时间已经很长,当我关闭它时,视频会尽可能地快速播放,直到达到某个点。 可能这个点是帧时间与流时间匹配且不再有任何滞后的地方。
我该如何阻止这种情况发生,这样当我关闭处理时,回放速度就是正常的?我可以在处理数据时关闭流时钟吗?或者再次将通过SampleGrabber过滤器输出的样本进行时间戳记,添加额外的滞后时间?
有谁知道这该怎么做?
编辑:
我使用下面答案中显示的更改样本时间的方法,但在寻求和计算样本时间戳方面遇到了一些问题。
我发现更好的方法是实现自己的参考时钟,并在处理时间过长时停止时钟。