Two Loosely Associated Pipelines?

Stirling Westrup swestrup at gmail.com
Thu Jun 13 10:05:37 PDT 2013


First, some background, skip to the last paragraph if you want to just see
my question:

I have a problem with my app, and am soliciting any and all advice on how
to fix it. I have *a* possible solution, but I may be barking up the wrong
tree here.

I have a video-wall application that takes a playlist consisting of
different sources. These can be files, screen capture commands, video
inputs or more. It renders all of these so as to nicely fill a wall full of
video monitors and switches between the sources either on EOS or on a timed
or entered command.

So far, so good. That all works.

However, in order to change from even one file to another, I have to
reprogram a fair number of clipping and scaling elements so as to best
present the new resolution and aspect ratio of the next source. When
changing from one type of input to another (ie file source to camera input)
I have to actually dismantle part of my input pipeline and rebuild it.

I originally tried to do the above by merely pausing the pipeline and then
performing the modifications, but I find that doing that causes
renegotiation to take an inordinate amount of times (around 3-5 seconds)
which is an unacceptable delay. So now, instead, I bring the pipeline to
the ready state. This works *much* faster.

However the consequence is that all of the open monitors get their sessions
closed by the video sinks (xvimagesink in this case) and re-opening a
monitor has a noticeable delay of a few seconds, which is also
unacceptable. Besides the monitors flicker during this process.

SO, I am thinking that I want two separate pipelines. The back-end pipeline
will have N video inputs, one per monitor and will (except during manual
reconfiguration, when delays are acceptable) never leave the playing state.
It will come up at program start, stay in playing, and only exit at program
shutdown.The front-end pipeline will go up and down as needed to reprogram
all of the video processing needed to accommodate different sources. I then
need to somehow loosely couple these pipelines together (maybe with appsrc
and appsink?) so that one can change state while the other stays steady.
Has anyone ever tried this? Is it even supported (I think this means I need
two main loops???) Does any one have any alternative suggestions for ways
to accomplish this decoupling?




-- 
Stirling Westrup
Programmer, Entrepreneur.
https://www.linkedin.com/e/fpf/77228
http://www.linkedin.com/in/swestrup
http://technaut.livejournal.com
http://sourceforge.net/users/stirlingwestrup
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20130613/f265cb07/attachment.html>


More information about the gstreamer-devel mailing list