器件型号: 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 存在一些更改: 更改如下:
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
工具/软件:
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 存在一些更改: 更改如下:
尊敬的 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 时
请尝试观看此演示:
此致、
Adam
你(们)好
我已经测试了这个演示(管道:H264_FILE->decoder->mosaich->display)、但由于缺少'tidss'设备节点、它无法正常运行


我尝试 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。
此致
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)
此致