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:Wave5 解码器驱动器发生错误

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1575613/tda4ven-q1-wave5-decoder-driver-occur-error

器件型号: TDA4VEN-Q1

工具/软件:

SDK 版本:ti-processor-sdk-rtos-j722s-evm-11_00_00_06
当我运行此演示时:./vx_app_multi_cam_cam_codec.out --cfg ./app_multi_cam_cam_codec.cfg 、发生了编解码器驱动程序错误、错误如下所示:

app_multi_cam_codec.cfg 存在一些更改: 更改如下:

EN_ENCODE 0
IS_interactive 0
此外,我使用 gst 命令'filesrc location=./output_encoder.h264 num-buffers=29 ! 排队! h264parse! v4l2h264dec! 视频转换! video/x-raw、format=NV12! tiovxmemalloc pool-size=15! appsink name=testappsink DROP=true wait-on-eos=false max-buffers=4'、
出现了同样的错误。
导致上述解码器驱动程序错误的可能原因是什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好  

    请提供您在此命令中使用的以下 output_encoder.h264:

    filesrc location=./output_encoder.h264 num-buffers=29! 排队! h264parse! v4l2h264dec

    此致、

    Adam

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

    尊敬的 Adam:

    首先、感谢您的及时答复

     output_encoder.h264 是通过使用以下命令:拦截前 30 个帧而获得的

        

    ffmpeg -i /opt/vision_apps/test_data/psdkra/app_multi_cam_codec/TI_Custom_1920x1080_5secs.264 -frames:v 30 output_encoder.h264

      当我使用此命令'gst-launch-1.0 filesrc location=./output_encoder.h264 num-buffers=30! 队列 max-size-buffers=4! h264parse! v4l2h264dec! 队列 max-size-buffers=4! 视频转换! video/x-raw、format=NV12! tiovxmemalloc pool-size=15! filesink location=.v4l2_tiovx_decode.yu'、硬件解码器可以工作、但解码器驱动程序遇到以下错误:

    此外,我的解码输入是 30 帧,输出只有 20 帧(需要 30 帧),而第 19 帧输出有问题。 第 19 帧的图像如下所示:


    当我使用 v4l2 接口直接操作解码驱动程序而不是使用 gstreamer 时、解码完全不起作用。 v4l2 配置有 4 个解码输入和输出的缓冲器请求 (VIDIOC_REQBUFS reqbuf.count=4)、驱动程序错误如下所示:

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

    你(们)好  

    如果您与我们共享您的数据流“output_encoder.h264",“,会、会非常有用。 它将帮助我们重现您在我们这边的问题。  

    当我使用 v4l2 接口直接操作解码驱动程序而不是使用 gstreamer 时

    请尝试观看此演示:

    https://github.com/TexasInstruments/edgeai-tiovx-apps/blob/bb50f5ab5765f9b634cd40d744399dcbce296c52/tests/app_tiovx_linux_decode_display_test.c 

    此致、

    Adam

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

    你(们)好
    我已经测试了这个演示(管道:H264_FILE->decoder->mosaich->display)、但由于缺少'tidss'设备节点、它无法正常运行

    [引述 userid=“530618" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1575613/tda4ven-q1-wave5-decoder-driver-occur-error/6070248


    https://github.com/TexasInstruments/edgeai-tiovx-apps/blob/bb50f5ab5765f9b634cd40d744399dcbce296c52/tests/app_tiovx_linux_decode_display_test.c 

    [/报价]

    我尝试 insmod tidss.ko、但它无法正常工作、如何正确加载 tidss 的设备节点(位于/dev/dri 中)。


    此致

    Yu Yun

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

    您好、  

    为了正确运行解码函数(不使用显示节点),我修改了 app_tiovx_linux_decode_display_test.c 中的流水线 h264_file->decoder->mosice->YUV_FILE ,解码器可以很好地工作。  将该演示与我自己使用 v4l2 编写的操作解码驱动程序代码进行比较后、 我发现区别在于对输出解码的缓冲区请求数量 (V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)

    经过多次尝试后、发现当 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE 的缓冲区请求数小于 12 时、解码驱动程序将遇到紧急情况、如下所示:

    我认为这是解码器驱动程序的错误、该应用不知道 可应用的 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE 缓冲器的数量有限制。
    为了使解码器能够正常工作、我暂时将解码器的输出缓冲区数量更改为 12。


    此致

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

    您好、

    我将与开发团队一起审查、告知他们并在需要时将其提交给我们的 IP 供应商。

    谢谢、
    Sarabesh S.

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

    Yu Yun、你好!  

    我在 11.01 Linux + RTOS 上测试了 app_multi_cam_codec 演示、并能够运行演示捕获->编码来解码->显示流水线、而不会导致应用崩溃。 我在 帧速率较低时会看到一些性能问题 、但您应该能够顺利运行演示。 请确保您按照 Vision-Apps 设置指南(此处)中的所有步骤操作。  

    如果您仍然看到开箱即用图像错误、请告诉我。 如果您正在进行更改、请将其共享、以便我可以应用补丁程序。 请记住、这是一个  所有硬件  不是生产级产品。 由于软件设计中的限制、本演示可能存在无法解决的错误和限制。

    我看到 Adam Hua 共享了 v4l2 解码的 edge-ai 堆栈。 这可能是一个可能的选项、但我尚未在 J722s EVM 上验证此问题。 如果您计划使用边缘 AI 演示、其中大多数在构建中默认处于禁用状态。 您需要通过修改以下内容来启用它们: https://github.com/TexasInstruments/edgeai-tiovx-apps/blob/bb50f5ab5765f9b634cd40d744399dcbce296c52/tests/main.c#L85

    启用后、您需要重新编译 edgeai-tiovx-apps-test 以包括测试(可以在目标上完成)-https://github.com/TexasInstruments/edgeai-tiovx-apps/tree/develop?tab=readme-ov-file#steps-to-compile

    谢谢、
    Sarabesh S.

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

    您好、

       V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE 缓冲区的数量可能存在限制、您可以使用此补丁来测试它。

      

    diff --git a/modules/src/v4l2_decode_module.c b/modules/src/v4l2_decode_module.c
    index f07d70f..8c3bf1c 100644
    --- a/modules/src/v4l2_decode_module.c
    +++ b/modules/src/v4l2_decode_module.c
    @@ -206,7 +206,8 @@ int v4l2_decode_request_capture_buffers(v4l2DecodeHandle *handle)
         int status = 0;
     
         CLR(&req);
    -    req.count = handle->cfg.bufq_depth + V4L2_DECODE_MAX_BUFQ_DEPTH_OFFSET;
    +    // req.count = handle->cfg.bufq_depth + V4L2_DECODE_MAX_BUFQ_DEPTH_OFFSET;
    +    req.count = 9; // this buffer's count less than 12 which lead to decoder's driver crash
         req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
         req.memory = V4L2_MEMORY_DMABUF;
     
    diff --git a/tests/main.c b/tests/main.c
    index a5a85e9..c9d5be1 100644
    --- a/tests/main.c
    +++ b/tests/main.c
    @@ -82,7 +82,7 @@
     #define APP_MODULES_TEST_DISPLAY (0)
     #define APP_MODULES_TEST_V4L2_CAPTURE (0)
     #define APP_MODULES_TEST_LINUX_CAPTURE_DISPLAY (0)
    -#define APP_MODULES_TEST_LINUX_DECODE_DISPLAY (0)
    +#define APP_MODULES_TEST_LINUX_DECODE_DISPLAY (1)
     #define APP_MODULES_TEST_LINUX_CAPTURE_ENCODE (0)
     #define APP_MODULES_TEST_LINUX_MULTI_CAPTURE_DISPLAY (0)
     #define APP_MODULES_TEST_LINUX_RGB_IR_DISPLAY (0)

    此致