[pulseaudio-discuss] [PATCH] tunnel-sink-new: Fix stale audio on resume
Arun Raghavan
arun at accosted.net
Fri Jan 2 04:43:08 PST 2015
On 2 January 2015 at 18:04, Tanu Kaskinen <tanu.kaskinen at linux.intel.com> wrote:
> I noticed that when resuming the tunnel sink, there was a small amount
> of previously played audio before the new audio started to play.
> Normally that probably wouldn't be noticeable, because there would be
> a few seconds of silence played before suspending the sink due to
> inactivity, so the unwanted old audio would be just silence, but in my
> configuration sinks are suspended immediately when there's nothing
> playing to them, so the glitch becomes audible.
> ---
> src/modules/module-tunnel-sink-new.c | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/src/modules/module-tunnel-sink-new.c b/src/modules/module-tunnel-sink-new.c
> index 7d3bd99..1b3858d 100644
> --- a/src/modules/module-tunnel-sink-new.c
> +++ b/src/modules/module-tunnel-sink-new.c
> @@ -109,6 +109,15 @@ static void cork_stream(struct userdata *u, bool cork) {
> pa_assert(u);
> pa_assert(u->stream);
>
> + if (cork) {
> + /* When the sink becomes suspended (which is the only case where we
> + * cork the stream), we don't want to keep any old data around, because
> + * the old data is most likely unrelated to the audio that will be
> + * played at the time when the sink starts running again. */
> + if ((operation = pa_stream_flush(u->stream, NULL, NULL)))
> + pa_operation_unref(operation);
> + }
> +
> if ((operation = pa_stream_cork(u->stream, cork, NULL, NULL)))
> pa_operation_unref(operation);
> }
Looks good to me.
-- Arun
More information about the pulseaudio-discuss
mailing list