After a historical review of Barco’s evolution from radios to television to industrial video, Marc explained how the company shifted from software that has to adapt to the hardware to software that is in the pilot seat.
Tag Archives: GStreamer conf 2013
GStreamer and the Move From a Hardware Centric Product Design Towards a Software Centric Product Design – Marc Leeman (Barco)
Timing and synchronization in GStreamer can be confusing. This talks explains the basic concepts used in GStreamer, and why it’s done that way, based on examples.
This is a case study of a project that takes a FullHD 30fps camera stream, scales and encodes it for UDP streaming but also takes occasional snapshots in JPEG, and occasional recording to file and playing as USB camera. It could also play the recorded files and network streams. This should run on an i.MX53. H.264 and JPEG en/decoding can be done in VPU, scaling and color conversion can be done on IPU. To put all of this together, you end up with GStreamer.
GStreamer can now be used on Android and iOS.
Integration of hardware accelerators in GStreamer has always been a difficult topic. Everything should be possible in 1.x, but it’s not done. There is also no high-level overview documentation – this presentation fixes that. In GStreamer 1.x it is possible to allocate special memory (shared with accelerator) with GstMemory and GstAllocator – no more subclassing of GstBuffer. See also http://coaxion.net/blog
Latest GStreamer Streaming Server features: Video on Demand, Smooth Streaming, and DRM – David Schleef (Rdio Inc.)
Gstreamer Streaming Server (GSS) is currently a side project, but will probably merged into the project at some point (as with David’s previous side projects). It actually only uses GStreamer itself for live streams, and the code also uses GST_DEBUG. It’s written in C on libsoup, json-glib, GObject, bootstrap (for the website).
Test setup: set-top box, PC, USB IR remote control connected to PC that controls the STB. PC captures the STB video output (through a hardware box that captures HD video and encodes it in H.264 mpegts and sends it with rtmp) and looks for specific images. Python test scripts controls the test steps, send IR commands, and asserts that the expected video output is present. Test progress (including source of the script and video output) is shown on a web page on the PC.
GStreamer is a multimedia streaming framework with the goal of being very extensible and supporting all sorts of use cases. Last year 1.0 was released with a major API overhaul (but without throwing everything out). This process had taken many years, and the transition went well. Migrating a GStreamer application from 0.10 to 1.x will run into issues, but they can be solved.