[pulseaudio-discuss] Underruns when changing sinks on a 'live stream'
Alejandro Gonzalez
x0092071 at ti.com
Fri Jun 3 16:35:10 PDT 2011
> > I'm seeing to different behaviors here:
> >
> > 1) using only 'paplay my_file.wav': I couldn't see progressive
> > audio-degradation or a progressive increase of Underruns, but after
> > several profile switches I hit a state where the audio is only noise.
> > Subsequent playbacks are all noisy. Only after setting a again a new
> > profile audio was rendered properly,
> >
> > 2) using gstreamer: After 4-5 profile switching audio start to degrade
> > with glitches and Underruns messages increase with each profile switch.
> > But, if I let the playback finish and I start a new one, audio is fine
> > again, without switching profiles again.
> >
> > So, if you can help me with a couple of functions names I can start
> > adding some debug traces. I assume that when the stream is rerouted to a
> > new sink, part of the old buffer has to be copied to the new sink
> > buffer, right? Maybe there is a bug in this procedure, but I'm not sure
> > where to start looking at.
>
> Nice, thanks for trying to pin this down. I'd suggest you start with
> figuring out where the rewind is happening in
> pulsecore/protocol-native.c (there are a bunch of callers to
> handle_seek() which is what spits the message you see in debug logs).
>
Hi Arun,
So far this is what I can see just before the Underruns start (obviously
after is starts rendering on the new sink):
D: protocol-native.c: SINK_INPUT_MESSAGE_UPDATE_LATENCY
D: protocol-native.c: command_get_playback_latency
D: protocol-native.c: Underrun on ''Aerodynamic' by 'Daft Punk'', 0
bytes in queue.
D: protocol-native.c: SINK_INPUT_MESSAGE_UPDATE_LATENCY
D: protocol-native.c: pstream_memblock_callback
D: protocol-native.c: command_get_playback_latency
D: protocol-native.c: sink_input_process_msg 11 SINK_INPUT_MESSAGE_SEEK
D: protocol-native.c: Requesting rewind due to rewrite.
D: alsa-sink.c: Requested to rewind 17304 bytes.
D: alsa-sink.c: Limited to 7616 bytes.
The sequence of call is:
pstream_memblock_callback-> command_get_playback_latency ->
sink_input_process_msg -> handle_seek
The event sent to 'process_msg' is SINK_INPUT_MESSAGE_SEEK but
previously there are always a couple of
'SINK_INPUT_MESSAGE_UPDATE_LATENCY' messages.
I'll focus on find out who triggers the 'UPDATE_LATENCY' message.
Any comments are welcome,
Regards,
Alejandro
More information about the pulseaudio-discuss
mailing list