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:tiovxmultiscaler 插件会导致图像中出现不必要的伪影

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1642671/am62a7-tiovxmultiscaler-plugin-causing-unwanted-artifacts-in-the-image

器件型号: AM62A7

您好、  

我们在基于我们使用单色图像传感器的定制硬件 AM62A34 上的 tiovxmultiscaler 元素运行 gstreamer 流水线时观察到了不需要的伪影。 当场景中有运动时、我们会根据附加的图像观察到运动部件上的伪影。 使用静态场景时、图像清晰、没有可见的伪影。

我们使用以下命令捕获 2 秒的视频流:
 

gst-launch-1.0 v4l2src device=/dev/video-rpi-cam0 io-mode=dmabuf num-buffers=200 ! video/x-raw,format=GRAY8,width=1920,height=1200,framerate=30/1 ! tiovxmultiscaler ! video/x-raw,format=GRAY8,width=1024,height=640,framerate=30/1 ! queue max-size-buffers=500 ! filesink location=frames.raw

捕获视频后、我们将使用以下命令将它们转换为图像:

ffmpeg -f rawvideo -pixel_format gray -video_size 1024x640 -framerate 30 -i frames.raw frame_%04d.png

我们仅在使用硬件标量 (tiovxmultiscaler) 时才观察到这个问题、而使用以下基于软件的缩放(视频标度)流水线时无法观察到问题。

gst-launch-1.0 v4l2src device=/dev/video-rpi-cam0 io-mode=dmabuf num-buffers=200 ! video/x-raw,format=GRAY8,width=1920,height=1200,framerate=30/1 ! queue max-size-buffers=500 ! videoscale ! video/x-raw,format=GRAY8,width=1024,height=640,framerate=30/1 ! queue max-size-buffers=500 ! filesink location=frames.raw

我们将 SDK11 用于定制硬件。 如需更多信息、请告知我们。

frame_0004.pngframe_0001.pngframe_0002.pngframe_0003.png

 

此致、

Jay

 

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

    尊敬的 Jay:

    我也看到了 videotestsrc 的这个问题。 我正在调查为什么会发生这种情况。 请在本周结束前收到回复。

    此致、
    Jay

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

    尊敬的 Jay:  

    此主题是否有任何更新?

    此致、

    Jay

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

    尊敬的 Jay:

    对此表示歉意。 还有一些其他调试花费的时间比预期的时间长。

    在重温问题时、我看到我先前尝试重制这一问题时犯了一个错误。 使用 videotestsrc 时、它按预期工作。 您能否分享以下信息:

    1.在默认 SDK 基础上所做的任何更改。
    2.如果在您的设置中使用 videotestsrc 观察到相同的工件。

    此致、
    Jay

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

    尊敬的 Jay:

    我们将定制 Yocto 层与器件一起使用、其中集成了 meta-edgeai 层、就像来自 SDK11 一样。

    我尝试使用 videotestsrc 进行测试、但没有在捕获的图像上观察到任何伪影。 据观察、此插件不接受“io-mode=dmabuf“参数、因此我们使用 videotestsrc 将其删除以进行测试。

    如上所述、仅当场景中存在运动时、此问题才会重现。 无运动时图像正常。 因此、预计 videotestsrc 无法帮助重现此问题。 我也尝试了像球和 SMPTE 这样的视频格式的移动模式,但这个问题也无法重现。

    谢谢、
    Jay

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

    尊敬的 Jay:

    此主题是否有任何更新?

    此致、

    Jay

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

    尊敬的 Jay:

    此主题是否有任何更新?

    此致、

    Jay

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

    尊敬的 Jay:

    很抱歉我没有回复。 我一直尝试使用 IMX219 传感器重现此问题。 我一直在尝试的管道是:

    IMX219 -> ISP -> Videoconvert to GRAY8 ->多标量->输出

    我没有这样做。 您能否告诉我您是否修改了任何 GStreamer 源? 还是直接把一切都拉上来?

    您是否能够在 TI EVM 上重现此问题?

    我也会在后台积极进行调试。 我会随时向您发布有关我最新进展的信息。

    此致、
    Jay

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

    您好、

    我们能够在 SDK11 版本的 EVM 上重现此问题。  

    执行以下命令以捕获原始文件:

    gst-launch-1.0 v4l2src device=/dev/video-imx219-cam0 io-mode=dmabuf num-buffers=200 ! video/x-bayer,format=rggb,width=1920,height=1080,framerate=30/1 ! tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin sink_0::device=/dev/v4l-imx219-subdev0 ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1  ! tiovxmultiscaler ! video/x-raw,format=NV12,width=960,height=540,framerate=30/1 ! queue max-size-buffers=500 ! filesink location=frames.raw

    使用以下命令将输入转换为图像:

    ffmpeg -f rawvideo -pixel_format nv12 -video_size 960x540 -framerate 30 -i frames.raw frame_%04d.png

    我们在 EVM 上获得了类似的 IMX219 传感器工件、如下所示:  

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

    尊敬的 Jay:

    很抱歉、延迟的回复。

    我对您的问题有一些意见。 无论 tiovxmultiscaler、videoscale 还是不存在分辨率更改元素、这似乎都存在。 问题似乎是由于在流水线中设置了 dmabuf 模式。 尝试将其设置为 dmabuf-import。 这允许 VPAC 节点 (tiovxisp 或 tiovxmultiscaler) 分配缓冲区。

    基本问题是缓冲区不足。 上游流水线缺少缓冲区、这会导致 CSI 级别出现问题。 由于同样的原因、问题也可能是文件 I/O 尝试使用 kmssink 将其显示到屏幕上。 由于文件 I/O 较小、添加 H264 或 H265 编码也会减少此延迟。

    目前、我不确定允许 ISP/多标量节点分配缓冲区会产生什么影响。 我将尝试在星期一/星期二上对此进行更详细的回应。

    此致、
    Jay

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

    尊敬的 Jay:

    有关此问题的更多信息。 问题几乎肯定是 dmabuf 的设置。 我在内部与团队进行了检查。 他们阐明了、除非 VPAC 节点导出缓冲区、否则它们将回退到 CPU 副本。 通过将 v4l2src 设置为 dmabuf-import 并允许 tiovxisp/tiovxmultiscaler 分配缓冲区、这些节点将利用 DMA、从而使流水线更快。

    澄清一下、VPAC 节点如下:
    1.tiovxisp
    2. tiovxldc
    3. tiovxmultiscaler

    此致、
    Jay