By Víctor Jáquez.
GStreamer 1.0 brings new features for memory handling, particularly the management of buffers. Now it is possible to implement elements that make use of memory areas that are not accessed directly by CPU, such as the video memory, continuous memory areas and so on.
The purpose of this talk is to show how we can use these new interfaces for developing GStreamer elements, that are tightly integrated with the hardware. In particular, we will show how we implemented a simple video sink for the pandaboard, using the Direct Rendering Management (DRM) interface.
This element, called kmssink, uses many of the new concepts for memory handling, added in GStreamer v1.0, such as allocators, buffer pools, and so on. We will review these concepts and how they were used in the element.
22. Distributed Codec Engine (DCE)
It provides access to the Codec Engine interface on the
co-processor (ducati/M3) from the host.
It invokes the hardware accelerated codecs on IVA-HD via
rpmsg/remoteproc
37. GstMeta
Describes the low-level properties of the buer content.
It contain variables that can change between each buer
timestamp, duration, oset, interlacing
video alignment, cropping, panning information
extra container information
global buer properties
38. GstBuerPool
Pre-allocate and recycle buers with the same properties.
After the buer pool is created, it needs to be congured.
Buer pools increase performance
reduces allocation overhead
add more possibilities to implement zero-copy memory
40. GstVideoContext
It shares video context between neighbour elements and
the application.
gst-plugins-bad / GST_USE_UNSTABLE_API
Sharing the DRM le descriptor between the decoder and
the sink.
42. GstVideoDecoder
Base class fore converters of encoded data into raw video
frames.
Conguration.
_start ()
_set_format ()
Data processing.
get or _parse () frames
_handle_frame ()
call gst_video_decoder_finish_frame () or
gst_video_decoder_drop_frame ()
Shutdown phase.
_stop ()
43. @TODO
kmssink should support more DRM backends
dcevdec should support more decoders
Implement a DRM buer metadata
Push kmssink and dcevdec (??) to bugzilla
Watch a movie with my video player
44. Lessons I learned
I suck at communication
Communicate your development openly
GStreamer v1.0 looks great!
omapdce/rpmsg + remoteproc too!
45. Thanks to
Rob Clark
Ohad Ben-Cohen
Nicolas Dechesne
Alessandro Decina
Sebastian Dröge
GStreamer community