Camera driver example code
Published on September 6, 2010
In my previous post, I promised a sample program for the camera driver, and you can now find it in our git repository.
The sample program is camera_to_fb2
and is compilable both under Android and other Linux environments. It captures frames from the camera and displays them through /dev/fb2, the YUV output frame buffer. Its primary purpose is to validate the driver, so there isn't much in the way of features.
You can invoke it like so:
user@host:~$ camera_to_fb2 -iw640 -ih480 -ow640 -oh480 -4NV12 -x100 -y100
The command-line parameters are:
- -iwN the input (camera) width in pixels
- -ihN the input (camera) height in pixels
- -owN the output (display) width in pixels
- -ohN the output (display) height in pixels
- -4XXXX the camera and display pixel format as a fourcc code
- -xN the X position of the output window
- -yN the Y position of the output window
The only currently supported fourcc code is NV12
, and the supported input width and heights are:
- 480x272
- 640x480
- 2592x1944
As mentioned in the driver post, more resolutions will follow, as will support for JPEG input.
General Linux usage:
root@device:~# modprobe boundary_camera
root@device:~# camera_to_fb2 -iw640 -ih480 -ow640 -oh480 -4NV12 -x100 -y100
Android usage:
user@host:~$ adb shell 'insmod /system/lib/modules/ov5640.ko'
user@host:~$ adb shell 'insmod /system/lib/modules/boundary_camera.ko'
user@host:~$ adb shell 'camera_to_fb2 -iw640 -ih480 -ow640 -oh480 -4NV12 -x100 -y100'
No support is currently present for running this from the Android GUI, since this should be integrated as a proper Android Camera driver instead.
Also note that you can add the insmod lines into device/fsl/imx5x/init.rc
to skip the manual insmod steps, but you'll need to re-create the ramdisk and update the SD card afterwards.