Overview of GstQtOverlay

From RidgeRun Developer Connection
Jump to: navigation, search


  Index Next: GstQtOverlay Overview/Architecture






Many applications require showing information on top of images and videos. Take robots, for example, the operator needs to check the navigation data from the robot's GPS and battery status often. Having the robot status information displayed simultaneously with the robot's video stream makes this task easier. The status information could be sent as metadata with plugins like In-Band Metadata or GstSEIMetadata and have an application in the receiver extract the information and render it to display, or alternatively, the information could be drawn into the video frames on the robot, with plugins like Fast overlay element and GstQtOverlay. This section provides an overview of GstQtOverlay.

Figure 1: Example of GstQtOverlay process


GstQtOverlay is a GStreamer plug-in created by RidgeRun that renders Qt graphics on top of a video stream. This rendering occurs directly onto the GStreamer video frame buffer, rather than in physical graphics memory, with the resultant video having the Qt graphics image merged into the video image. GstQtOverlay brings together the best of the two worlds:

  • Modularity and extensibility of GStreamer
  • Beauty and flexibility of Qt


With the RidgeRun GstQtOverlay element, GUIs will be available not only at the video display but also embedded in file recordings and network streaming, for example.

GstQtOverlay makes heavy use of OpenGL in order to achieve high-performance overlay rendering in embedded systems. The pixel blitting and memory transfers are done by GPU and DMA hardware accelerators, allowing real-time operation at HD resolutions. As a consequence, the CPU remains free for other processing.


Graphics are modeled using Qt's QML, which enables fast, powerful, and dynamic GUI implementation. QML is loaded at runtime so there is no need to recompile the GstQtOverlay plug-in in order to change the GUI. Having QML independent of the GStreamer element speeds up development time, eases quick prototyping, and reduces time-to-market without impacting performance. A single GstQtOverlay element is able to handle many different GUIs.


In the following subsections you will find:


  Index Next: GstQtOverlay Overview/Architecture