[pulseaudio-discuss] why command_cork_playback_stream() will be invoked many times?
lennart at poettering.net
Wed Feb 11 19:12:20 PST 2009
On Fri, 06.02.09 04:35, Lennart Poettering (lennart at poettering.net) wrote:
> On Wed, 28.01.09 13:44, Bastian, Waldo (waldo.bastian at intel.com) wrote:
> > > 2) Add a GStreamer interface for events like this.
> > >
> > > 3) If a client doesn't handle these request the streams in question
> > > should simply be muted/unmuted.
> > The problem that I see with this approach is that executing the
> > policy will have a dependency on the application responding quickly
> > enough and behaving properly. What about starting with step 3) ->
> > Mute the audio stream and then do step 1) and 2) after that to let
> > the application know that it might be a good idea to pause?
> > I think such approach would also combine better with volume ramping:
> > policy engine could fade out the stream before muting it and then
> > advice application to pause. Thoughts?
> Yes, I actually thought about this too. I guess PA generally should
> not depend on the client's stability to work properly. Hence yes, I
> agree that this kind of "synchronous" communication as I originally
> suggested above is a bad idea. The server should never have to 'wait'
> for a client to make decisions.
> Hence I would simply add a simple, asynchronous notification
> system. Something like this:
> typedef void (*pa_stream_event_cb_t)(pa_stream *p, const char *event, pa_proplist *proplist, void *userdata);
> void pa_stream_set_event_callback(pa_stream *p, pa_stream_event_cb_t cb, void *userdata);
I have now implemented this. It's available in git master. I also
implemented a little module that will pause/mute all video/music
streams as long a s a phone stream is existant. Works quite well. You
can test it with this:
PULSE_PROP="media.role=music" pacat some-signal.raw
And then on another terminal:
PULSE_PROP="media.role=phone" pacat some-other-signal.raw
And as long as the latter is running the former will be muted. Also,
you will see the pause/resume request messages.
Lennart Poettering Red Hat, Inc.
lennart [at] poettering [dot] net ICQ# 11060553
http://0pointer.net/lennart/ GnuPG 0x1A015CC4
More information about the pulseaudio-discuss