YUV -> RGB 转换可以硬件加速吗?
Can YUV -> RGB conversion be hardware accelerated?
我们有一个应用程序,该应用程序读取gige yuv视频流并在屏幕上显示。通过分析,我们了解到,将每个帧从YUV(UYVY)转换为RGB24的功能至少比我们的摄像机到屏幕管道的任何其他部分都要花费的时间和CPU。
> 。我们正在使用的转换函数由GIGE软件供应商( pleora )提供,并且比我们自己的' naive '(非优化)实现速度稍快。我们正在使用DirectShow进行其余的管道。"任务管理器基准测试"显示了我们的1080p 30fps流,当我们跳过转换时的CPU使用率为4-5%(当然,当然要获得乱码的图像),当我们调用转换功能时使用15-19%的CPU使用。<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
我们的问题是:
- 是否有一个直接筛选过滤器可以为我们进行这种转换,希望以更具性能的方式进行这种转换,而不是依靠第三方SDK或我们自己的(基于CPU的,基于CPU的,串行)的转换功能?
- 必须在CPU上完成此转换,还是可以以某种方式将其卸载到GPU进行并行处理?
谢谢!Eric。
转换也许是GPU处理的好候选者,但是您将如何处理转换后的数据?如果您需要它以在软件中进行进一步处理,那么从视频适配器中读回可能会破坏您通过将处理添加到GPU获得的所有收益。如果您仅出于演示目的而需要它,那么您就不需要转换,您可以将YUV映像正确交付给视频适配器,并让它以这种方式呈现(这是管道的理想配置,因为您没有任何转换)。
谈论软件转换,我不确定您现在使用的转换的质量,但是有高度优化的(SIMD)可用的转换:
- 标准Windows Vista DMO
- ffmpeg的libswscale
- Intel IPP原语
所有这三个或多或少都可以轻松地插入直接管道中。另外,高分辨率图像也是并行软件处理的好候选者。
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- FFmpeg——使用硬件加速进行视频解码
- SDL2硬件加速渲染器在Xubuntu上使用专有驱动程序时会崩溃Linux
- YUV -> RGB 转换可以硬件加速吗?
- 如何在 Rcpp 中加速 xts 数据到 DatatimeVector 的转换
- sdl软件渲染器不工作,工作在硬件加速的一个
- 使用DirectX视频加速(DXVA)实现媒体基础转换(MFT)
- 硬件扫描代码到ascii字符的转换
- 硬件加速了 Windows7 中的 MFT 扩展
- 使用 C++ 在窗口中进行硬件加速图像缩放
- 在 VSS 硬件框架 c++ 中将 BYTE 转换为 BSTR
- 有没有开源的、硬件加速的、带有c++绑定的跨平台物理库?
- 硬件加速在MFC
- 如何在ffmpeg中使用硬件加速