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 流水线在几次迭代后导致问题

Guru**** 2551110 points
Other Parts Discussed in Thread: AM62A7

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1561965/am62a7-gstreamer-pipeline-causing-issue-after-few-iteration

器件型号:AM62A7


工具/软件:

您好、

我们将 AM62A7 处理器和摄像头传感器。 当我们与 tiovxmultiscaler 插件一起使用流水线时、在流水线启动和停止几次后关闭流水线时、流水线会停止。 以下是流水线:

gst-launch-1.0 v4l2src device=/dev/video-rpi-cam0 io-mode=dmabuf-import ! video/x-bayer, width=1920, height=1200, format=rggb ! tiovxisp sink_0::device=/dev/v4l-rpi-subdev0 dcc-isp-file=/opt/imaging/ar0235/dcc_viss_8bit_1920x1200.bin sink_0::dcc-2a-file=/opt/imaging/ar0235/dcc_2a_8bit_1920x1200.bin format-msb=9 sink_0::ae-mode=2 ! video/x-raw, format=NV12, width=1920, height=1200 ! tiovxmultiscaler name=split split. ! video/x-raw, format=NV12, width=960, height=600 ! queue ! textoverlay text="foo" ! videorate ! video/x-raw,framerate=30/1 ! v4l2h264enc extra-controls=\"c,video_gop_size=30,h264_profile=4,video_bitrate=90000,h264_level=9,h264_i_frame_period=512,prepend_sps_and_pps_to_idr=1\" ! video/x-h264,profile=high !  mpegtsmux ! udpsink host=127.0.0.1 port=6310 split. ! video/x-raw, format=NV12, width=1920, height=1200 ! queue ! textoverlay text="bar" ! videorate ! video/x-raw,framerate=30/1 ! v4l2h264enc extra-controls=\"c,video_gop_size=30,h264_profile=4,video_bitrate=90000,h264_level=9,h264_i_frame_period=512,prepend_sps_and_pps_to_idr=1\" ! video/x-h264,profile=high !  mpegtsmux ! udpsink host=127.0.0.1 port=6320 split. ! video/x-raw, format=NV12, width=1920, height=1200 ! queue ! textoverlay text="baz" ! v4l2jpegenc ! rtpjpegpay ! udpsink host=127.0.0.1 port=6330
 

进行几次迭代后、收到以下错误、此时流水线挂起。  

APP: Init ... !!!
MEM: Init ... !!!
MEM: Initialized DMA HEAP (fd=6) !!!
MEM: Init ... Done !!!
IPC: Init ... !!!
IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
 69920.128897 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
 69920.129015 s:  VX_ZONE_INIT:Enabled
 69920.129029 s:  VX_ZONE_ERROR:Enabled
 69920.129041 s:  VX_ZONE_WARNING:Enabled
 69920.129992 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
 69920.130152 s:  VX_ZONE_INIT:[tivxHostInitLocal:101] Initialization Done for HOST !!!
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Redistribute latency...
Redistribute latency...
IttCtrl_registerHandler: command echo registered at location 0
IttCtrl_registerHandler: command iss_read_2a_params registered at location 1
IttCtrl_registerHandler: command iss_write_2a_params registered at location 2
IttCtrl_registerHandler: command iss_raw_save registered at location 3
IttCtrl_registerHandler: command iss_yuv_save registered at location 4
IttCtrl_registerHandler: command iss_read_sensor_reg registered at location 5
IttCtrl_registerHandler: command iss_write_sensor_reg registered at location 6
IttCtrl_registerHandler: command dev_ctrl registered at location 7
IttCtrl_registerHandler: command iss_send_dcc_file registered at location 8
Error: failed to open i2c bus at /dev/i2c-9
Warning: Failed to initialize i2c bus. Register read/write will not work !!!
 NETWORK: Opened at IP Addr = 172.25.3.37, socket port=5000!!!
Redistribute latency...
handling interrupt.9.
Interrupt: Stopping pipeline ...
Execution ended after 0:00:09.752114548
Setting pipeline to NULL ...
ERROR: from element /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0: Failed to allocate required memory.
Additional debug info:
../gst-plugins-good-1.20.7/sys/v4l2/gstv4l2videoenc.c(849): gst_v4l2_video_enc_handle_frame (): /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0:
Buffer pool activation failed
An error happened while waiting for EOS
ERROR: from element /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc1: Failed to allocate required memory.
Additional debug info:
../gst-plugins-good-1.20.7/sys/v4l2/gstv4l2videoenc.c(849): gst_v4l2_video_enc_handle_frame (): /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc1:
Buffer pool activation failed
An error happened while waiting for EOS

看起来流水线没有获得 EOS 信号、仍在等待 EOS 信号。 发生此错误时、RAM 和 CMA 存储器足以运行另一个流水线。

请告诉我们如何纠正此问题?

此致、

Jay

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

    尊敬的 Jay:

    请在启动流水线之前编写一个处理 EOS 信号的 gstreamer 应用、您还需要验证元素/流水线的状态是否正确保持。  

    在测试场景时、命令行使用不可靠。  

    此外、还有一个简单的流水线搭配摄像头捕获和视频编码场景而不使用任何 tiovxmultiscaler、您是否发现了问题?

    此致、

    Suren

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

    您好、Suren、

    感谢您的答复。

    如果没有 tiovxmultiscaler、简单的流水线可正常工作、不会出现任何数量的流水线启动和停止问题

    gst-launch-1.0 -e -v v4l2src device=/dev/video-rpi-cam0 io-mode=dmabuf-import !
      video/x-bayer, width=1920, height=1200, framerate=30/1, format=rggb !
      tiovxisp sink_0::device=/dev/v4l-rpi-subdev0 dcc-isp-file=/opt/imaging/ar0235/dcc_viss_8bit_1920x1200_wider.bin sink_0::dcc-2a-file=/opt/imaging/ar0235/dcc_2a_8bit_1920x1200_wider.bin format-msb=9 sink_0::ae-mode=2 !
      tiovxldc dcc-file=/opt/imaging/ar0235/dcc_ldc_8bit_1920x1200_wider.bin sensor-name=SENSOR_SONY_IMX219_RPI sink_0::ae-mode=2 !
      video/x-raw, format=NV12, width=1920, height=1200, framerate=30/1 !
      v4l2jpegenc output-io-mode=dmabuf-import ! tcpserversink host = 172.25.3.37 port=5000 buffers-soft-max=2 recover-policy=1

    上面的简单流水线在 n 个流水线启动和停止时工作正常。

    此致、

    Jay

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

    尊敬的 Jay:

    我已将您的问题转递给我的同事。 他明天会回应你。

    此致、

    Suren

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

    尊敬的 Jay:

    我在您的日志中看到了以下消息:

    IttCtrl_registerHandler: command echo registered at location 0
    IttCtrl_registerHandler: command iss_read_2a_params registered at location 1
    IttCtrl_registerHandler: command iss_write_2a_params registered at location 2
    IttCtrl_registerHandler: command iss_raw_save registered at location 3
    IttCtrl_registerHandler: command iss_yuv_save registered at location 4
    IttCtrl_registerHandler: command iss_read_sensor_reg registered at location 5
    IttCtrl_registerHandler: command iss_write_sensor_reg registered at location 6
    IttCtrl_registerHandler: command dev_ctrl registered at location 7
    IttCtrl_registerHandler: command iss_send_dcc_file registered at location 8
    Error: failed to open i2c bus at /dev/i2c-9

    您是否打开了实时调优?

    您是否在以下行将 I2C_BUS 更改为 9: https://git.ti.com/cgit/processor-sdk/imaging/tree/utils/itt_server/src mode/itt_ctrl_handle_sensor.c?h=main#n71?

    如在流水线多次启动和停止后所示、无法访问 I2C 总线 9。

    此致、

    建中

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

    尊敬的建中:

    I2C 总线没有更改为 9。 在工作案例中也会看到 I2C 总线错误。 我怀疑在图像调整相关更改中看到了此错误。 因此、我删除了调优更改、并再次进行了检查。 我也观察到了这种情况下的流水线挂起问题。 以下是相同的日志:

    APP: Init ... !!!
    MEM: Init ... !!!
    MEM: Initialized DMA HEAP (fd=6) !!!
    MEM: Init ... Done !!!
    IPC: Init ... !!!
    IPC: Init ... Done !!!
    REMOTE_SERVICE: Init ... !!!
    REMOTE_SERVICE: Init ... Done !!!
      2327.406492 s: GTC Frequency = 200 MHz
    APP: Init ... Done !!!
      2327.406602 s:  VX_ZONE_INIT:Enabled
      2327.406618 s:  VX_ZONE_ERROR:Enabled
      2327.406629 s:  VX_ZONE_WARNING:Enabled
      2327.407615 s:  VX_ZONE_INIT:[tivxInitLocal:130] Initialization Done !!!
      2327.407815 s:  VX_ZONE_INIT:[tivxHostInitLocal:101] Initialization Done for HOST !!!
    Setting pipeline to PAUSED ...
    Pipeline is live and does not need PREROLL ...
    Pipeline is PREROLLED ...
    Setting pipeline to PLAYING ...
    New clock: GstSystemClock
    Redistribute latency...
    Redistribute latency...
    Redistribute latency...
    Redistribute latency...
    Redistribute latency...
    Redistribute latency...
    handling interrupt.9.
    Interrupt: Stopping pipeline ...
    EOS on shutdown enabled -- Forcing EOS on the pipeline
    Waiting for EOS...

    因此、挂起问题与 i2c-9 错误无关。 我怀疑流水线中的一个元素没有 从该元素释放资源和应用 EOS 信号、并一直等待。

    此致、

    Jay

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

    尊敬的 建中:

    如果此主题有任何更新、请告知我们。

    此致、

    Jay

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

    尊敬的 建中:

    您是否有机会检查此问题? 此问题对于我们的产品似乎至关重要。 如果我们方面还需要什么,请告诉我们。

    此致、

    Jay

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

    尊敬的建中:  

    提示: 该问题在 SDK-9 中发现。 但在 SDK-10 中未观察到问题。 但目前、我们的量产版本将使用 SDK-9 完成、我们 也希望在 SDK-9 中解决此问题。 您能否向特定 开发团队提出此问题、如果他们可以提供有关此问题的任何提示。 在这里、提示回复会很有帮助。

    此致、

    Jay

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

    尊敬的 Jay:

    SDK 9.x 是一个相当旧的版本、我认为我们不能提供支持。 请升级到 SDK 10.x 或 11.1。

    此致、

    建中