DART-MX8M CSI: Difference between revisions

From Variscite Wiki
No edit summary
 
(12 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<!-- Set release according to "release" parameter in URL and use RELEASE_SUMO_V1.0_DART-MX8M as default
<!-- Set release according to "release" parameter in URL and use RELEASE_SUMO_V1.0_DART-MX8M as default
--> {{#vardefine:RELEASE_PARAM|{{#urlget:release|RELEASE_SUMO_V1.0_DART-MX8M}}}} <!--
--> {{INIT_RELEASE_PARAM|RELEASE_SUMO_V1.0_DART-MX8M}}<!--
--> {{#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}}}} <!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} Camera}} {{DocImage|category1=Yocto|category2={{#var:HARDWARE_NAME}}}} __toc__
--> {{#lst:Debian_Platform_Customization|{{#var:RELEASE_PARAM}}}} <!--
!-- Set local variables
--> {{#vardefine:VIDEO_DEV | <!--
-->    {{#switch:{{#var:HARDWARE_NAME}} | <!--
-->      DART-MX8M = videoX | <!--
-->      DART-MX8M-PLUS = videoX | <!--
-->      VAR-SOM-MX8 = 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 | <!--
-->      VAR-SOM-MX8 = In the examples below /dev/videoX is either /dev/video0 or /dev/video1 | <!--
-->        <!--
-->    }} <!--
--> }} <!--
--> {{PageHeader|{{#var:HARDWARE_NAME}} Camera}} {{DocImage|category1=Yocto|category2=Debian}} [[Category:{{#var:HARDWARE_NAME}}]] __toc__
= Testing MIPI-CSI2 cameras =
= 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.
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/
Please refer to https://gstreamer.freedesktop.org/
{{#varexists:DEBIAN_NAME|
== Install Utils ==
Run the following command to install v4l-utils:
# apt-get clean; apt-get update; apt-get install -y v4l-utils
}}


== Camera Probe ==
== Camera Probe ==
Line 40: Line 64:
</pre>
</pre>
As you can see above there are 2 cameras accessible as /dev/video1 and /dev/video2
As you can see above there are 2 cameras accessible as /dev/video1 and /dev/video2
| {{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX93 |
<pre>
# v4l2-ctl --list-devices
FSL Capture Media Device (platform:42800000.bus:camera):
/dev/media0
mxc-isi-cap (platform:4ae40000.isi:cap_devic):
/dev/video0
</pre>
As you can see above there is 1 camera accessible as /dev/video0
|
|
<pre>
<pre>
Line 47: Line 81:
</pre>
</pre>
As you can see above there is 1 camera accessible as /dev/video0
As you can see above there is 1 camera accessible as /dev/video0
}}}}
}}}}}}


== Testing Camera Preview on Display ==
== Testing Camera Preview on Display ==
{{#var:VIDEO_DEV_STR}}


{{#varexists:USE_KMSSINK |
{{#varexists:USE_KMSSINK |
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M |
{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX8M-NANO |
Cooming soon
* HD 720p 1280x720@30fps:
| {{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M-PLUS |
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=1280,height=720 ! kmssink sync=false can-scale=false
Cooming soon
| {{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX8M-NANO |
* 1280x720@30fps:
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720 ! kmssink sync=false can-scale=false


* 1920x1080@30fps:
* Full HD 1080p 1920x1080@30fps:
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080 ! kmssink sync=false can-scale=false
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=1920,height=1080 ! kmssink sync=false can-scale=false
|
|
* 800x480@30fps:
* NTSC 480p 720x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/video0 ! imxvideoconvert_g2d ! video/x-raw,width=800,height=480 ! kmssink sync=false can-scale=false
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! imxvideoconvert_g2d ! video/x-raw,width=720,height=480 ! kmssink sync=false can-scale=false
 
* 1280x720@30fps:
# gst-launch-1.0 v4l2src device=/dev/video0 ! imxvideoconvert_g2d ! video/x-raw,width=1280,height=720 ! kmssink sync=false can-scale=false
 
* 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
}}}}}}
|
{{#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
 
* 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:
* HD 720p 1280x720@30fps:
  # gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! imxvideoconvert_g2d ! video/x-raw,width=1280,height=720 ! kmssink sync=false can-scale=false


* QSXGA 2592x1944@15fps:
* Full HD 1080p 1920x1080@30fps:
  # gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! imxvideoconvert_g2d ! video/x-raw,width=1920,height=1080 ! kmssink sync=false can-scale=false
}}
|
|
* 480P 640x480@30fps:
* VGA 480p 640x480@30fps:
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480 ! autovideosink sync=false
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=640,height=480 ! autovideosink sync=false
 
* NTSC 720x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=720,height=480 ! autovideosink sync=false


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


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


* QSXGA 2592x1944@15fps:
* Full HD 1080p 1920x1080@30fps:
  # gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
# gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false
{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX8M-NANO ||{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX93 ||
* QSXGA 1944p 2592x1944@15fps:
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} ! video/x-raw,width=2592,height=1944 ! autovideosink sync=false
}}}}}}
}}}}}}


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


To capture JPEG snapshot run one of the pipelines below depending upon the required picture resolution.  
To capture JPEG snapshot run one of the pipelines below depending upon the required picture resolution.
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M |
<br>In the examples below /dev/videoX is either /dev/video0 or /dev/video1


* 480P 640x480:
{{#var:VIDEO_DEV_STR}}
# 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:
* VGA 480p 640x480:
  # gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=720,height=480   ! jpegenc ! filesink location=/tmp/test.jpg
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} num-buffers=1 ! video/x-raw,width=640,height=480 ! jpegenc ! filesink location=/tmp/test_640x480.jpg


* 720P 1280x720:
* NTSC 480p 720x480:
  # gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=1280,height=720  ! jpegenc ! filesink location=/tmp/test.jpg
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} num-buffers=1 ! video/x-raw,width=720,height=480 ! jpegenc ! filesink location=/tmp/test_720x480.jpg


* 1080P 1920x1080:
* HD 720p 1280x720:
  # gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=1920,height=1080 ! jpegenc ! filesink location=/tmp/test.jpg
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} num-buffers=1 ! video/x-raw,width=1280,height=720 ! jpegenc ! filesink location=/tmp/test_1280x720.jpg


* QSXGA 2592x1944:
* Full HD 1080p 1920x1080:
  # gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=2592,height=1944 ! jpegenc ! filesink location=/tmp/test.jpg
  # gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} num-buffers=1 ! video/x-raw,width=1920,height=1080 ! jpegenc ! filesink location=/tmp/test_1920x1080.jpg
| {{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M-PLUS |
{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX8M-NANO ||{{#ifeq: {{#var:HARDWARE_NAME}} | VAR-SOM-MX93 ||
<br>In the examples below /dev/videoX is either /dev/video1 or /dev/video2
* QSXGA 1944p 2592x1944:
# gst-launch-1.0 v4l2src device=/dev/{{#var:VIDEO_DEV}} num-buffers=1 ! video/x-raw,width=2592,height=1944 ! jpegenc ! filesink location=/tmp/test_2592x1944.jpg
}}}}


* 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
|
* 480P 640x480:
# gst-launch-1.0 v4l2src device=/dev/video0 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/video0 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/video0 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/video0 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/video0 num-buffers=1 ! video/x-raw,width=2592,height=1944 ! jpegenc ! filesink location=/tmp/test.jpg
}}}}
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M |
{{#ifeq: {{#var:HARDWARE_NAME}} | DART-MX8M |
== Using both cameras simultaneously ==
== Using both cameras simultaneously ==

Latest revision as of 21:20, 11 April 2024

Warning: This page is designed to be used with a 'release' URL parameter.

This page is using the default release RELEASE_SUMO_V1.0_DART-MX8M.
To view this page for a specific Variscite SoM and software release, please follow these steps:

  1. Visit variwiki.com
  2. Select your SoM
  3. Select the software release
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

  • VGA 480p 640x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=640,height=480 ! autovideosink sync=false
  • NTSC 480p 720x480@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=720,height=480 ! autovideosink sync=false
  • HD 720p 1280x720@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1280,height=720 ! autovideosink sync=false
  • Full HD 1080p 1920x1080@30fps:
# gst-launch-1.0 v4l2src device=/dev/videoX ! video/x-raw,width=1920,height=1080 ! autovideosink sync=false
  • QSXGA 1944p 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

  • VGA 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_640x480.jpg
  • NTSC 480p 720x480:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=720,height=480 ! jpegenc ! filesink location=/tmp/test_720x480.jpg
  • HD 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_1280x720.jpg
  • Full HD 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_1920x1080.jpg
  • QSXGA 1944p 2592x1944:
# gst-launch-1.0 v4l2src device=/dev/videoX num-buffers=1 ! video/x-raw,width=2592,height=1944 ! jpegenc ! filesink location=/tmp/test_2592x1944.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