This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM62A7:是否有任何插件可以直接在 NV12流上覆盖 OSD?

Guru**** 2328420 points
Other Parts Discussed in Thread: AM62A7
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1522526/am62a7-is-there-any-plugins-can-overlay-osd-directly-on-nv12-streams

器件型号:AM62A7

工具/软件:

SDK 版本:10_00_00_08

v4l2src -> tiovxisp -> tiovxmultiscaler -> tiovxmosaic -> kmssink

我有一个 GStreamer 流水线、最终渲染到 KMSSINK。 整个视频流采用 NV12格式、我需要在视频流中添加 OSD 元素(如矩形、图标和文本)、然后才能将其呈现到屏幕上。

 

我找到了一个 cairooverlay 插件、但它只支持 ​BGRx、BGRA 和 RGB16 ​包括输入和输出。 我需要添加两个 colorconvert 节点(之前和之后)才能使其正常工作。

 

但是、诸如 tiovxdlcolorconvert 之类的硬件校准颜色转换元素不支持 BGRx、BGRA 或 RGB16。

我还有一个问题:在 edgeai-tiovx-apps 中、AM62A 通常可以使用 tiovx color convert 和 tiovx dl color convert 节点。 但是、在 Gstreamer 中、只有 gsttiovxdlcolorconvert 可用、我注意到 tiovxcolorconvert AM62A 不包含在中 ext/tiovx/meson.build

因此、我想知道是否有其他方法可以满足我的要求。 也许修改 colorconvert 可能是一个解决方案?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jason、

    正确、使用 Cairooverlay 将需要额外的颜色转换。 我们的颜色转换 TIOVX 模块不支持与 cairooverlay 兼容的像素格式。 可以选择修改这些寄存器以支持添加格式。

    • 请注意、在 AM62A 上、没有使用特殊硬件来加速 tiovxdlcolorconvert -它使用 Arm Neon 浮点支持。  
      • 我相信 tiovxcolorconvert (非 dl 版本)正在使用硬件加速、在62A 上不可用
        • 此版本也不支持 cairooverlay 的像素格式
    • 然而、TIOVX 插件对存储器优化程度更高、因为它们使用共享 DMA 缓冲池。 否则、某些插件之间可能存在存储器副本、这会减慢流水线速度。  

    另一种选择(但效率较低)是使用通用转换插件,如'videoconvert'。 这可以处理您请求的格式。

    如果覆盖是静态的、则可能有更简单的选项、例如 gdkpixbufoverlay。 但是、如果这些 OSD 元素更动态、则该插件可能不太有用。  

    BR、
    Reese

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Reese。

    修改这些格式以支持添加格式是一个选项。

    是否有任何现有的颜色转换补丁来添加对其他颜色格式的支持?

    据我的理解、在 TI 的 Gstreamer 插件中、这些前缀有​** tiovx​都是硬件加速的、而它们从开始 ​ti**​(例如, tidl)是基于软件的(例如, NEON 优化)。

    因为当我  在 AM62A7上使用 edgeai-tiovx-apps 存储库进行验证时,我测试了颜色转换模块 (而不是 dl 版本),并看到了对 vxColorConvertNode ()等 OpenVX API 的调用。 这就是我假设硬件加速的原因。 您是否建议此接口在内部使用 NEON 加速?

    我确实尝试使用 videoconvert,但实际帧速率从60fps 下降到15fps ,这对于我们的用例是不可接受的。 此外、我们需要更多动态 OSD 元素来将算法检测结果(例如边界框)叠加到视频流中。

    此致、

    Jason

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jason:

    我不知道有其他颜色格式 的此类补丁、但我将在内部进行检查。

    TIOVX 插件不一定是硬件加速插件、但它们至少会使用 TIOVX 框架。 这允许使用基于 DMA 的缓冲池高效传递数据。 非 TIOVX 插件可能需要存储器副本、或者无法使用此类缓冲池、但这通常会限制性能。

    据我所知、AM62A 没有使用任何显式硬件加速进行颜色转换、但他们可能已经重新编译了 C7x 的 C66x 实现。 我确信 TIOVX DL-Color-convert 采用 Neon。  

    • 我对该模块执行了一些运行时测试、TIOVXColorConvert 似乎使用的是 C7x、但我们没有(默认情况下)为此创建 gstreamer 插件。
      • 因此、此内核不使用 Neon。  

    视频转换通常很慢、是的。 我想对于您的应用来说太慢了。  

    我认为您要实现的目标将需要一些软件开发、以实现更高效的色彩转换或在 NV12编码图像上绘制 OSD 元素。 如果没有硬件加速、我怀疑颜色转换是 正确的方法。

    我们有几个插件正在为 NV12图像实时屏幕绘制元素-请参阅 tiperfoverlay (带有性能指标的框)和 tiovxdlpostproc (在屏幕上绘制 TIDL 输出)。

    • 我的建议是扩大其中一个范围。 我 预测 tiperfoverlay 会更简单、因为它没有额外的 TIOVX 接口可供考虑)

    BR、

    Reese