[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