如何测量管道延迟?

How to measure pipeline latency?

本文关键字:管道 延迟 测量 何测量      更新时间:2023-10-16

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

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

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

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

你可以编写一个包装编码器MFT,在Win7中包装MS解码器,并将采样时间/附加属性记录到IMFTransform::P rocessInput中的队列中,并在IMFTransform::P rocessOutput中进行处理,并根据采样时间获取属性,并将相关属性设置为输出样本,可以吗?