[pulseaudio-discuss] [RAOP] [PATCH] Fix audio synchronisation

Tanu Kaskinen tanuk at iki.fi
Wed Sep 6 11:59:00 UTC 2017


On Sat, 2017-07-22 at 14:53 +0200, Colin Leroy wrote:
> diff --git a/src/modules/raop/raop-sink.c b/src/modules/raop/raop-sink.c
> index e5d219e..108f855 100644
> --- a/src/modules/raop/raop-sink.c
> +++ b/src/modules/raop/raop-sink.c
> @@ -118,6 +118,13 @@ static int64_t sink_get_latency(const struct userdata *u) {
>      now = pa_smoother_get(u->smoother, now);
>  
>      latency = pa_bytes_to_usec(u->write_count, &u->sink->sample_spec) - (int64_t) now;
> +    if (latency < 0) {
> +       latency = 0;
> +    }
> +
> +    latency += 2000000; /* RAOP default latency */
> +    latency += pa_raop_client_get_rtp_diff(u->raop) * 1000; /* plus last packet length in usec */

pa_raop_client_get_rtp_diff() returns the size of the last audio chunk
in bytes divided by four, but you treat that as a time value. That's a
clear bug.

Adding the size of the last packet doesn't make sense to me anyway,
though. The size of the last packet is already taken into account in u-
>write_count. Now you're counting it twice.

If the 2 second constant results in too low latency, I think the
constant should be made bigger.

-- 
Tanu

https://www.patreon.com/tanuk


More information about the pulseaudio-discuss mailing list