如何测量流水线延迟?

时间:2018-10-05 23:51:58

标签: c++ windows performance-testing video-processing ms-media-foundation

我想测量MF处理我的视频样本需要多少时间。

我尝试使用采样时间作为唯一的采样标识符,发现管道会调整该值,使其漂移(不是很快,每帧0-1 100纳秒刻度,但即使偏移量为1也足以满足要求)值作为唯一ID毫无价值。

我尝试将自定义值添加到属性中,使用nVidia编码器的Win10可以正常工作,使用MS编码器的Win7不能正常工作:输出帧不包含我的值,显然编码器从样本中删除了所有属性。尝试使用MFSampleExtension_DeviceTimestamp内置属性,结果相同,该值在管道中丢失。

还有其他将输入样本与输出样本匹配的方法吗?手动计算的序列号太脆弱了,IMO的框架是多线程的。

1 个答案:

答案 0 :(得分:0)

您可以编写一个包装编码器MFT,该包装器在Win7中包装MS解码器,并将采样时间/附加属性记录在IMFTransform :: ProcessInput中的队列中,并在IMFTransform :: ProcessOutput中进行处理,然后根据采样时间,并将相关属性设置为输出采样,可以吗?