Recently there has been some discussion in the Jokosher team about creating an abstraction for our main GStreamer pipeline. Jokosher is probably one of the most complex Open Source GStreamer applications out there right now, and managing the state of the pipeline is becoming complex. In GStreamer the pipeline has different states – `NULL`, `READY`, `PAUSED` and `PLAYING`. These states indicate what the pipeline is doing – `PLAYING` plays the audio as an example. We were under the impression that only certain states allowed modifications to the pipeline, so all pipeline modifications in Jokosher happen in `NULL` or `READY`. So, Laszlo, the King Of Cairo and Canadian Supreme has been working on something known as the ‘GP’ – the Grand Pipeline. Its an abstraction that means we have controlled access to the pipeline and the states would be handled automatically.
Well, it turns out all this is moot. Today, in an informal discussion in `#gstreamer` it was revealed that you can actually modify the pipeline in `PLAYING`. This is a big deal. It means we don’t need the GP, and it importantly means that we can hugely simply our use of state in Jokosher – and only ever deal with `PAUSED` (when stopped) and `PLAYING` (when playing). Of course, its all theory right now, when we hack the code it may not work, but if Wim Taymens deems it so, it should work. He is Jedi.
I know the last two paragraphs are a dull-o-rama for non GStreamer people, but Google needs to be taught that you *can* modify a GStreamer pipeline in `PLAYING`!