[Qemu-devel] [PATCH 09/11] paaudio: fix playback glitches

Kővágó, Zoltán posted 11 patches 6 years, 7 months ago
There is a newer version of this series
[Qemu-devel] [PATCH 09/11] paaudio: fix playback glitches
Posted by Kővágó, Zoltán 6 years, 7 months ago
Pulseaudio normally assumes that when the server wants it, the client
can generate the audio samples and send it right away.  Unfortunately
this is not the case with QEMU -- it's up to the emulated system when
does it generate the samples.  Buffering the samples and sending them
from a background thread is just a workaround, that doesn't work too
well.  Instead enable pa's compatibility support and let pa worry about
the details.

Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
---
 audio/paaudio.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/audio/paaudio.c b/audio/paaudio.c
index 9d46f11b0a..d320d2e453 100644
--- a/audio/paaudio.c
+++ b/audio/paaudio.c
@@ -512,10 +512,8 @@ static pa_stream *qpa_simple_new (
 
     flags =
         PA_STREAM_INTERPOLATE_TIMING
-#ifdef PA_STREAM_ADJUST_LATENCY
-        | PA_STREAM_ADJUST_LATENCY
-#endif
-        | PA_STREAM_AUTO_TIMING_UPDATE;
+        | PA_STREAM_AUTO_TIMING_UPDATE
+        | PA_STREAM_EARLY_REQUESTS;
 
     if (dev) {
         /* don't move the stream if the user specified a sink/source */
-- 
2.22.0


Re: [Qemu-devel] [PATCH 09/11] paaudio: fix playback glitches
Posted by Marc-André Lureau 6 years, 7 months ago
On Tue, Jul 9, 2019 at 10:49 PM Kővágó, Zoltán <dirty.ice.hu@gmail.com> wrote:
>
> Pulseaudio normally assumes that when the server wants it, the client
> can generate the audio samples and send it right away.  Unfortunately
> this is not the case with QEMU -- it's up to the emulated system when
> does it generate the samples.  Buffering the samples and sending them
> from a background thread is just a workaround, that doesn't work too
> well.  Instead enable pa's compatibility support and let pa worry about
> the details.
>
> Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>

Could you explain how this is related to PA_STREAM_ADJUST_LATENCY ?


> ---
>  audio/paaudio.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/audio/paaudio.c b/audio/paaudio.c
> index 9d46f11b0a..d320d2e453 100644
> --- a/audio/paaudio.c
> +++ b/audio/paaudio.c
> @@ -512,10 +512,8 @@ static pa_stream *qpa_simple_new (
>
>      flags =
>          PA_STREAM_INTERPOLATE_TIMING
> -#ifdef PA_STREAM_ADJUST_LATENCY
> -        | PA_STREAM_ADJUST_LATENCY
> -#endif
> -        | PA_STREAM_AUTO_TIMING_UPDATE;
> +        | PA_STREAM_AUTO_TIMING_UPDATE
> +        | PA_STREAM_EARLY_REQUESTS;
>
>      if (dev) {
>          /* don't move the stream if the user specified a sink/source */
> --
> 2.22.0
>
>


--
Marc-André Lureau

Re: [Qemu-devel] [PATCH 09/11] paaudio: fix playback glitches
Posted by Zoltán Kővágó 6 years, 6 months ago
On 2019-07-10 21:58, Marc-André Lureau wrote:
> On Tue, Jul 9, 2019 at 10:49 PM Kővágó, Zoltán <dirty.ice.hu@gmail.com> wrote:
>>
>> Pulseaudio normally assumes that when the server wants it, the client
>> can generate the audio samples and send it right away.  Unfortunately
>> this is not the case with QEMU -- it's up to the emulated system when
>> does it generate the samples.  Buffering the samples and sending them
>> from a background thread is just a workaround, that doesn't work too
>> well.  Instead enable pa's compatibility support and let pa worry about
>> the details.
>>
>> Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
> 
> Could you explain how this is related to PA_STREAM_ADJUST_LATENCY ?

According to the pulseaudio documentation[1], you can't use
PA_STREAM_ADJUST_LATENCY and PA_STREAM_EARLY_REQUESTS at the same time.

[1]:
https://www.freedesktop.org/software/pulseaudio/doxygen/def_8h.html#a6966d809483170bc6d2e6c16188850fca98e436f686fc385697e565eb1ecb2609

>> ---
>>  audio/paaudio.c | 6 ++----
>>  1 file changed, 2 insertions(+), 4 deletions(-)
>>
>> diff --git a/audio/paaudio.c b/audio/paaudio.c
>> index 9d46f11b0a..d320d2e453 100644
>> --- a/audio/paaudio.c
>> +++ b/audio/paaudio.c
>> @@ -512,10 +512,8 @@ static pa_stream *qpa_simple_new (
>>
>>      flags =
>>          PA_STREAM_INTERPOLATE_TIMING
>> -#ifdef PA_STREAM_ADJUST_LATENCY
>> -        | PA_STREAM_ADJUST_LATENCY
>> -#endif
>> -        | PA_STREAM_AUTO_TIMING_UPDATE;
>> +        | PA_STREAM_AUTO_TIMING_UPDATE
>> +        | PA_STREAM_EARLY_REQUESTS;
>>
>>      if (dev) {
>>          /* don't move the stream if the user specified a sink/source */
>> --
>> 2.22.0
>>
>>
> 
> 
> --
> Marc-André Lureau
>