IMX CSI

From Variscite Wiki
Revision as of 07:14, 3 March 2018 by Admin (talk | contribs)

Before you start any of below pipeline make sure you have camera connected. IMX family of processor uses gstreamer as multimedia framework.

Please refer to https://gstreamer.freedesktop.org/

Run below command to see if you have got the camera detected

root@imx:~# v4l2-ctl --list-devices

This should output below

root@imx:~# 
i.MX6S_CSI (platform:30710000.csi):
        /dev/video1

pxp (pxp_v4l2_out):
        /dev/video0


As you can see above i.MX6S_CSI (platform:30710000.csi): is camera and pxp (pxp_v4l2_out): pixel procesing engine for overlay on display

Checking whether you have got the imx platform plugins installed on your filesystem: Run below command to check whether you have the IMX platform specific gstreamer plugin installed or not.

root@imx:~# 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
  • imxv4l2videosrc: is the IMX family CSI camera v4l2 community plugin. Currently devkits only supports OV5640 as YUV input.

where sensor process incoming light and converts it to YUV 4:2:2 format data. MIPI data is captured by the MIPI CSI input of the devkit. Bayer processing not supported.

Camera Preview on Display :

  • For 640x480@30fps:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=0 ! imxpxpvideosink
  • NTSC 720x480@30fps:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=1 ! imxpxpvideosink


  • 720P 1280x720@30fps :
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=2 ! imxpxpvideosink
  • For 1080P@30fps:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=3 ! imxpxpvideosink
  • For QSXGA 2592x1944:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=4 ! imxpxpvideosink


To Capture JPEG snapshot:

  • For 640x480:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=0 num-buffers=1 ! jpegenc ! filesink location=/tmp/test.jpg
  • NTSC 720x480:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=1 num-buffers=1 ! jpegenc ! filesink location=/tmp/test.jpg
  • 720P 1280x720:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=2 num-buffers=1 ! jpegenc ! filesink location=/tmp/test.jpg
  • For 1080P:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=3 num-buffers=1 ! jpegenc ! filesink location=/tmp/test.jpg
  • For QSXGA 2592x1944:
root@imx:~# gst-launch-1.0 imxv4l2videosrc device=/dev/video1  imx-capture-mode=4 num-buffers=1 ! jpegenc ! filesink location=/tmp/test.jpg


Please note : jpegenc is opensource software based jpeg encoder. This gets executed on CPU not using JPEG hardware acceleration. Transfer /tmp/test.jpg to your PC and see whether you got correct snapshot or not.

Some of the camera examples you may want to refer to :http://variwiki.com/index.php?title=VAR-SOM-MX6_GSTREAM, however please note, IMX7 has different multimedia capabilities.


For detailed camera training refer to : http://cache.freescale.com/files/training/doc/ftf/2014/FTF-CON-F0119.pdf