[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Fix video playback slowdown when spice client no audio enabl
From: |
Volker Rümelin |
Subject: |
Re: [PATCH] Fix video playback slowdown when spice client no audio enabled |
Date: |
Sun, 13 Sep 2020 14:27:32 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.12.0 |
Am 10.09.20 um 13:17 schrieb zhou qi:
> From e8c2e283f0954de255a32ea70d577d5e61992399 Mon Sep 17 00:00:00 2001
> From: Qi Zhou <atmgnd@outlook.com>
> Date: Thu, 10 Sep 2020 19:09:29 +0800
> Subject: [PATCH] Fix video playback slowdown when spice client no audio
> enabled
>
> You will get video playback slowdown on the following cases
>
> 1. use official spice client with audio channel disabled, use
> --spice-disable-audio
> option
> 2. thirtpart client doesn't implement audio channel
>
> ref:
> https://github.com/qemu/qemu/commit/fb35c2cec58985f0b8d2733f1b91927542eeb3fd
> Signed-off-by: Qi Zhou <atmgnd@outlook.com>
> ---
> audio/audio.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/audio/audio.c b/audio/audio.c
> index ce8c6dec5f..50febe190f 100644
> --- a/audio/audio.c
> +++ b/audio/audio.c
> @@ -1091,7 +1091,11 @@ static size_t audio_pcm_hw_run_out(HWVoiceOut *hw,
> size_t live)
> while (live) {
> size_t size, decr, proc;
> void *buf = hw->pcm_ops->get_buffer_out(hw, &size);
> - if (!buf || size == 0) {
> +
> + if (!buf) {
> + hw->mix_buf->pos = (hw->mix_buf->pos + live) % hw->mix_buf->size;
> + return clipped + live;
> + } else if ( size == 0) {
> break;
> }
>
Hello Qi,
your patch breaks audio playback with the dsoundaudio backend.
I suggest you make the following changes:
- Test for size == 0 first and leave the loop in that case.
- For buf == NULL drop size bytes. Don't leave the loop with break or return.
- Verify all audio backends adhere to the new rules and fix them if necessary.
It's quite possible no patches are needed.
- Rate limit the audio stream in function line_out_get_buffer() in
audio/spiceaudio.c for the noaudio case too. Have a look at audio/spiceaudio.c
at version v4.1.0. The code there was correct.
Please don't forget to run scripts/checkpatch.pl on your next patches and don't
forget to CC the maintainer.
With best regards,
Volker