Testing the OV5645 MIPI CSI2 camera module

Difficulty Levels: Beginner
Date added: September 30, 2019
Affected Products: CAM-OV5645 , FLEX-IMX8M-MINI , PICO Compute Modules , PICO-IMX8M , PICO-IMX8M-MINI

Test OV5645 MIPI-CSI2 camera

Camera preview:

For i.MX8MQ:

~# gst-launch-1.0 v4l2src io-mode=3 device=/dev/video0 ! video/x-raw,width=1280,height=720 ! waylandsink

or

~# gst-launch-1.0 v4l2src io-mode=3 device=/dev/video0 ! video/x-raw,width=1280,height=720 ! kmssink

For i.MX8MM:

~# gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080 ! glimagesink

or

~# gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080 ! waylandsink window-width=1280 window-height=720

 

Camera Preview on PICO-IMX8M-MINI, FLEX-IMX8M-MINI, or AXON-IMX8M-MINI with and 5″ MIPI DSI display:

If you are using our i.MX8M-MINI modules (PICO, FLEX, AXON) with our 5″ MIPI-DSI panel with Yocto 2.5 with Wayland/Weston, here are some commands that are useful for showing a camera preview on the display at different resolutions.

Changing Weston screen orientation to landscape mode

On the 5″ MIPI-DSI panel, the default orientation is portrait mode (720×1280). This is fine for some applications, but makes viewing some normal aspect video a little tricky.  For the preview commands below, you may need to change the screen orientation in Weston to landscape mode (1280×720.

You can do this by editing the file /etc/xdg/weston/weston.ini

Make sure that these lines are located in it:

[output]
name=DSI-1
transform=90

Then reboot the unit.

Preview Pipelines

640×480:

gst-launch-1.0 v4l2src  device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! waylandsink window-width=1280 window-height=720

1280×720:

gst-launch-1.0 v4l2src  device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=30/1 ! waylandsink window-width=1280 window-height=720

1920×1080:

gst-launch-1.0 v4l2src  device=/dev/video0 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! waylandsink window-width=1280 window-height=720

2592×1944:

gst-launch-1.0 v4l2src  device=/dev/video0 ! video/x-raw,width=2592,height=1944,framerate=15/1 ! waylandsink window-width=1280 window-height=720

For the max resolution, the maximum frame rate you can use is 15 frames per second (framerate = 15/1). On the other resolutions, due to a limitation in the OV5645 camera driver, only 30 fps is supported.

Note:

The parameter width=1280 window-height=720 for waylandsink corresponds to the display resolution. It has to use Yocto with xwayland backend.  On a wayland-only backend it can’t display properly. It only shows green on display. This is a known issue in Yocto 2.5.

Increasing the Preview Framerate

Through some experimentation we’ve noticed that the frame rate of the pipeline can run a little slower than the ideal framerate. This is likely due to some overhead with moving data around in memory. What we’ve found is that by adding the NXP plugin imxvideoconvert_g2d into the pipeline, we can achieve frame rates that are close to the ideal framerate, at the expense of a little CPU overhead.

640×480:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! imxvideoconvert_g2d ! waylandsink window-width=1280 window-height=720

1280×720:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=30/1 ! imxvideoconvert_g2d ! waylandsink window-width=1280 window-height=720

1920×1080:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! imxvideoconvert_g2d ! waylandsink window-width=1280 window-height=720

2592×1944:

gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=2592,height=1944,framerate=15/1 ! imxvideoconvert_g2d ! waylandsink window-width=1280 window-height=720

Capturing and compressing H.264 video with i.MX8M Mini-based modules

640×480:

gst-launch-1.0 v4l2src -e device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! vpuenc_h264 ! h264parse ! mp4mux ! filesink location=test-640x480.mp4

1280×720:

gst-launch-1.0 v4l2src -e device=/dev/video0 ! video/x-raw,width=1280,height=720,framerate=30/1 ! vpuenc_h264 ! h264parse ! mp4mux ! filesink location=test-1280x720.mp4

1920×1080:

gst-launch-1.0 v4l2src -e device=/dev/video0 ! video/x-raw,width=1920,height=1080,framerate=30/1 ! vpuenc_h264 ! h264parse ! mp4mux ! filesink location=test-1920x1080.mp4

The “-e” argument informs the pipeline that an EOS should be generated when the program is terminated. This gracefully terminates the pipeline and saves the resulting file.

Note: The vpuenc_h264 element  not capable of encoding greater than 1920×1080 resolution video, so this is why we aren’t showing a pipeline for the full 5MP resolution.

 

Stay up to date with all the latest TechNexion news...

Sign-up for our Newsletter