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-Q1:tiovxmultiscaler 会导致颜色损坏

Guru**** 2439670 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1543545/am62a7-q1-tiovxmultiscaler-causes-color-corruption

器件型号:AM62A7-Q1


工具/软件:

您好:

我有一个简单的测试流水线、它获取 videotestsrc @ 1920x1080 的输出、并将其缩小到 528x410、然后使用 tiovxdlcolorconvert 从 NV12 转换为 RGB。

如果我使用 tiovxmultiscaler 进行缩放(速度更快)、则颜色错误。

gst-launch-1.0 -v -e videotestsrc is-live=true \
        ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 \
        ! queue max-size-buffers=1 leaky=0 name=qstream2 \
        ! tiovxmultiscaler target=1 \
        ! video/x-raw, width=528, height=410 \
        ! tiovxdlcolorconvert \
        ! video/x-raw, format=RGB \
        ! queue max-size-buffers=1 leaky=0 \
        ! kmssink sync=true plane-id=31 render-rectangle="<97,8,528,410>"

如果我使用 tiscaler 替换 tiovxmultiscaler、则流水线如下所示:

gst-launch-1.0 -v -e videotestsrc is-live=true \
        ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 \
        ! queue max-size-buffers=1 leaky=0 name=qstream2 \
        ! tiscaler method=0 \
        ! video/x-raw, width=528, height=410 \
        ! tiovxdlcolorconvert \
        ! video/x-raw, format=RGB \
        ! queue max-size-buffers=1 leaky=0 \
        ! kmssink sync=true plane-id=31 render-rectangle="<97,8,528,410>"

并且屏幕输出正确(但我只需要 15fps 而不是 30fps):

如何使用 tiovxmultiscaler、使这种颜色损坏不会发生?

此致、

Bas Vermeulen

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

    这似乎与 AM62A7:分离视频流时出现 GStreamer 颜色格式错误 — 处理器论坛-处理器 — TI E2E 支持论坛

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

    由于某种原因、在 tiovxmultiscaler 上使用三个输出可以使事情奏效。

    gst-launch-1.0 -v -e videotestsrc is-live=true \
            ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 \
            ! queue max-size-buffers=1 leaky=0 name=qstream2 \
            ! tiovxmultiscaler target=1 name=multi \
            multi.src_0 \
            ! video/x-raw, width=528, height=410 \
            ! tiovxdlcolorconvert \
            ! video/x-raw, format=RGB \
            ! queue max-size-buffers=1 leaky=0 \
            ! kmssink sync=true plane-id=31 render-rectangle="<97,8,528,410>" \
            multi.src_1 \
            ! queue \
            ! fakesink \
            multi.src_2 \
            ! queue \
            ! fakesink

    是否可以在 tiovxmultiscaler 中解决此问题? 我有一种权变措施、但不应需要它。

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

     tiovxdlcolorconvert 元素也会导致类似的问题。 分辨率略有不同、但效果值得注意:

    此图像是此命令的结果:

    gst-launch-1.0 -v -e videotestsrc is-live=true \
            ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 \
            ! queue max-size-buffers=1 leaky=0 name=qstream2 \
            ! tiovxmultiscaler target=1 \
            ! video/x-raw, width=680, height=410 \
            ! tiovxdlcolorconvert \
            ! video/x-raw, format=RGB \
            ! kmssink sync=true plane-id=31 render-rectangle="<10,8,680,410>"

    使用 视频转换元素时一切正常:

    使用以下命令时会执行此操作:

    gst-launch-1.0 -v -e videotestsrc is-live=true \
            ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 \
            ! queue max-size-buffers=1 leaky=0 name=qstream2 \
            ! tiovxmultiscaler target=1 \
            ! video/x-raw, width=680, height=410 \
            ! videoconvert \
            ! video/x-raw, format=RGB \
            ! kmssink sync=true plane-id=31 render-rectangle="<10,8,680,410>"
    

    唯一的区别是 视频转换。

    此致、
    尼古拉