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:GStreamer tiovxmultiscaler 插件在输出 3 通道时性能下降

Guru**** 2416110 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1523731/am62a7-gstreamer-tiovxmultiscaler-plugin-performance-degradation-when-output-3-channle

器件型号:AM62A7

工具/软件:

版本 10_00_00_08

我最初设置了一个 ​1920x1536@60fps ​视频流输出到显示器、采用分屏处理、保持全 60fps 性能。 流水线结构:

根据项目要求、我需要缩放摄像头馈送至 ​608x352. 。 因为 tiovxmultiscaler (MSC) 仅支持 ​最大缩小 4 倍 ​(1536→352 超出了该限值)、我添加了 A ​第二个 MSC ​进行两级调节。 但是、引入了 ​第三个输出分支 ​导致性能下降– kmssink 现在仅显示 ​50fps 。 流水线结构:

进一步的测试证实、只需添加 ​第三个分支 ​(偶数至) fakesink至 ​单个 MSC ​将帧速率降低至 50fps。 这意味着,MSC 插件中的多流处理是固有的瓶颈。 用于验证的流水线:

因此、在现实中、每当 MY tiovxmultiscaler (MSC) 拆分为 A 时 ​第三个输出分支 、整个视频流降至 50fps。 我怀疑这可能会击中 ​单个 MSC 实例的性能限制 。 是否有解决此问题的方法?

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

    您好:

    这里肯定有解决方案--其中一个是通过设置“target"参数“参数来使用 MSC 的另一个实例。  

    您还可以使用 perf_stats 工具查看 MSC(以及所有其他硬件加速器)上的利用率/负载。 请参阅此处:  

    使用共享的配置、您不会 达到 300MP/s 的最大 MSC 负载

    更有可能的是、您遇到了与线程相关的奇怪 gstreamer。 GStreamer 隐式尝试将流水线的相邻插件保留在同一线程中。 您可以通过插入“队列“插件来拆分线程(通常可以设置最大大小缓冲区和像“泄漏“这样的丢弃策略)。 我们通常在每个 MSC 实例之后执行此操作

    如需将来参考、还请包含应用程序的流水线字符串。 图像是相当尴尬的查看,因为它们创建了巨大的分辨率,不能在大多数浏览器中呈现文本这么好

    BR、
    Reese

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

    您好 Reese、

    此问题可能不是由使用其他 MSC 实例引起的。 正如我之前提到的、即使仅使用 ​这样一来 、将其输出拆分为 A ​第三个分支 ​(与目的地无关)将帧速率降低至 50fps

    您可以在我的问题中看到第三个流水线图。 MSC 的所有输出都附加了队列元素、同时具有最大大小缓冲区和泄漏属性、这些 queu 元素似乎不起作用。

    当我在浏览器中打开图像时、它一开始看起来会略微模糊、但双击它会显示一个清晰的版本。

    由于我的原始流水线是以编程方式(通过代码)构建的、因此我必须使用 GStreamer 命令重构该流水线以进行测试。 我还添加了一个 perfoverlay 用于显示实时帧速率的元素。 以下是比较流水线命令:

    单 msc 输出 3 通道 — 在 perfoverlay 中为 46 fps

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    video/x-bayer, width=1920, height=1536, framerate=60/1, format=bggr12 ! \
    tiovxisp sink_0::device=/dev/v4l-subdev4 name=isp \
    sensor-name="X3F" \
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9 ! \
    video/x-raw, format=NV12, width=1920, height=1536, framerate=60/1 ! \
    tiovxmultiscaler name=multi \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0 ! video/x-raw, width=1280,height=720,format=NV12 ! queue ! mosaic.sink_0 \
    multi.src_1 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! mosaic.sink_1 \
    multi.src_2 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! fakesink \
    tiovxmosaic name=mosaic \
    sink_0::startx="<0>" sink_0::starty="<0>" \
    sink_1::startx="<1280>" sink_1::starty="<0>" ! \
    tiperfoverlay ! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    单 msc 输出 2 通道-- perfoverlay 中 56fps

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    video/x-bayer, width=1920, height=1536, framerate=60/1, format=bggr12 ! \
    tiovxisp sink_0::device=/dev/v4l-subdev4 name=isp \
    sensor-name="X3F" \
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9 ! \
    video/x-raw, format=NV12, width=1920, height=1536, framerate=60/1 ! \
    tiovxmultiscaler name=multi \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0 ! video/x-raw, width=1280,height=720,format=NV12 ! queue ! mosaic.sink_0 \
    multi.src_1 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! mosaic.sink_1 \
    tiovxmosaic name=mosaic \
    sink_0::startx="<0>" sink_0::starty="<0>" \
    sink_1::startx="<1280>" sink_1::starty="<0>" ! \
    tiperfoverlay ! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    这两条命令之间的主要区别在于 ​46fps 版本 ​ multi.src_2  fakesink 在中添加(第三个输出分支)连接到 tiovxmultiscaler

    BR、

    Jason

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

    您好 Jason、  

    好的、我错过了图中包含队列的部分内容。 显然、您已在实施此功能。 谢谢你包括管道字符串——他们很有帮助。

    该问题可能不是由使用其他 MSC 实例引起的。 正如我之前提到的、即使仅使用 ​这样一来 、将其输出拆分为 A ​第三个分支 ​(与目的地无关)将帧速率降低至 50fps

    让我澄清一下--使用一个额外的 MSC 实例可以 解决这个问题。  我看到 MSC0 的负载较重、但仍然远远低于 100%、并且 MSC1 也在加载--这将来自 tiovxmosaic。 我建议在 tiovxmultiscaler 之前添加一个“队列“(在 tiovxisp 之后的上限之后)

    图像中显示的负载表明有足够的余量。

    否则、我们应该通过 gst_tracers 查看其中一些插件的延迟情况、并了解它们在两个 pipeliens 之间的差异

    我的建议向前发展:

    • 为 tiovxmultiscaler 添加队列
    • 使用 gst-trackers 运行 --在  gst-launch-1.0 命令前:
      "GST_DEBUG_FILE=/run/trace.log GST_DEBUG_NO_COLOR=1 GST_DEBUG="GST_TRACER:7" GST_TRACERS="latency(flags=element)"
      • And in another process, run the python script under /opt/edgeai-gst-apps/scripts/gst_tracers/ as suggested in the local README there

    BR、
    Reese

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

    尊敬的 Jason:

    感谢您尝试此操作。 这似乎不是特别有用--增加端到端延迟和更高的 FPS 波动... FPS 的范围是多少? 第二个 gst-trace 似乎恶化了。

    我曾认为在 tiovxmosiac 之后/ tiperfoverlay 之前、管道中有一个队列。 您能否在 tiovxmosaic 之后添加队列、并在 tivoxisp 之后删除队列?

    我们的测试流水线通常会在任何 MSC 元素之后放置队列(有时仅在 TIDL / tidlinferer +预/后处理等长阶段的情况下才会出现)。 这意味着队列始终位于 tiovxmultiscaler(对于每个输出,就像您所做的那样)之后和 tiovxmosaic 之后。  

    如果这样无法解决问题、我将寻求具备优化流水线延迟/FPS 相关经验的专家帮助。

    了解流水线中缓冲区的丢弃位置也会很有用。

    BR、
    Reese

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

    尊敬的 Reese:

    FPS 的范围是多少? [/报价]

    正如您在该部分中看到的、 sinkprobe 节拍是毫秒单位、表示帧延迟、22ms 表示 fps 约为 1000/22 = 45fps、17ms 为 60fps、33ms 为 30fps。 范围是 30fps - 60fps。

    sinkprobe tick = [22]
    Frame PTS: 0:00:02.793496560 | Current Time: 0:00:03.015986645 | Latency: 222.49 ms
    sinkprobe tick = [17]
    Frame PTS: 0:00:02.826540300 | Current Time: 0:00:03.032982025 | Latency: 206.44 ms
    sinkprobe tick = [17]
    Frame PTS: 0:00:02.859585730 | Current Time: 0:00:03.050071300 | Latency: 190.49 ms
    sinkprobe tick = [17]
    Frame PTS: 0:00:02.876105695 | Current Time: 0:00:03.067078985 | Latency: 190.97 ms
    sinkprobe tick = [17]
    Frame PTS: 0:00:02.909151825 | Current Time: 0:00:03.084138140 | Latency: 174.99 ms
    sinkprobe tick = [17]
    Frame PTS: 0:00:02.942204080 | Current Time: 0:00:03.101200560 | Latency: 159.00 ms
    sinkprobe tick = [29]
    Frame PTS: 0:00:02.958733800 | Current Time: 0:00:03.130493455 | Latency: 171.76 ms
    sinkprobe tick = [32]
    Frame PTS: 0:00:02.991778850 | Current Time: 0:00:03.163160180 | Latency: 171.38 ms
    sinkprobe tick = [34]
    Frame PTS: 0:00:03.024823610 | Current Time: 0:00:03.196900770 | Latency: 172.08 ms
    sinkprobe tick = [34]
    Frame PTS: 0:00:03.057874810 | Current Time: 0:00:03.230648790 | Latency: 172.77 ms
    sinkprobe tick = [33]
    Frame PTS: 0:00:03.074399660 | Current Time: 0:00:03.264452105 | Latency: 190.05 ms
    sinkprobe tick = [22]
    Frame PTS: 0:00:03.090919430 | Current Time: 0:00:03.285897180 | Latency: 194.98 ms
    sinkprobe tick = [29]
    Frame PTS: 0:00:03.107443495 | Current Time: 0:00:03.315142150 | Latency: 207.70 ms
    sinkprobe tick = [21]
    Frame PTS: 0:00:03.123967875 | Current Time: 0:00:03.336490715 | Latency: 212.52 ms
    sinkprobe tick = [29]
    Frame PTS: 0:00:03.140487350 | Current Time: 0:00:03.365764980 | Latency: 225.28 ms
    sinkprobe tick = [33]
    Frame PTS: 0:00:03.157011100 | Current Time: 0:00:03.399435735 | Latency: 242.42 ms
    sinkprobe tick = [34]
    Frame PTS: 0:00:03.190055880 | Current Time: 0:00:03.433202235 | Latency: 243.15 ms
    sinkprobe tick = [34]
    Frame PTS: 0:00:03.223108015 | Current Time: 0:00:03.466923065 | Latency: 243.82 ms
    sinkprobe tick = [21]
    Frame PTS: 0:00:03.256155485 | Current Time: 0:00:03.488392065 | Latency: 232.24 ms
    sinkprobe tick = [30]
    Frame PTS: 0:00:03.289201870 | Current Time: 0:00:03.517654495 | Latency: 228.45 ms
    sinkprobe tick = [21]
    Frame PTS: 0:00:03.338776350 | Current Time: 0:00:03.539073695 | Latency: 200.30 ms
    sinkprobe tick = [29]
    Frame PTS: 0:00:03.355302475 | Current Time: 0:00:03.568302330 | Latency: 213.00 ms
    sinkprobe tick = [22]
    Frame PTS: 0:00:03.388353590 | Current Time: 0:00:03.589668340 | Latency: 201.31 ms
    sinkprobe tick = [29]
    Frame PTS: 0:00:03.404872930 | Current Time: 0:00:03.618894090 | Latency: 214.02 ms
    sinkprobe tick = [21]
    Frame PTS: 0:00:03.437919555 | Current Time: 0:00:03.640296665 | Latency: 202.38 ms
    sinkprobe tick = [30]
    Frame PTS: 0:00:03.470967795 | Current Time: 0:00:03.669577740 | Latency: 198.61 ms
    sinkprobe tick = [33]
    Frame PTS: 0:00:03.504021800 | Current Time: 0:00:03.703245470 | Latency: 199.22 ms
    sinkprobe tick = [34]
    Frame PTS: 0:00:03.537063455 | Current Time: 0:00:03.736968580 | Latency: 199.91 ms
    sinkprobe tick = [21]
    Frame PTS: 0:00:03.553594465 | Current Time: 0:00:03.758453620 | Latency: 204.86 ms
    sinkprobe tick = [30]
    Frame PTS: 0:00:03.586635530 | Current Time: 0:00:03.787697675 | Latency: 201.06 ms
    sinkprobe tick = [33]
    Frame PTS: 0:00:03.603161730 | Current Time: 0:00:03.821392045 | Latency: 218.23 ms
    sinkprobe tick = [34]
    Frame PTS: 0:00:03.636205870 | Current Time: 0:00:03.855112830 | Latency: 218.91 ms
    sinkprobe tick = [22]
    Frame PTS: 0:00:03.652729900 | Current Time: 0:00:03.876596530 | Latency: 223.87 ms

    您能否在 tiovxmosaic 之后添加队列、并在 tivoxisp 之后删除队列?

    我按照这种方法再次尝试它,结果是相同的添加“queue"后“后“tivoxisp"。“。 这会增加延迟并导致帧速率波动。

    BR、

    Jason

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

    尊敬的 Jason:

    让我在内部进行检查、并尽快回复您。

    此致、

    建中

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

    尊敬的 Jason:

    您可以尝试在 v4l2src 之后添加队列并按如下所示增加 ISP 缓冲池吗


    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    视频/x-Bayer、宽度=1920、高度=1536、帧速率=60/1、格式=bggr12! 排队! \
    tiovxisp sink_0:::device=/dev/v4l-subdev4 Sink_0::pool_size=5 NAME=ISP \
    sensor-name=“x3f"\“\
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9! \
    video/x-raw、格式=NV12、宽度=1920、高度=1536、帧速率=60/1! \
    tiovxmultiscaler name=multiple \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0! video/x-raw、width=1280、height=720、format=NV12! 排队! 马赛克.SINK_0 \
    multi.src_1! video/x-raw、width=640、height=720、format=NV12! 排队! 马赛克.SINK_1 \
    tiovxmosaic name=mosaic \
    SINK_0::startx=“<0>" SINK_0“ SINK_0::starty=“<0>"\“\
    Sink_1::startx=“<1280>" Sink_1“ Sink_1::starty=“<0>"!“! \
    tiperfoverlay! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    这将使捕获在不同的线程中运行

    此致
    Rahul T r

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

    嗨、Rahul

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import! \
    视频/x-Bayer、宽度=1920、高度=1536、帧速率=60/1、格式=bggr12! 排队! \
    tiovxisp sink_0:::device=/dev/v4l-subdev4 Sink_0::pool_size=5 NAME=ISP \
    sensor-name=“x3f"\“\
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9! \
    video/x-raw、格式=NV12、宽度=1920、高度=1536、帧速率=60/1! \
    tiovxmultiscaler name=multiple \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0! video/x-raw、width=1280、height=720、format=NV12! 排队! 马赛克.SINK_0 \
    multi.src_1! video/x-raw、width=640、height=720、format=NV12! 排队! 马赛克.SINK_1 \
    tiovxmosaic name=mosaic \
    SINK_0::startx=“<0>" SINK_0“ SINK_0::starty=“<0>"\“\
    Sink_1::startx=“<1280>" Sink_1“ Sink_1::starty=“<0>"!“! \
    tiperfoverlay! \
    kmssink 驱动程序-name=tidss sync=false skip-vsync=true

    我运行此命令并获得 60fps、但这是 msc 的 2 通道输出。 我尝试按照在 tiovxmultiscaler 中添加另一个输出

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    video/x-bayer, width=1920, height=1536, framerate=60/1, format=bggr12 ! queue ! \
    tiovxisp sink_0::device=/dev/v4l-subdev4 sink_0::pool_size=5 name=isp \
    sensor-name="X3F" \
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9 ! \
    video/x-raw, format=NV12, width=1920, height=1536, framerate=60/1 ! \
    tiovxmultiscaler name=multi \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0 ! video/x-raw, width=1280,height=720,format=NV12 ! queue ! mosaic.sink_0 \
    multi.src_1 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! mosaic.sink_1 \
    multi.src_2 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! fakesink \
    tiovxmosaic name=mosaic \
    sink_0::startx="<0>" sink_0::starty="<0>" \
    sink_1::startx="<1280>" sink_1::starty="<0>" ! \
    tiperfoverlay ! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    我添加了一个队列并增加了 ISP 池的大小、但仍然得到了 46fps

    BR

    Jason

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

    尊敬的 Jason:

    你能尝试在 MSC2 上运行马赛克吗

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    视频/x-Bayer、宽度=1920、高度=1536、帧速率=60/1、格式=bggr12! 排队! \
    tiovxisp sink_0:::device=/dev/v4l-subdev4 sink_0:::pool_size=5 name=isp \
    sensor-name=“x3f"\“\
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9! \
    video/x-raw、格式=NV12、宽度=1920、高度=1536、帧速率=60/1! \
    tiovxmultiscaler name=multiple \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0! video/x-raw、width=1280、height=720、format=NV12! 排队! 马赛克.SINK_0 \
    multi.src_1! video/x-raw、width=640、height=720、format=NV12! 排队! 马赛克.SINK_1 \
    multi.src_2! video/x-raw、width=640、height=720、format=NV12! 排队! fakesink \
    tiovxmosaic name=mosaic 目标= 2 \
    SINK_0::startx=“<0>" SINK_0“ SINK_0::starty=“<0>"\“\
    Sink_1::startx=“<1280>" Sink_1“ Sink_1::starty=“<0>"!“! \
    tiperfoverlay! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    此致
    Rahul T r

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

    嗨、Rahul  

    此命令仍然不起作用、perfoverlay 显示其为 46fps

    我运行 GST-CHECK-1.0 tiovxmosaic、我将 target=1 设置为使用 msc2、但 fps 下降至 30fps

      target              : TIOVX target to use by this element
                            flags: readable, writable, controllable
                            Enum "GstTIOVXMosaicTarget" Default: 2, "VPAC_MSC1_AND_MSC2"
                               (0): VPAC_MSC1        - VPAC MSC1
                               (1): VPAC_MSC2        - VPAC MSC2
                               (2): VPAC_MSC1_AND_MSC2 - VPAC MSC1 and VPAC MSC2
    

    命令

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    video/x-bayer, width=1920, height=1536, framerate=60/1, format=bggr12 ! queue ! \
    tiovxisp sink_0::device=/dev/v4l-subdev4 sink_0::pool_size=5 name=isp \
    sensor-name="X3F" \
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9 ! \
    video/x-raw, format=NV12, width=1920, height=1536, framerate=60/1 ! \
    tiovxmultiscaler name=multi \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0 ! video/x-raw, width=1280,height=720,format=NV12 ! queue ! mosaic.sink_0 \
    multi.src_1 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! mosaic.sink_1 \
    multi.src_2 ! video/x-raw, width=640,height=720,format=NV12 ! queue ! fakesink \
    tiovxmosaic name=mosaic target=1 \
    sink_0::startx="<0>" sink_0::starty="<0>" \
    sink_1::startx="<1280>" sink_1::starty="<0>" ! \
    tiperfoverlay ! \
    kmssink driver-name=tidss sync=false skip-vsync=true


    BR

    Jason

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

    尊敬的 Jason:

    ISP 延迟很高、可能是因为它没有在正确的时间获得输出缓冲器
    您可以尝试下面的流水线

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    视频/x-Bayer、宽度=1920、高度=1536、帧速率=60/1、格式=bggr12!  排队!  \
    tiovxisp sink_0:::device=/dev/v4l-subdev4  Sink_0::pool_size=5  NAME=ISP \
    sensor-name=“x3f"\“\
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9! \
    video/x-raw、格式=NV12、宽度=1920、高度=1536、帧速率=60/1! 队列 ! \
    tiovxmultiscaler Sink::pool_size=5 NAME=MULTI \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0! video/x-raw、width=1280、height=720、format=NV12! 排队! 马赛克.SINK_0 \
    multi.src_1! video/x-raw、width=640、height=720、format=NV12! 排队! 马赛克.SINK_1 \
    tiovxmosaic name=mosaic \
    SINK_0::startx=“<0>" SINK_0“ SINK_0::starty=“<0>"\“\
    Sink_1::startx=“<1280>" Sink_1“ Sink_1::starty=“<0>"!“! \
    tiperfoverlay! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    还与上述流水线共享延迟数

    此致
    Rahul T r

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

    嗨、Rahul

    以下是命令结果

    跟踪信息如下所示

    +-----------------------------------------------------------------------------------+
    |element                       latency      out-latancy      out-fps     frames     |
    +-----------------------------------------------------------------------------------+
    |capsfilter0                   0.07         17.15            58          2537       |
    |queue0                        29.53        17.17            58          2536       |
    |isp                           44.96        17.16            58          2534       |
    |capsfilter1                   0.17         17.16            58          2534       |
    |queue1                        58.79        17.19            58          2530       |
    |multi                         16.48        8.59             116         5058       |
    |capsfilter2                   0.14         17.19            58          2529       |
    |queue2                        0.09         17.19            58          2529       |
    |capsfilter3                   0.10         17.19            58          2529       |
    |queue3                        0.08         17.19            58          2529       |
    |mosaic                        20.65        17.19            58          2528       |
    |tiperfoverlay0                2.41         17.17            58          2528       |
    +-----------------------------------------------------------------------------------+
    

    BR、

    Jason

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

    尊敬的 Jason:

    我看到 FPS 有所改善
    剂量是否满足您的需求?

    此致
    Rahul T r

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

    嗨、Rahul

    此命令 仍使用 MSC 的 2 输出。 我的问题实际上与 MSC 超过 3 个输出具体出现的问题有关。

    我修改了 origianal 命令如下所示:

    gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
    视频/x-Bayer、宽度=1920、高度=1536、帧速率=60/1、格式=bggr12! 排队! \
    tiovxisp sink_0:::device=/dev/v4l-subdev4 sink_0:::pool_size=5 name=isp \
    sensor-name=“x3f"\“\
    dcc-isp-file=/opt/imaging/ox03f/dcc_viss.bin \
    sink_0::dcc-2a-file=/opt/imaging/ox03f/dcc_2a.bin format-msb=9! \
    video/x-raw、格式=NV12、宽度=1920、高度=1536、帧速率=60/1! 排队! \
    tiovxmultiscaler sink::pool_size=5 name=multiple \
    src_0::roi-startx=0 src_0::roi-starty=0 src_0::roi-width=1280 src_0::roi-height=720 \
    src_1::roi-startx=0 src_1::roi-starty=0 src_1::roi-width=1920 src_1::roi-height=1080 \
    multi.src_0! video/x-raw、width=1280、height=720、format=NV12! 排队! 马赛克.SINK_0 \
    multi.src_1! video/x-raw、width=640、height=720、format=NV12! 排队! 马赛克.SINK_1 \
    multi.src_2! video/x-raw、width=640、height=720、format=NV12! 排队! fakesink sync=false \
    tiovxmosaic name=mosaic \
    SINK_0::startx=“<0>" SINK_0“ SINK_0::starty=“<0>"\“\
    Sink_1::startx=“<1280>" Sink_1“ Sink_1::starty=“<0>"!“! \
    tiperfoverlay! \
    kmssink driver-name=tidss sync=false skip-vsync=true

    +-----------------------------------------------------------------------------------+
    |element                       latency      out-latancy      out-fps     frames     |
    +-----------------------------------------------------------------------------------+
    |capsfilter0                   0.07         32.94            30          1148       |
    |queue0                        63.11        33.00            30          1147       |
    |isp                           74.17        33.02            30          1145       |
    |capsfilter1                   0.15         33.02            30          1145       |
    |queue1                        122.16       33.12            30          1141       |
    |multi                         32.19        11.05            90          3420       |
    |capsfilter2                   0.18         33.14            30          1140       |
    |queue2                        0.09         33.14            30          1140       |
    |capsfilter3                   0.11         33.14            30          1140       |
    |queue3                        0.08         33.14            30          1140       |
    |capsfilter4                   0.10         33.14            30          1140       |
    |queue4                        0.14         33.14            30          1140       |
    |mosaic                        35.97        33.15            30          1139       |
    |tiperfoverlay0                2.45         33.12            30          1139       |
    +-----------------------------------------------------------------------------------+
    

    使用此命令时、fps 仅较低 30fps 。 之前、我的 3 MSC 输出命令仍可获得 50fps。

    BR、

    Jason