Other Parts Discussed in Thread: TDA4VM, SK-TDA4VM
器件型号: TDA4VM
主题中讨论的其他器件: TDA4VL、
您好、专家。
目前我正在 TDA4VM (edge-AI-SDK11) 中移植 AR0234 Bayer 传感器。
我的硬件设置
摄像头 1 --> J18 连接器-->平台
摄像头 2 --> J19 连接器-->平台
问题:当我同时串流两个摄像头流时、有时我的 gstreamer 只停留在一个帧中。 仅按下一个帧、之后不按下任何帧显示。 我已确保传感器侧没有问题。 如果我重新启动视频流、我也无法按键显示。
在流冻结情况下、以下是 perf 状态日志。 (HWA 中无)

当我正在流式传输单个摄像头时、没有流自由、如果重新启动也没有问题、则会出现“n“个时间。
正常情况下的 PERF 状态:

每次使用 Ctrl+c 关闭流。
我使用以下脚本执行媒体链接和 GST 流水线。 请告诉我,如果管道建设有任何问题?.
我相信硬件方面没有问题 、我对流水线构建(尤其是 tiovxisp 和 tiovxmosaic 插件)存有疑问。 我在 SDK10 中也遇到过同样的问题。
注意:在脚本中、我使用了一些符号链接名称。
root@tda4vm-sk:/opt/edgeai-gst-apps# cat CUTDA4_StreamLauncher.sh
#!/bin/bash
# Ask user to select camera(s)
echo "Select camera(s):"
echo "1) J18"
echo "2) J19"
echo "3) Both J18 + J19"
read -p "Enter your choice (1/2/3): " cam_choice
# Validate the camera selection input
if [[ "$cam_choice" != "1" && "$cam_choice" != "2" && "$cam_choice" != "3" ]]; then
echo "Invalid camera choice. Please select 1, 2, or 3."
exit 1
fi
# Ask user to select resolution
echo "Select resolution:"
echo "1) 1920x1200"
echo "1) 1920x1080"
echo "2) 1280x720"
read -p "Enter your choice (1 or 2 or 3): " res_choice
# Resolution logic and validation
if [[ "$res_choice" == "1" ]]; then
WIDTH=1920
HEIGHT=1200
elif [[ "$res_choice" == "2" ]]; then
WIDTH=1920
HEIGHT=1080
elif [[ "$res_choice" == "3" ]]; then
WIDTH=1280
HEIGHT=720
else
# Handle invalid resolution input
echo "Invalid resolution choice"
exit 1
fi
# Camera configuration parameters for J18
J18_DEV=0
J18_BRIDGE="cdns_csi2rx.4504000.csi-bridge"
J18_TICSI="4500000.ticsi2rx"
J18_SENSOR="ar0234 6-0042"
J18_VIDEO="/dev/video0"
# Camera configuration parameters for J19
J19_DEV=1
J19_BRIDGE="cdns_csi2rx.4514000.csi-bridge"
J19_TICSI="4510000.ticsi2rx"
J19_SENSOR="ar0234 7-0042"
# Function to get J19 video device node dynamically from media-ctl
get_j19_video_device() {
# Extract the device node from the media-ctl output where context 0 is linked
J19_VIDEO=$(media-ctl -d 1 -p -e "4510000.ticsi2rx context 0" | grep video | awk '{print $4}')
}
# Get the J19 video device dynamically
get_j19_video_device
# Function to configure media-ctl for a camera (J18/J19)
configure_camera() {
local dev_id=$1
local bridge=$2
local ticsi=$3
local sensor=$4
local width=$5
local height=$6
# Set up media control for bridge, ticsi, and sensor with specified format
media-ctl -d "$dev_id" --set-v4l2 "\"$bridge\":0[fmt:SGRBG10_1X10/1920x1200 field:none]"
media-ctl -d "$dev_id" --set-v4l2 "\"$ticsi\":0[fmt:SGRBG10_1X10/1920x1200 field:none]"
media-ctl -d "$dev_id" --set-v4l2 "\"$sensor\":0[fmt:SGRBG10_1X10/1920x1200]"
}
# GStreamer launching based on selected camera choice
case "$cam_choice" in
1)
# J18 only
# Configure camera settings for J18
configure_camera $J18_DEV "$J18_BRIDGE" "$J18_TICSI" "$J18_SENSOR" $WIDTH $HEIGHT
# Launch GStreamer pipeline for J18
# gst-launch-1.0 -q \
# v4l2src device=$J18_VIDEO ! "video/x-raw,width=$WIDTH,height=$HEIGHT,format=UYVY" ! \
# kmssink sync=false driver-name=tidss -v
GST_DEBUG=3 gst-launch-1.0 v4l2src device=$J18_VIDEO io-mode=5 ! video/x-bayer, \
width=$WIDTH, height=$HEIGHT, framerate=60/1, format=grbg10 ! \
tiovxisp sink_0::device=/dev/v4l-ar0234-subdev0 sensor-name="SENSOR_AR0234" \
dcc-isp-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_viss.bin \
sink_0::dcc-2a-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_2a.bin format-msb=9 ! \
video/x-raw, format=NV12, width=$WIDTH, height=$HEIGHT, framerate=60/1 ! \
kmssink driver-name=tidss sync=false
;;
2)
# J19 only
# Configure camera settings for J19
configure_camera $J19_DEV "$J19_BRIDGE" "$J19_TICSI" "$J19_SENSOR" $WIDTH $HEIGHT
# Launch GStreamer pipeline for J19
gst-launch-1.0 v4l2src device=$J19_VIDEO io-mode=5 ! video/x-bayer, \
width=$WIDTH, height=$HEIGHT, framerate=60/1, format=grbg10 ! \
tiovxisp sink_0::device=/dev/v4l-ar0234-subdev0 sensor-name="SENSOR_AR0234" \
dcc-isp-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_viss.bin \
sink_0::dcc-2a-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_2a.bin format-msb=9 ! \
video/x-raw, format=NV12, width=$WIDTH, height=$HEIGHT, framerate=60/1 ! \
kmssink driver-name=tidss sync=false
;;
3)
# Both J18 and J19
# Configure camera settings for both J18 and J19
configure_camera $J18_DEV "$J18_BRIDGE" "$J18_TICSI" "$J18_SENSOR" $WIDTH $HEIGHT
configure_camera $J19_DEV "$J19_BRIDGE" "$J19_TICSI" "$J19_SENSOR" $WIDTH $HEIGHT
# Launch GStreamer pipeline for both J18 and J19
gst-launch-1.0 -v v4l2src device=$J18_VIDEO io-mode=5 ! video/x-bayer,\
width=$WIDTH, height=$HEIGHT, framerate=60/1, format=grbg10 ! queue leaky=2 ! \
tiovxisp sink_0::device=/dev/v4l-ar0234-subdev0 sensor-name="SENSOR_AR0234" \
dcc-isp-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_viss.bin \
sink_0::dcc-2a-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_2a.bin format-msb=9 \
sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, \
width=$WIDTH, height=$HEIGHT ! queue ! mosaic.sink_0 \
v4l2src device=$J19_VIDEO io-mode=5 ! video/x-bayer, \
width=$WIDTH, height=$HEIGHT, framerate=60/1, format=grbg10 ! queue leaky=2 ! \
tiovxisp sink_0::device=/dev/v4l-ar0234-subdev1 sensor-name="SENSOR_AR0234" \
dcc-isp-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_viss.bin \
sink_0::dcc-2a-file=/opt/imaging/ar0234/linear/$HEIGHT/dcc_2a.bin format-msb=9 \
sink_0::pool-size=8 src::pool-size=8 ! video/x-raw, format=NV12, \
width=1920, height=1200 ! queue ! mosaic.sink_1 \
tiovxmosaic name=mosaic \
sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<960>" sink_0::heights="<640>" \
sink_1::startx="<960>" sink_1::starty="<0>" sink_1::widths="<960>" sink_1::heights="<640>" ! \
video/x-raw, width=1920, height=1080 ! kmssink driver-name=tidss sync=false
;;
*)
# Invalid camera choice
echo "Invalid camera choice"
exit 1
;;
esac




