IMX CSI: Difference between revisions
From Variscite Wiki
No edit summary |
No edit summary |
||
Line 5: | Line 5: | ||
--> {{PageHeader|VAR-SOM-MX7 - Camera}} {{DocImage|category1=VAR-SOM-MX7|category2=Yocto}} __toc__ | --> {{PageHeader|VAR-SOM-MX7 - Camera}} {{DocImage|category1=VAR-SOM-MX7|category2=Yocto}} __toc__ | ||
<!-- Set local variables | <!-- Set local variables | ||
-->{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | -->{{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:VIDEOSRC|imxv4l2src}}<!-- | -->{{#vardefine:VIDEOSRC|imxv4l2src}}<!-- | ||
-->{{#vardefine:VIDEOSINK|imxv4l2sink}}<!-- | -->{{#vardefine:VIDEOSINK|imxv4l2sink}}<!-- | ||
Line 51: | Line 51: | ||
The below pipelines are suitable for the fslc based Yocto releases for the VAR-SOM-MX7 (Yocto Morty and newer). | The below pipelines are suitable for the fslc based Yocto releases for the VAR-SOM-MX7 (Yocto Morty and newer). | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=640,height=480}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=640,height=480}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 59: | Line 59: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=720,height=480}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=720,height=480}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 67: | Line 67: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=1280,height=720}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=1280,height=720}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 75: | Line 75: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=1920,height=1080}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=1920,height=1080}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 83: | Line 83: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 {{#var:CAPS}} ! {{#var:VIDEOSINK}} | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=2592,height=1944}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=2592,height=1944}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 94: | Line 94: | ||
To capture and encode a JPEG snapshot from the camera, run one of the below pipelines depending on the wanted resolution: | To capture and encode a JPEG snapshot from the camera, run one of the below pipelines depending on the wanted resolution: | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=640,height=480}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=640,height=480}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 102: | Line 102: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=720,height=480}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=720,height=480}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 110: | Line 110: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=1280,height=720}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=1280,height=720}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 118: | Line 118: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=1920,height=1080}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=1920,height=1080}}<!-- | ||
-->|<!-- | -->|<!-- | ||
Line 126: | Line 126: | ||
# gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | # gst-launch-1.0 {{#var:VIDEOSRC}} device=/dev/video1 num-buffers=1 {{#var:CAPS}} ! jpegenc ! filesink location=/tmp/test.jpg | ||
{{#ifeq: {{#var:GSTREAMER_PLUGIN}} |<!-- | {{#ifeq: {{#var:GSTREAMER_PLUGIN}} | imx-gst1.0-plugin |<!-- | ||
-->{{#vardefine:CAPS|! video/x-raw,width=2592,height=1944}}<!-- | -->{{#vardefine:CAPS|! video/x-raw,width=2592,height=1944}}<!-- | ||
-->|<!-- | -->|<!-- |
Revision as of 15:18, 27 December 2022
VAR-SOM-MX7 - Camera
Testing our MIPI cameras
Camera probe
Make sure the camera is connected, and boot the board.
Then, run the below command to verify the camera was detected successfully:
# v4l2-ctl --list-devices
This should output below
i.MX6S_CSI (platform:30710000.csi): /dev/video1 pxp (pxp_v4l2_out): /dev/video0
In the output seen above, "i.MX6S_CSI" is the camera, and "pxp" is the i.MX Pixel Processing Pipeline.
i.MX platform specific gstreamer plugins
Run below command to verify you have the i.MX7 platform specific gstreamer plugins installed on your system:
# gst-inspect-1.0 | grep "imx" imxpxp: imxpxpvideotransform: Freescale PxP video transform imxpxp: imxpxpvideosink: Freescale PxP video sink imxv4l2videosrc: imxv4l2videosrc: V4L2 CSI Video Source imxaudio: imxmp3audioenc: Freescale i.MX MP3 encoder imxaudio: imxuniaudiodec: Freescale i.MX uniaudio decoder
Gstreamer example 1: Testing Camera Loopback / Camera preview on the display
The below pipelines are suitable for the fslc based Yocto releases for the VAR-SOM-MX7 (Yocto Morty and newer).
- For 640x480@30fps:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 imx-capture-mode=0 ! imxpxpvideosink
- For 720x480@30fps:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 imx-capture-mode=1 ! imxpxpvideosink
- For 1280x720@30fps :
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 imx-capture-mode=2 ! imxpxpvideosink
- For 1920x1080@30fps:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 imx-capture-mode=3 ! imxpxpvideosink
- For 2592x1944@15fps:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 imx-capture-mode=4 ! imxpxpvideosink
Gstreamer example 2: Taking a JPEG snapshot from the camera
To capture and encode a JPEG snapshot from the camera, run one of the below pipelines depending on the wanted resolution:
- For 640x480:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 num-buffers=1 imx-capture-mode=0 ! 'video/x-raw,format=UYVY' ! jpegenc ! filesink location=/tmp/test.jpg
- For 720x480:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 num-buffers=1 imx-capture-mode=1 ! 'video/x-raw,format=UYVY' ! jpegenc ! filesink location=/tmp/test.jpg
- For 1280x720:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 num-buffers=1 imx-capture-mode=2 ! 'video/x-raw,format=UYVY' ! jpegenc ! filesink location=/tmp/test.jpg
- For 1920x1080:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 num-buffers=1 imx-capture-mode=3 ! 'video/x-raw,format=UYVY' ! jpegenc ! filesink location=/tmp/test.jpg
- For 2592x1944:
# gst-launch-1.0 imxv4l2videosrc device=/dev/video1 num-buffers=1 imx-capture-mode=4 ! 'video/x-raw,format=UYVY' ! jpegenc ! filesink location=/tmp/test.jpg