Overview Introduction (creating multimedia apps) (pipeline/plugin based) Motivation (multitude of duplicate code) (mostly focused on one goal) (reinvent plugin mechanisms) (network transparency?) (catch up with Windows(tm) world) Goals (clean and powerfull) (building graphs) (building plugins) (object oriented) (using GTK+ object model) (extensible) (alow binary only plugins) (alow high performance) (HW acceleration) (efficient memory use) (kernel buffers etc..) Basic concepts elements (what is it) (types) sink, src, filter (have pads) connecting elements bin (can contain elements) pipeline (a complete graph) thread (theaded operation) buffers (pass between elements) (contains data) (can cary metadata) (use refcounting) element states (null) (ready) (paused) (playing) Building apps helloworld (fdsrc->mp3decoder->audiosink) (step by step explanation) More on factories problems with helloworld MIME types GStreamer types Basic types Your second application advanced concepts threads queues cothreads dynamic pipeline construction ghost pads type detection utility functions XML in GStreamer (saving) (loading a pipeline) Plugin development plugin types chain based loop based buffers metadata subbufers adding pads libraries plugin registry types type detection QoS messages clocks GStreamer programs editor gstplay