'Twas brillig, and Himanshu Chug at 16/06/11 10:39 did gyre and gimble: > Thanks Tanu for the clarifications. > > But the doubt is still , who is actually sending the pause(cork) event > to pulsesink or gst, either or both of these: > 1. module-x11-cork-request with X11 keyboard events > 2. src/pulsecore/protocol-native.has sink_input_send_event_cb(), The latter. Both former is listening for the cork requests on streams. e.g. in module-x11-cork-request (which I very much think you should ignore completely and disable in any install as it just gets in the way and results in very strange behaviour due to non-stateful tracking of the current state... e.g. by default if a Skype call comes in when you have e.g. Amarok paused, then Amarok will unpause for you when the call starts and pause again then it ends... the exact opposite of what you want!), there is this hook: u->hook_slot = pa_hook_connect( &m->core->hooks[PA_CORE_HOOK_SINK_INPUT_SEND_EVENT], PA_HOOK_NORMAL, (pa_hook_cb_t) sink_input_send_event_hook_cb, u); So the function sink_input_send_event_hook_cb(), is what listens for corks and then takes appropriate action (sending synthesised keystrokes). Now the "event" sending stuff is quite generic, with cork and uncork just examples of the kind of events we currently support. Other events may include "supported formats changed" (e.g. if you move an mp3 passthrough stream to a sink that does not support mp3 passthrough - the client has to be informed so they can take appropriate action to do the decode themselves and start delivering PCM data instead). So this is the call but it needs to be triggered by something e.g. in module-cork-music-on-phone: pa_sink_input_send_event(j, PA_STREAM_EVENT_REQUEST_CORK, NULL); Here it's ultimately using the protocol native sink_input_send_event_cb() function to send the request to the client, but the trigger starts with the above call. > and where these event is handled in pulsesink (and gst)? as > gst_pulsering_stream_event_cb( ) is disabled with flag > HAVE_PULSE_0_9_15, So I guess > this event is handled somewhere else,but not sure where? We covered this in my last reply. HAVE_PULSE_0_9_15 is defined :) > I am getting one bug, where pulse-audio daemon is terminated, the > usecase is: > > 1. "phone" stream is ongoing > 2. "music" stream arrives, > > so expected behavior is music should get corked while phone is active, > eventually its getting corked sometimes and working fine but not always! Ahh, interesting... yeah, this is perhaps due to the START_CORKED flag... streams, when connecting can say "Please start me corked" in this case, the client will specifically uncork the music stream at the beginning of playback... Hmm, not quite sure how to deal with this..... > and sometimes PA daemon gets terminated saying Failed to handle SIGBUS, > here are few gst logs when starting "music" stream from gst-launch: > > ERROR: from element > /GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstBin:bin0/GstPulseSink:pulsesink0: > pa_stream_write() failed: Connection terminated > Additional debug info: > pulsesink.c(1587): gst_pulseringbuffer_commit (): > /GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstBin:bin0/GstPulseSink:pulsesink0 > Execution ended after 75439452 ns. > Setting pipeline to PAUSED ... > Setting pipeline to READY ... > /GstPlayBin2:playbin20/GstPlaySink:playsink0/GstBin:abin/GstBin:bin0/GstPulseSink:pulsesink0.GstPad:sink: > caps = NULL > Assertion 'pa_atomic_load(&(b)->_ref) > 0' failed at > pulsecore/memblock.c:590, function pa_memblock_unref(). Aborting. > Aborted Ouch. Not sure how best to debug that one. > I doubt this issue is related to my earlier question, as you mentioned > "module-x11-cork-request is a workaround for clients that don't handle > stream events (a workaround that isn't working very well, I've heard) "? Yeah, I've disabled x11-cork-request in my packages for a long time and generally recommend others to do the same. In fact I thought I had disabled it in git master's start-pulseaudio-x11, but it seems I didn't. I remember asking about this to gauge a consensus... but can't find anything on the list... I'll ask again. Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mageia Contributor [http://www.mageia.org/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/]