bea29e9f2e
The pulseaudio backend currently converts, clips and copies audio playback samples in the mixing-engine sample buffer multiple times. In qpa_get_buffer_out() the function pa_stream_begin_write() returns a rather large buffer and this allows audio_pcm_hw_run_out() in audio/audio.c to copy all samples in the mixing-engine buffer to the pulse audio buffer. Immediately after copying, qpa_write() notices with a call to pa_stream_writable_size() that pulse audio only needs a smaller part of the copied samples and ignores the rest. This copy and ignore process happens several times for each audio sample. To fix this behaviour, call pa_stream_writable_size() in qpa_get_buffer_out() to limit the number of samples audio_pcm_hw_run_out() will convert. With this change the pulseaudio pcm_ops functions put_buffer_out and write are no longer identical and a separate qpa_put_buffer_out is needed. Signed-off-by: Volker Rümelin <vr_qemu@t-online.de> Message-id: 9315afe5-5958-c0b4-ea1e-14769511a9d5@t-online.de Message-Id: <20210110100239.27588-13-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> |
||
---|---|---|
.. | ||
alsaaudio.c | ||
audio_int.h | ||
audio_legacy.c | ||
audio_template.h | ||
audio_win_int.c | ||
audio_win_int.h | ||
audio.c | ||
audio.h | ||
coreaudio.c | ||
dsound_template.h | ||
dsoundaudio.c | ||
jackaudio.c | ||
meson.build | ||
mixeng_template.h | ||
mixeng.c | ||
mixeng.h | ||
noaudio.c | ||
ossaudio.c | ||
paaudio.c | ||
rate_template.h | ||
sdlaudio.c | ||
spiceaudio.c | ||
trace-events | ||
trace.h | ||
wavaudio.c | ||
wavcapture.c |