DART-MX8M CSI: Difference between revisions

From Variscite Wiki
No edit summary
No edit summary
Line 3: Line 3:
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:Yocto_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
--> {{#lst:B2QT_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
!-- Set local variables
-->{{#vardefine:HARDWARE_NAME|DART-MX8M}} <!--
--> {{#vardefine:VIDEO_DEV | <!--
-->    {{#switch:{{#var:HARDWARE_NAME}} | <!--
-->      DART-MX8M = videox | <!--
-->      DART-MX8M-PLUS = videox | <!--
-->      video0 <!--
-->    }} <!--
--> }} <!--
--> {{#vardefine:VIDEO_DEV_STR | <!--
-->    {{#switch:{{#var:HARDWARE_NAME}} | <!--
-->      DART-MX8M = In the examples below /dev/videoX is either /dev/video0 or /dev/video1 | <!--
-->      DART-MX8M-PLUS = In the examples below /dev/videoX is either /dev/video1 or /dev/video2 | <!--
-->        <!--
-->    }} <!--
--> }} <!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} Camera}} {{DocImage|category1=Yocto|category2={{#var:HARDWARE_NAME}}}} __toc__
--> {{PageHeader|{{#var:HARDWARE_NAME}} Camera}} {{DocImage|category1=Yocto|category2={{#var:HARDWARE_NAME}}}} __toc__
= Testing MIPI-CSI2 cameras =
= Testing MIPI-CSI2 cameras =
Line 68: Line 52:


{{#varexists:USE_KMSSINK |
{{#varexists:USE_KMSSINK |
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M |
Cooming soon
| {{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M-PLUS |
Cooming soon
| {{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX8M-NANO |
| {{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX8M-NANO |
* 1280x720@30fps:
* 1280x720@30fps:
Line 83: Line 71:
* 1920x1080@30fps:
* 1920x1080@30fps:
  # gst-launch-1.0 v4l2src device=/dev/video0 ! imxvideoconvert_g2d ! video/x-raw,width=1920,height=1080 ! kmssink sync=false can-scale=false
  # gst-launch-1.0 v4l2src device=/dev/video0 ! imxvideoconvert_g2d ! video/x-raw,width=1920,height=1080 ! kmssink sync=false can-scale=false
}}
}}}}}}
|
|
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M |
In the examples below /dev/videoX is either /dev/video0 or /dev/video1
* 480P 640x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=640,height=480 ! autovideosink sync=false
* NTSC 720x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=720,height=480 ! autovideosink sync=false
* 720P 1280x720@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1280,height=720 ! autovideosink sync=false


{{#var:VIDEO_DEV_STR}}
* 1080P: 1920x1080@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false


* QSXGA 2592x1944@15fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
| {{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M-PLUS |
In the examples below /dev/videoX is either /dev/video1 or /dev/video2
* 480P 640x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=640,height=480 ! autovideosink sync=false
* NTSC 720x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=720,height=480 ! autovideosink sync=false
* 720P 1280x720@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1280,height=720 ! autovideosink sync=false
* 1080P: 1920x1080@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false
* QSXGA 2592x1944@15fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
|
* 480P 640x480@30fps:
* 480P 640x480@30fps:
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=640,height=480 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! autovideosink sync=false


* NTSC 720x480@30fps:
* NTSC 720x480@30fps:
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=720,height=480 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=720,height=480 ! autovideosink sync=false


* 720P 1280x720@30fps:
* 720P 1280x720@30fps:
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=1280,height=720 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720 ! autovideosink sync=false


* 1080P: 1920x1080@30fps:
* 1080P: 1920x1080@30fps:
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false


* QSXGA 2592x1944@15fps:
* QSXGA 2592x1944@15fps:
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
}}
}}}}}}


== Testing Camera JPEG Snapshot ==
== Testing Camera JPEG Snapshot ==

Revision as of 14:35, 22 April 2021

DART-MX8M Camera

Testing MIPI-CSI2 cameras

Before running any of the pipelines below make sure you have camera(s) connected. i.MX family of processors uses gstreamer as multimedia framework. Please refer to https://gstreamer.freedesktop.org/

Camera Probe

Run the following command to see if you have the camera(s) detected

# v4l2-ctl --list-devices

This should produce the following output

# v4l2-ctl --list-devices
i.MX6S_CSI (platform:30a90000.csi1_bridge):
      /dev/video0

i.MX6S_CSI (platform:30b80000.csi2_bridge):
      /dev/video1

As you can see above there are 2 cameras accessible as /dev/video0 and /dev/video1

Testing Camera Preview on Display

In the examples below /dev/videoX is either /dev/video0 or /dev/video1

  • 480P 640x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=640,height=480 ! autovideosink sync=false
  • NTSC 720x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=720,height=480 ! autovideosink sync=false
  • 720P 1280x720@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1280,height=720 ! autovideosink sync=false
  • 1080P: 1920x1080@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false
  • QSXGA 2592x1944@15fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false

Testing Camera JPEG Snapshot

To capture JPEG snapshot run one of the pipelines below depending upon the required picture resolution.
In the examples below /dev/videoX is either /dev/video0 or /dev/video1

  • 480P 640x480:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=640,height=480   ! jpegenc ! filesink location=/tmp/test.jpg
  • NTSC 720x480:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=720,height=480   ! jpegenc ! filesink location=/tmp/test.jpg
  • 720P 1280x720:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=1280,height=720  ! jpegenc ! filesink location=/tmp/test.jpg
  • 1080P 1920x1080:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=1920,height=1080 ! jpegenc ! filesink location=/tmp/test.jpg
  • QSXGA 2592x1944:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=2592,height=1944 ! jpegenc ! filesink location=/tmp/test.jpg

Using both cameras simultaneously

The following pipeline is an example of using both cameras simultaneously.
In this example a short video stream from each camera is saved as an MJPEG-encoded AVI file.

# gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=100 ! video/x-raw,width=1920,height=1080 ! jpegenc ! avimux ! filesink location=./test0.avi \
                 v4l2src device=/dev/video1 num-buffers=100 ! video/x-raw,width=1920,height=1080 ! jpegenc ! avimux ! filesink location=./test1.avi