Old Browser

You are using an outdated browser. Please update your browser.


Video playback using the Wandboard VPU, part 3

This article conlcudes the article series on gstreamer by sketching on how gstreamer acceleration is implemented on Freescale iMX6.

Gstreamer hardware acceleration on iMX6

The typical gstreamer usage on iMX6 is to use the VPU for video decoding. This is usually done using the vpudec element, and then using a Video For Linux sink (mfw_v4lsink) to display the video in a X11 window. The v4lsink has a problem though: it only supports one movie at a time. The recommended solution from Freescale is to use mfw_isink when playing back several videos — but that does not integrate well with X11 (in fact, it changes the framebuffer to YUV mode).

Further the X11 integration is not made easier from xvimagesink being a fake in the Freescale Xorg driver (it announces XV support, but when asked to use it there are no adapters!)

Gstreamer and OpenGL

For X11 integration, glimagesink seems to be the most general.

It uses the OpenGL framework to display and resize the video. It cooperates with X11. It rescales without problems or use of additional elements (like videoscale).

While the default glimagesink does not allow placement of the movie window, or playback to a preexisting XWindow. However gstreamer allows a facility called GstXOverlay for this. It is a abstract base class (or as close you get in C) for X11 output. Using this, the handy hacker should be able to get a OpenGL and VPU accelerated X video player up and running by implementing their own imagesink (based on the code in glimagesink, and adding arguments for position and window id)

Demo image

For those who are curious about multiple simultaneous videos, there is a simple demo image here that plays for videos continously.

Talk back and discuss in the Wandboard community forums