工具/软件:
我们有机会进行 AM62A7 设计、它涉及在 imx462 摄像头上执行编码(与 imx290 非常相似)。
我们在边缘 AI SDK 10.0 上运行了一项设置、其中包含 imx290.c 补丁、可支持 imx462。
我能够使用以下流水线将传感器数据流式传输到连接的 HDMI 显示器:
gst-launch-1.0 -v v4l2src device=/dev/video3 io-mode=dmabuf-import ! \ video/x-bayer, width=1920, height=1080, framerate=60/1, format=rggb10 ! \ tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_SONY_IMX219_RPI" \ dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_10b.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_10b.bin format-msb=9 ! \ video/x-raw, format=NV12, width=1920, height=1080, framerate=60/1 ! fpsdisplaysink name=fpssink text-overlay=false video-sink="kmssink driver-name=tidss"
现在我们正在尝试运行编码以远程流式传输(或传输到文件)、但我们使用的基于 SDK 文档的命令(如下所示)失败:
root@mitysom-am62ax:~# gst-launch-1.0 v4l2src device=/dev/video3 io-mode=dmabuf-import ! \
video/x-bayer,width=1920,height=1080, framerate=30/1, format=rggb10 ! \
tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI \
dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss.bin \
sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a.bin \
sink_0::device=/dev/v4l-subdev2 format-msb=9 ! \
video/x-raw,format=NV12 ! \
v4l2h264enc output-io-mode=dmabuf-import ! \
udpsink port=8081 host=10.0.103.185
APP: Init ... !!!
256986.587068 s: MEM: Init ... !!!
256986.587142 s: MEM: Initialized DMA HEAP (fd=9) !!!
256986.587316 s: MEM: Init ... Done !!!
256986.587331 s: IPC: Init ... !!!
256986.607655 s: IPC: Init ... Done !!!
REMOTE_SERVICE: Init ... !!!
REMOTE_SERVICE: Init ... Done !!!
256986.613127 s: GTC Frequency = 200 MHz
APP: Init ... Done !!!
256986.613277 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR
256986.613293 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING
256986.613305 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO
256986.614699 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0
256986.615101 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1
256986.615452 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2
256986.615800 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3
256986.615852 s: VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!!
256986.615866 s: VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipelin[ 5630.968268] imx290 1-001a: imx290_start_streaming
e is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[ 5631.117923] imx290 1-001a: imx290_start_streaming : 0
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0: Failed to process frame.
Additional debug info:
/usr/src/debug/gstreamer1.0-plugins-good/1.22.12/sys/v4l2/gstv4l2videoenc.c(901): gst_v4l2_video_enc_handle_frame (): /GstPipeline:pipeline0/v4l2h264enc:v4l2h264enc0:
Maybe be due to not enough memory or failing driver
Execution ended after 0:00:00.238726669
Setting pipeline to NULL ...
Freeing pipeline ...
256986.998696 s: VX_ZONE_WARNING: [vxReleaseContext:1275] Found a reference 0xffff800ce340 of type 0000080f at external count 1, internal count 0, releasing it
256986.998751 s: VX_ZONE_WARNING: [vxReleaseContext:1277] Releasing reference (name=image_104) now as a part of garbage collection
256986.998777 s: VX_ZONE_WARNING: [vxReleaseContext:1275] Found a reference 0xffff8014bcf0 of type 00000813 at external count 1, internal count 0, releasing it
256986.998792 s: VX_ZONE_WARNING: [vxReleaseContext:1277] Releasing reference (name=object_array_106) now as a part of garbage collection
256986.999170 s: VX_ZONE_WARNING: [vxReleaseContext:1275] Found a reference 0xffff8014bea0 of type 00000813 at external count 1, internal count 0, releasing it
256986.999187 s: VX_ZONE_WARNING: [vxReleaseContext:1277] Releasing reference (name=object_array_108) now as a part of garbage collection
APP: Deinit ... !!!
REMOTE_SERVICE: Deinit ... !!!
REMOTE_SERVICE: Deinit ... Done !!!
256987.004787 s: IPC: Deinit ... !!!
256987.005464 s: IPC: DeInit ... Done !!!
256987.005521 s: MEM: Deinit ... !!!
256987.005786 s: DDR_SHARED_MEM: Alloc's: 25 alloc's of 38823759 bytes
256987.005836 s: DDR_SHARED_MEM: Free's : 25 free's of 38823759 bytes
256987.005848 s: DDR_SHARED_MEM: Open's : 0 allocs of 0 bytes
256987.005868 s: MEM: Deinit ... Done !!!
APP: Deinit ... Done !!!
具体而言、我们看到:
错误:来自元素/GstPipeline:pipaine0/v4l2h264enc:v4l2h264enc0:无法处理帧。
其他调试信息:
/usr/debug/debug/gstreamer1.0-plugins-good/1.22.12/sys/v4l2/gstv4l2videoenc.c src (901):gst_v4l2_video_enc_handle_frame ():/GstPipeline0/v4l2h264enc:v4l2h264enc0:
可能是由于存储器不足或驱动程序故障造成的
执行在 0:00:00.238726669 之后结束
如果我更改流水线以从 v4l2h264enc 中删除“output-io-mode"字“字段、则流水线会运行、但不生成输出(不使用 udpsink 发送网络数据包、仅使用 fileink 生成标头)。
您能帮我们进行调试吗?
谢谢。
Mike