How to add fault tolerance for multiple pulsesinks

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

How to add fault tolerance for multiple pulsesinks

Tal Liron

I'm writing a server that broadcasts to multiple PulseAudio sinks over the network.


It works great when it works. :) Except that it does not tolerate network failure nicely: it's enough for one of the sinks to go down, and the stream stops for *all* sinks. In fact, the pipeline won't even start playing if one of the sinks cannot connect.


The pipeline looks like this:


playbin2 ! tee ! valve ! queue ! pulsesink


Where the "! valve ! queue ! pulsesink" branch is duplicated for each sink, and in each branch is contained in bin. (I need the valve in order to allow for safe removal these branches while playing.)


The easiest way to test this is to create a pipeline with two such branches, where one branch points to a network host that doesn't exist. The pipeline won't play.


Any ideas on how to proceed? I don't even know which element is the stubborn one here. I just want the pipeline to ignore the "bad" sink and work around it!


-Tal



_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to add fault tolerance for multiple pulsesinks

Nathanael D. Noblet
On 09/02/2011 03:02 AM, Tal Liron wrote:

> I'm writing a server that broadcasts to multiple PulseAudio sinks over
> the network.
>
>
> It works great when it works. :) Except that it does not tolerate
> network failure nicely: it's enough for one of the sinks to go down, and
> the stream stops for *all* sinks. In fact, the pipeline won't even start
> playing if one of the sinks cannot connect.
>
>
> The pipeline looks like this:
>
>
> playbin2 ! tee ! valve ! queue ! pulsesink
>
>
> Where the "! valve ! queue ! pulsesink" branch is duplicated for each
> sink, and in each branch is contained in bin. (I need the valve in order
> to allow for safe removal these branches while playing.)
>
>
> The easiest way to test this is to create a pipeline with two such
> branches, where one branch points to a network host that doesn't exist.
> The pipeline won't play.
>
>
> Any ideas on how to proceed? I don't even know which element is the
> stubborn one here. I just want the pipeline to ignore the "bad" sink and
> work around it!

No idea if this is plausible, however perhaps your networked sink has a
signal it emits in the case of a host that doesn't exist or what not.
when you catch it disconnect that branch...?
_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: How to add fault tolerance for multiple pulsesinks

Tal Liron

No idea if this is plausible, however perhaps your networked sink has a signal it emits in the case of a host that doesn't exist or what not. when you catch it disconnect that branch...?

Thanks, nice thought, but the stream will likely be disrupted first.

And we still have the basic problem that the stream won't even start!

_______________________________________________
gstreamer-devel mailing list
[hidden email]
http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel