From: Sai Pavan Boddu Date: Fri, 15 Nov 2019 15:56:48 +0000 (+0530) Subject: display: xlnx_dp: Provide sufficient bytes for silent audio channel X-Git-Tag: qemu-xen-4.14.0~264^2~1 X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=0f6ed883e74f3fd9eb3eedfe0e61be66e4834fc9;p=qemu-xen.git display: xlnx_dp: Provide sufficient bytes for silent audio channel Fill the audio channel with required number of bytes to cover the elapsed time. This prevents rate control reset, and avoids debug prints like below log: Resetting rate control (65692 samples) ... Resetting rate control (65721 samples) ... Signed-off-by: Sai Pavan Boddu Reviewed-by: Alistair Francis Message-id: 1573833408-2388-1-git-send-email-sai.pavan.boddu@xilinx.com Signed-off-by: Gerd Hoffmann --- diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index fde3b21ea5..7058443797 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -394,13 +394,18 @@ static void xlnx_dp_audio_callback(void *opaque, int avail) written = AUD_write(s->amixer_output_stream, &s->out_buffer[s->data_ptr], s->byte_left); } else { + int len_to_copy; /* * There is nothing to play.. We don't have any data! Fill the * buffer with zero's and send it. */ written = 0; - memset(s->out_buffer, 0, 1024); - AUD_write(s->amixer_output_stream, s->out_buffer, 1024); + while (avail) { + len_to_copy = MIN(AUD_CHBUF_MAX_DEPTH, avail); + memset(s->out_buffer, 0, len_to_copy); + avail -= AUD_write(s->amixer_output_stream, s->out_buffer, + len_to_copy); + } } } else { written = AUD_write(s->amixer_output_stream,