YUV -> RGB 转换可以硬件加速吗?

Can YUV -> RGB conversion be hardware accelerated?

本文关键字:硬件加速 转换 RGB gt YUV      更新时间:2023-10-16

我们有一个应用程序,该应用程序读取gige yuv视频流并在屏幕上显示。通过分析,我们了解到,将每个帧从YUV(UYVY)转换为RGB24的功能至少比我们的摄像机到屏幕管道的任何其他部分都要花费的时间和CPU。

> 。

我们正在使用的转换函数由GIGE软件供应商( pleora )提供,并且比我们自己的' naive '(非优化)实现速度稍快。我们正在使用DirectShow进行其余的管道。"任务管理器基准测试"显示了我们的1080p 30fps流,当我们跳过转换时的CPU使用率为4-5%(当然,当然要获得乱码的图像),当我们调用转换功能时使用15-19%的CPU使用。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

我们的问题是:

  1. 是否有一个直接筛选过滤器可以为我们进行这种转换,希望以更具性能的方式进行这种转换,而不是依靠第三方SDK或我们自己的(基于CPU的,基于CPU的,串行)的转换功能?
  2. 必须在CPU上完成此转换,还是可以以某种方式将其卸载到GPU进行并行处理?

谢谢!Eric。

转换也许是GPU处理的好候选者,但是您将如何处理转换后的数据?如果您需要它以在软件中进行进一步处理,那么从视频适配器中读回可能会破坏您通过将处理添加到GPU获得的所有收益。如果您仅出于演示目的而需要它,那么您就不需要转换,您可以将YUV映像正确交付给视频适配器,并让它以这种方式呈现(这是管道的理想配置,因为您没有任何转换)。

谈论软件转换,我不确定您现在使用的转换的质量,但是有高度优化的(SIMD)可用的转换:

  1. 标准Windows Vista DMO
  2. ffmpeg的libswscale
  3. Intel IPP原语

所有这三个或多或少都可以轻松地插入直接管道中。另外,高分辨率图像也是并行软件处理的好候选者。