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.

[参考译文] TDA4VEN-Q1:包含 tiovxisp 插件的 gstreamer 流水线在切换状态时遇到错误

Guru**** 2442090 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1548444/tda4ven-q1-the-gstreamer-pipeline-containing-the-tiovxisp-plugin-encountered-an-error-while-switching-states

器件型号:TDA4VEN-Q1


工具/软件:

尊敬的 TI 专家:

我们正在以下环境中进行有关 gstreamer 流水线状态切换的实验:
、Ω TDA4VEN EVM
2、10.01 EdgeAISDK.https://www.ti.com.cn/tool/PROCESSOR-SDK-AM67A

3、HDMI 显示器

4、imx219 摄像头
我们希望首先初始化流水线、然后将流水线状态设置为“正在播放“、 几秒钟后将流水线状态设置为 “就绪“、再几秒钟后将流水线状态切换回“正在播放“。 当使用 imx219->tiovxisp ->tiovxmultiscaler ->kmssink 管道并从 就绪 状态切换回播放状态时、程序会报告以下错误:

APP: Init ... !!!
    43.156919 s: MEM: Init ... !!!
    43.157022 s: MEM: Initialized DMA HEAP (fd=10) !!!
    43.157350 s: MEM: Init ... Done !!!
    43.157398 s: IPC: Init ... !!!
    43.227239 s: IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
    43.239583 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
    43.243848 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
    43.243908 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
    43.243918 s:  VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
    43.245788 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0
    43.246050 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1
    43.246285 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2
    43.246510 s:  VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3
    43.246538 s:  VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!!
    43.246600 s:  VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
    53.459114 s:  VX_ZONE_ERROR: [vxGetStatus:1178] Reference is NULL

** (gst_test:1449): CRITICAL **: 17:55:56.763: gst_tiovx_get_size_from_exemplar: assertion 'VX_SUCCESS == vxGetStatus (exemplar)' failed

观察到的现象是监视器继续显示摄像机的最后一帧。 如果您使用 GST_DEBUG=3 来查看详细错误。 第 21 行指出与 ISP 相关的错误:

0:00:00.210281570  3083     0x16139670 WARN                 kmssink gstkmssink.c:2101:_validate_and_set_external_fd:<kmssink0> Can't set fd... driver-name already set.
0:00:00.339272370  3083 0xffff90000b70 WARN                 v4l2src gstv4l2src.c:987:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
0:00:00.339396670  3083 0xffff90000b70 WARN              aggregator gstaggregator.c:2159:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
0:00:00.340113440  3083 0xffff90000f70 WARN                    v4l2 gstv4l2object.c:4666:gst_v4l2_object_get_crop_rect:<v4l2src0:src> VIDIOC_CROPCAP failed
0:00:00.340265730  3083 0xffff90000b70 WARN                 v4l2src gstv4l2src.c:987:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
0:00:00.340329825  3083 0xffff90000b70 WARN              aggregator gstaggregator.c:2159:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
0:00:00.342638440  3083 0xffff90000b70 WARN                 v4l2src gstv4l2src.c:987:gst_v4l2src_query:<v4l2src0> Can't give latency since framerate isn't fixated !
0:00:00.342719370  3083 0xffff90000f70 WARN                    v4l2 gstv4l2object.c:4666:gst_v4l2_object_get_crop_rect:<v4l2src0:src> VIDIOC_CROPCAP failed
0:00:00.342742460  3083 0xffff90000b70 WARN              aggregator gstaggregator.c:2159:gst_aggregator_query_latency_unlocked:<tiovxisp0> Latency query failed
0:00:00.417617115  3083 0xffff90000f70 WARN          v4l2bufferpool gstv4l2bufferpool.c:1334:gst_v4l2_buffer_pool_dqbuf:<v4l2src0:pool0:src> Driver should never set v4l2_buffer.field to ANY
0:00:00.419119580  3083 0xffff90000b70 FIXME               basesink gstbasesink.c:3399:gst_base_sink_default_event:<kmssink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:00.448987640  3083 0xffff90000b70 WARN            kmsallocator gstkmsallocator.c:526:gst_kms_allocator_dmabuf_import:<KMSMemory::allocator> Failed to close GEM handle: Invalid argument 22
0:00:00.451454290  3083 0xffff90000f70 WARN                    v4l2 gstv4l2object.c:4666:gst_v4l2_object_get_crop_rect:<v4l2src0:src> VIDIOC_CROPCAP failed
0:00:00.469899205  3083 0xffff90000b70 FIXME             aggregator gstaggregator.c:1448:gst_aggregator_aggregate_func:<tiovxisp0> Subclass should call gst_aggregator_selected_samples() from its aggregate implementation.
0:00:00.481082960  3083 0xffff90000b70 WARN            kmsallocator gstkmsallocator.c:526:gst_kms_allocator_dmabuf_import:<KMSMemory::allocator> Failed to close GEM handle: Invalid argument 22
0:00:05.345807770  3083 0xffff90000b70 WARN               tiovxsimo gsttiovxsimo.c:1385:gst_tiovx_simo_push_buffers:<tiovxmultiscaler0> Error pushing to pad: <tiovxmultiscaler0:src_0>
0:00:10.408638685  3083 0xffff90000b70 WARN                    v4l2 gstv4l2object.c:4666:gst_v4l2_object_get_crop_rect:<v4l2src0:src> VIDIOC_CROPCAP failed
   328.651388 s:  VX_ZONE_ERROR: [vxGetStatus:1178] Reference is NULL

** (gst_test:3083): CRITICAL **: 18:00:31.955: gst_tiovx_get_size_from_exemplar: assertion 'VX_SUCCESS == vxGetStatus (exemplar)' failed
0:00:10.411360450  3083 0xffff90001170 ERROR              tiovxmiso gsttiovxmiso.c:866:gst_tiovx_miso_propose_allocation:<tiovxisp0> Failed to get size from exemplar
0:00:10.411538560  3083 0xffff90000b70 WARN                    v4l2 gstv4l2object.c:4666:gst_v4l2_object_get_crop_rect:<v4l2src0:src> VIDIOC_CROPCAP failed
0:00:10.412045970  3083 0xffff90000b70 WARN                    v4l2 gstv4l2object.c:5471:gst_v4l2_object_decide_allocation:<v4l2src0> error: No downstream pool to import from.
0:00:10.412098380  3083 0xffff90000b70 WARN                    v4l2 gstv4l2object.c:5471:gst_v4l2_object_decide_allocation:<v4l2src0> error: When importing DMABUF or USERPTR, we need a pool to import from
0:00:10.412254215  3083 0xffff90000b70 WARN                 basesrc gstbasesrc.c:3354:gst_base_src_prepare_allocation:<v4l2src0> Subclass failed to decide allocation
0:00:10.412346040  3083 0xffff90000b70 WARN                 basesrc gstbasesrc.c:3134:gst_base_src_loop:<v4l2src0> error: Internal data stream error.
0:00:10.412378110  3083 0xffff90000b70 WARN                 basesrc gstbasesrc.c:3134:gst_base_src_loop:<v4l2src0> error: streaming stopped, reason not-negotiated (-4)
0:00:10.413021135  3083 0xffff90001170 FIXME               basesink gstbasesink.c:3399:gst_base_sink_default_event:<kmssink0> stream-start event without group-id. Consider implementing group-id handling in the upstream elements

如果我们不使用 imx219 摄像头和 ISP、而是使用 testsrc、我们可以成功切换流水线状态。

两个 gstreamer 流水线都包含在附件的源代码中。 我们提供的附件源代码可以通过 cmake 编译并直接在 EVM 板上运行。 当输入参数 1 时、执行 testsrc 流水线、当输入参数 2 时、执行 imx219 流水线。 通过这种方式、TI 专家可以重现我们在 EVM 电路板上遇到的问题。 我们想知道流水线中的 ISP 插件是否支持此类状态切换。

此致

Yangtian

e2e.ti.com/.../ti_5F00_gst.zip

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

    尊敬的 Yangtian:


    我已通知相应的专家对这一问题进行了调查。 提前感谢您的耐心。

    此致
    Gokul

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

    尊敬的 Yangtian:

    如果您将管道设置为暂停、会发生什么情况?

    此致、
    Jared

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

    您好 Jared、

    如果我将流水线设置为暂停、则可以将其设置回播放、但我们想要做的是更改 GST 插件的一些上限和属性、 这只能在 NULL 或 READY 状态下更改。  

    我们能够在没有 tiovxisp(如附件中提供)的流水线中成功修改 tiovxmultiscaler 和 tiovxmosaic 处于就绪状态的一些 CAP 和属性、并切换回播放状态。 但是、当 tiovxisp 存在时将出现错误。

    此致、

    Yangtian

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

    尊敬的 Yangtian:

    请阅读此主题以获取解决方案:  SK-AM62A-LP:GStreamer 状态更改失败 

    不支持此行为。  

    此致、
    Jared