【问题标题】:How to measure pipeline latency?如何测量管道延迟?
【发布时间】:2019-03-11 11:40:29
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你尝试过 MFTrace 吗?
  • @mofo77 它也没有稳定的样本 ID。它记录 IMFSample 接口的地址。输入样本和输出样本是不同地址的不同对象。

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


【解决方案1】:

你可以在Win7中编写一个封装MS解码器的封装编码器MFT,并在IMFTransform::ProcessInput中将采样次数/附加属性记录到一个队列中,并在IMFTransform::ProcessOutput中进行处理,并根据采样时间,给输出的样本设置相关属性,可以吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多