Capturing 8 Video Inputs on Gateworks Ventana SBCs

Gateworks would like to introduce software support for the AVC8000nano Mini-PCIe card on the Ventana Single Board Computers.

final_screen_camerasFigure 1: Screen capture of 8 analog cameras displayed on a monitor using the Gateworks Ventana SBC

Many applications, such as surveillance, require multiple analog video inputs from cameras for monitoring. These cameras can then be displayed on an HDMI monitor or streamed over the network.

final_camerasonboardFigure 2: Eight analog video cameras mounted in a circular fashion for a panoramic capture

Gateworks has added driver support for the AVC8000nano in it’s Yocto Linux board support package. This driver support will reveal 8 video interfaces in Linux, such as /dev/video0, /dev/video1, etc. These video interfaces can then be accessed using GStreamer.

final_pictureofcardFigure 3: The AVC8000nano installed on a Gateworks Ventana SBC with 8 analog cameras connected 

The OpenCV software library could be used to stitch the different inputs together to create a seamless panorama.

For more information and example GStreamer pipelines on how to use this card, please visit our Software Wiki Page:

AVC8000nano Software Wiki Page

Future blog posts will cover streaming multiple camera inputs as well as adaptive bitrate streaming! Please subscribe to the Gateworks blog to the right!



i.MX6 GStreamer-imx Plugins – Tutorial & Example Pipelines

Gateworks would like to announce the support of the GStreamer-imx plugins starting with Yocto 1.8 on the Ventana family of Single Board Computers.


Gateworks, the leading supplier of Powerful ARM based Single Board Computer solutions using the Freescale i.MX6, has invested countless engineering hours researching and mastering GStreamer for the i.MX series of processors. Gateworks would like to share this GStreamer research with the rest of the i.MX community of developers!

There are two main versions of GStreamer used on the i.MX6 processor:0.10 and 1.0. Version 1.0 is now the latest standard.

The i.MX6 processor has hardware blocks such as the IPU (image processing unit), VPU (video processing unit), and GPU (graphical processing unit). The main advantage of using these hardware blocks is that there is no CPU cost for decoding/encoding a stream because another hardware block in the i.MX6 takes care of it. This leaves the CPU free to deal with other programs etc.

The GStreamer app works with ‘plugins’. A plugin comprises of elements that can do work on a media stream. For example, the imxvpudec is a VPU based decoder plugin.

This post is specifically about the plugins. There are different versions and sets of plugins available.

Gateworks has chosen to use the GStreamer-imx plugins for the following reasons:

  • Open Source Development model: The project is on github and is very active
  • The main developer has been a GStreamer contributer for some time now and is very active in the GStreamer community
  • The source is very well documented and easy to follow
  • Things are done in a very standard GStreamer way

Plugin List

For a thorough description of each plugin, why and how to use it, please visit the Gateworks Software Wiki GStreamer Page

The following is a list of plugins provided by the latest version of gstreamer-imx (0.11.0)

Type Plugin(s) Element(s) Comments
Audio Decoder imxaudio imxuniaudiodec Uses i.MX uniaudio codecs for decoding
Audio Encoder imxaudio imxmp3audioenc Uses i.MX for MP3 audio encoding
Device Sources imxv4l2video imxv4l2videosrc Get camera source via v4l2
Video Decoder imxvpu imxvpudec VPU Based decoder
Video Encoder imxvpu imxvpuenc_mjpeg; imxvpuenc_mpeg4; imxvpuenc_h264; imxvpuenc_h263 VPU Based encoders
Video Render (sink) imxg2d; imxpxp; imxeglvivsink; imxipu imxg2dvideosink; imxpxpvideosink; imxeglvivsink; imxipuvideosink g2d1, ipu1, pxp2, and egl (overlay) video sinks
Video Converter imxg2d; imxpxp; imxipu imxg2dvideotransform; imxpxpvideotransform; imxipuvideotransform g2d, pxp, egl and ipu video filter/converter/scalars3
Video Compositing imxg2d; imxipu imxg2dcompositor, imxipucompositor gpu/ipu accelerated compositing

1. The g2d sink is very flexible in the types of input video it can take, but doesn’t have the ability to convert to as many formats as the IPU can. On the other hand, the IPU is very picky with it’s input (e.g. requiring a 1px offset) and the kernel driver is very undocumented, but as stated before, it can convert between many colorspace formats.
2. Note that the PXP sinks are only applicable to the i.mx6solo and i.mx6dl processors.
3. Please see note 1 above.

Plugin Example Pipeline

For example, to encode a video from a camera on /dev/video2 into h.264 and save it to a file:

#Take camera input /dev/video2, encode it to h264 at a bitrate of 10mbit/s (CBR) and save to a file.
gst-launch-1.0 imxv4l2videosrc device=/dev/video2 ! imxvpuenc_h264 bitrate=10000 ! filesink location=/tmp/file.mp4

Many more pipeline examples are described and listed on the Gateworks Software Wiki GStreamer Pipelines page


Using GStreamer 1.0 with the GStreamer-imx plugins is a powerful way to access and apply the multimedia capabilities of the Freescale i.MX6 processors on the Gateworks SBCs.

For more information, visit the Gateworks Software Wiki GStreamer Pipelines page

If there are other examples you would like to see, please add to the discussion!

H.264 Video Streaming over Network

The Gateworks Ventana Family of Single Board Computers is well suited for multimedia applications. The Freescale i.MX6 processor has hardware encoding and decoding making for very little processor overhead. To take advantage of this hardware decoding it is important to always use the ‘vpuenc’ and ‘vpudec’ gstreamer pipeline elements.

  • vpuenc – VPU (Video Processing Unit) encoder
  • vpudec – VPU (Video Processing Unit) decoder

It is also important to use a high compression video format such as H.264 which uses significantly less network bandwidth while retaining good quality. To use this, we encode by using the following pipeline element:

  • vpuenc codec=avc

When streaming over the network, TCP is a reliable protocol but often too stringent for video applications. UDP is often preferred so that even if packets are lost, the stream will continue without waiting for the lost packet. To use UDP, we use the udpsrc and udpsink pipeline elements.

Here is an example pipeline to stream live video over the network using two Ventana Single Board Computers. Be sure the two single board computers are on the same network and can ping each other. Both should also be running OpenEmbedded Yocto operating system. An analog video camera is connected to the video input on a Ventana board. Another Ventana board is connected to a HDMI monitor.

Start the server board pipeline first: (board with HDMI monitor connected)

root@ventana:~# gst-launch udpsrc port=9001 ! h264parse ! queue max-size-time=0 max-size-buffers=0 ! vpudec low-latency=true frame-plus=1 framedrop=false ! mfw_v4lsink sync=false async=false

Then start the client pipeline (board with analog video camera connected)

root@ventana:~# gst-launch tvsrc device=/dev/video0 ! vpuenc codec=avc ! udpsink host= port=9001 sync=false async=false

For more information, please view our GStreamer Software Wiki here:

M2M: Low Power Remote Sensing Whitepaper


Collect data, video, and audio anywhere with a powerful, low-power miniature Single Board Computer (SBC) made by Gateworks. This white paper discusses the use of a miniature, powerful, low-power single board computer (SBC) with multiple networking interfaces to collect data from a variety of sensors (such as temperature and voltage) and video images from a camera. Specific topics discussed include power management, network connectivity, and sensor interfacing. An example application is provided using batteries for power and a camera to take periodic snapshots which are uploaded using the FTP protocol to a website for monitoring.  Gateworks has published a variety of whitepapers, all of which can be seen at the below link: