Message ID | 090ab2fb6a10d601e68012b4152c2dba7a902ca4.1562695780.git.DirtY.iCE.hu@gmail.com |
---|---|
State | New |
Headers | show |
Series | Multiple simultaneous audio backends | expand |
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
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 >
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 */
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(-)