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.
Tool/software:
Hi,
I have a Starter Kit (SK) Edge AI device with a CSI sensor connected and would like to stream to my display. I have enabled the sensor by following the steps outlined in section 2.1 "Hardware Setup" and have validated functionality by running one of the out of box demos as outlined in section 3. "Edge AI sample apps". How to preview camera and stream the sensor output without any DL tasks in my pipeline?
Hello,
Please use this FAQ as a guide to get started with using GStreamer. Basic GStreamer pipelines are made up of two parts: input and output. This FAQ provides examples that use v4l2src to grab frames from a camera source and send the output to connected display. For more pipeline examples, see section 6. "Edge AI dataflows" of the Edge AI SDK for your respective device. For more information about GStreamer, I recommend taking a look at GStreamer tutorial pages that can be found on the web.
About this sensor: Raw sensor which requires ISP binaries, located in the /opt/imaging/imx219/linear directory, to be included in the GStreamer pipeline. If this sensor must be configured in a different resolution and format, please refer to the ISP tuning guide to generate new binaries to match your custom sensor configuration.
SK-TDA4VM, SK-AM68, SK-AM69, AM67: Follow the steps of section 2.1.4. "RPiV2(IMX219) Raw Sensor" of the Edge AI SDK to enable this sensor.
SK-AM62Ax: Follow the steps of section 2.1.3. "RPiV2(IMX219) Raw sensor" of the Edge AI SDK to enable this sensor.
Note for SK-AM68, SK-AM69, AM67: If you are using IMX219 or IMX390 connected via V3Link Mini Fusion Kit, follow the steps of section 2.1.5. "Mini Fusion" of the Edge AI SDK to enable this sensor. Mini Fusion is not enabled for SK-TDA4VM
Simple GStreamer pipeline for single input & output:
gst-launch-1.0 \ v4l2src device=/dev/video-imx219-cam0 io-mode=5 ! queue leaky=2 ! \ video/x-bayer, width=1920, height=1080, framerate=30/1, format=rggb ! \ tiovxisp sink_0::device=/dev/v4l-subdev2 sensor-name="SENSOR_SONY_IMX219_RPI" \ dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin \ sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 ! \ video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! \ kmssink driver-name=tidss sync=false
Simple GStreamer pipeline for multi input & output (4 camera):
gst-launch-1.0 \ v4l2src device=/dev/video-imx219-cam0 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev0 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_0 \ v4l2src device=/dev/video-imx219-cam1 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev1 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_1 \ v4l2src device=/dev/video-imx219-cam2 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev2 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_2 \ v4l2src device=/dev/video-imx219-cam3 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev3 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_3 \ tiovxmosaic name=mosaic \ sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<960>" sink_0::heights="<540>" \ sink_1::startx="<0>" sink_1::starty="<540>" sink_1::widths="<960>" sink_1::heights="<540>" \ sink_2::startx="<960>" sink_2::starty="<0>" sink_2::widths="<960>" sink_2::heights="<540>" \ sink_3::startx="<960>" sink_3::starty="<540>" sink_3::widths="<960>" sink_3::heights="<540>" ! \ video/x-raw, width=1920, height=1080 ! kmssink driver-name=tidss sync=false force-modesetting=true
Simple GStreamer pipeline for multi input & output (8 camera):
gst-launch-1.0 \ v4l2src device=/dev/video-imx219-cam0 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev0 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_0 \ v4l2src device=/dev/video-imx219-cam1 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev1 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_1 \ v4l2src device=/dev/video-imx219-cam2 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev2 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_2 \ v4l2src device=/dev/video-imx219-cam3 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev3 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_3 \ v4l2src device=/dev/video-imx219-cam4 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev4 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_4 \ v4l2src device=/dev/video-imx219-cam5 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev5 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_5 \ v4l2src device=/dev/video-imx219-cam6 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev6 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_6 \ v4l2src device=/dev/video-imx219-cam7 io-mode=5 ! video/x-bayer,width=1920,height=1080,framerate=30/1,format=rggb ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx219-subdev7 sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_1920x1080.bin sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_1920x1080.bin format-msb=7 sink_0::pool-size=8 src::pool-size=8 ! video/x-raw,format=NV12, width=1920,height=1080 ! queue ! mosaic.sink_7 \ tiovxmosaic name=mosaic \ sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<640>" sink_0::heights="<360>" \ sink_1::startx="<640>" sink_1::starty="<0>" sink_1::widths="<640>" sink_1::heights="<360>" \ sink_2::startx="<1280>" sink_2::starty="<0>" sink_2::widths="<640>" sink_2::heights="<360>" \ sink_3::startx="<0>" sink_3::starty="<360>" sink_3::widths="<640>" sink_3::heights="<360>" \ sink_4::startx="<640>" sink_4::starty="<360>" sink_4::widths="<640>" sink_4::heights="<360>" \ sink_5::startx="<1280>" sink_5::starty="<360>" sink_5::widths="<640>" sink_5::heights="<360>" \ sink_6::startx="<320>" sink_6::starty="<720>" sink_6::widths="<640>" sink_6::heights="<360>" \ sink_7::startx="<960>" sink_7::starty="<720>" sink_7::widths="<640>" sink_7::heights="<360>" ! \ video/x-raw, width=1920, height=1080 ! kmssink driver-name=tidss sync=false force-modesetting=true
About this sensor: Raw sensor which requires ISP binaries, located in the /opt/imaging/imx390/linear directory, to be included in the GStreamer pipeline. If this sensor must be configured in a different resolution and format, please refer to the ISP tuning guide to generate new binaries to match your custom sensor configuration.
SK-TDA4VM: Follow the steps of section 2.1.5. "IMX390 Raw Sensor" of the Edge AI SDK to enable this sensor.
SK-AM68, SK-AM69, AM67: Follow the steps of section 2.1.5. "Mini Fusion" of the Edge AI SDK to enable this sensor. Instead of appending the "k3-v3link-imx219-0-0.dtbo" overlay for imx219, add the "k3-fpdlink-imx390-rcm-0-0.dtbo" overlay for imx390.
SK-AM62Ax: Follow the steps of section 2.1.4. "Mini Fusion" of the Edge AI SDK to enable this sensor. Instead of appending the "k3-v3link-imx219-0-0.dtbo" overlay for imx219, add the "k3-fpdlink-imx390-rcm-0-0.dtbo" overlay for imx390.
Simple GStreamer pipeline for single input & output:
gst-launch-1.0 v4l2src device=/dev/video-imx390-cam0 io-mode=dmabuf-import ! \ video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! \ tiovxisp sink_0::device=/dev/v4l-imx390-subdev0 sensor-name=SENSOR_SONY_IMX390_UB953_D3 \ dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin \ format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 \ sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! \ kmssink sync=false driver-name=tidss
Simple GStreamer pipeline for multi input & output (4 camera):
gst-launch-1.0 \ v4l2src device=/dev/video-imx390-cam0 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev0 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_0 \ v4l2src device=/dev/video-imx390-cam1 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev1 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_1 \ v4l2src device=/dev/video-imx390-cam2 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev2 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_2 \ v4l2src device=/dev/video-imx390-cam3 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev3 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_3 \ tiovxmosaic name=mosaic \ sink_0::startx="<0>" sink_0::starty="<0>" \ sink_1::startx="<1920>" sink_1::starty="<0>" \ sink_2::startx="<0>" sink_2::starty="<1080>" \ sink_3::startx="<1920>" sink_3::starty="<1080>" ! \ kmssink sync=false driver-name=tidss -v
Simple GStreamer pipeline for multi input & output (8 camera):
gst-launch-1.0 \ v4l2src device=/dev/video-imx390-cam0 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev0 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_0 \ v4l2src device=/dev/video-imx390-cam1 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev1 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_1 \ v4l2src device=/dev/video-imx390-cam2 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev2 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_2 \ v4l2src device=/dev/video-imx390-cam3 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev3 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_3 \ v4l2src device=/dev/video-imx390-cam4 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev4 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_4 \ v4l2src device=/dev/video-imx390-cam5 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev5 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_5 \ v4l2src device=/dev/video-imx390-cam6 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev6 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_6 \ v4l2src device=/dev/video-imx390-cam7 ! video/x-bayer, width=1936, height=1100, framerate=30/1, format=rggb12 ! queue leaky=2 ! tiovxisp sink_0::device=/dev/v4l-imx390-subdev7 sensor-name=SENSOR_SONY_IMX390_UB953_D3 dcc-isp-file=/opt/imaging/imx390/linear/dcc_viss.bin sink_0::dcc-2a-file=/opt/imaging/imx390/linear/dcc_2a.bin format-msb=11 ! tiovxldc dcc-file=/opt/imaging/imx390/linear/dcc_ldc.bin sensor-name=SENSOR_SONY_IMX390_UB953_D3 sink_0::pool-size=8 c::pool-size=8 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! queue ! mosaic.sink_7 \ tiovxmosaic name=mosaic \ sink_0::startx="<0>" sink_0::starty="<0>" sink_0::widths="<640>" sink_0::heights="<360>" \ sink_1::startx="<640>" sink_1::starty="<0>" sink_1::widths="<640>" sink_1::heights="<360>" \ sink_2::startx="<1280>" sink_2::starty="<0>" sink_2::widths="<640>" sink_2::heights="<360>" \ sink_3::startx="<0>" sink_3::starty="<360>" sink_3::widths="<640>" sink_3::heights="<360>" \ sink_4::startx="<640>" sink_4::starty="<360>" sink_4::widths="<640>" sink_4::heights="<360>" \ sink_5::startx="<1280>" sink_5::starty="<360>" sink_5::widths="<640>" sink_5::heights="<360>" \ sink_6::startx="<320>" sink_6::starty="<720>" sink_6::widths="<640>" sink_6::heights="<360>" \ sink_7::startx="<960>" sink_7::starty="<720>" sink_7::widths="<640>" sink_7::heights="<360>" ! \ video/x-raw, width=1920, height=1080 ! kmssink driver-name=tidss sync=false force-modesetting=true
About this sensor: 2MP sensor with built-in ISP which can transmit raw YUYV frames over CSI lanes. Because this sensor has built-in ISP, binaries are not required to be added in the pipeline.
SK-TDA4VM, SK-AM68, SK-AM69, AM67: Follow the steps of section 2.1.3. "OV5640 YUV sensor" of the Edge AI SDK to enable this sensor.
Simple GStreamer pipeline for single input and output:
gst-launch-1.0 v4l2src device=/dev/video2 ! video/x-raw, width=1920, height=1080, format=UYVY ! kmssink driver-name=tidss sync=false
SK-TDA4VM, SK-AM68, SK-AM69, AM67: For more information on the UVC (USB video class) USB cameras that have been validated, see section 2.1.1 "USB Camera" of the Edge AI SDK.
SK-AM62Ax: For more information on the UVC (USB video class) USB cameras that have been validated, see section 2.1.2 "USB Camera" of the Edge AI SDK.
Simple GStreamer pipeline for single input & output:
gst-launch-1.0 v4l2src device="/dev/video-usb-cam0" ! videoconvert ! videoscale ! video/x-raw, width=1280, height=720 ! kmssink sync=false driver-name=tidss
Simple Gstreamer pipeline for single input and output (save to a file as mp4):
gst-launch-1.0 v4l2src device="/dev/video-usb-cam0" ! video/x-raw, width=1280, height=720 ! videoconvert ! video/x-raw, format=NV12 ! v4l2h264enc ! h264parse ! mp4mux ! filesink location=out.mp4
GStreamer Troubleshooting FAQ: COMING SOON
Streaming RTSP source with GStreamer FAQ: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1461875/faq-sk-am69-how-to-run-gstreamer-pipeline-with-rtsp-source
Enabling sensors via fusion board FAQ: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1452909/faq-am67a-enabling-csi2-sensors-via-fusion-board-on-am6x
ISP Tuning Guide: https://www.ti.com/lit/an/sprad86a/sprad86a.pdf
DCC Tuning Tool: https://www.ti.com/drr/opn/ADAS-SW-IMAGING
Thank you,
Fabiana