mirror of
https://github.com/qemu/qemu.git
synced 2024-11-25 20:03:37 +08:00
hda-codec: fix playback rate control
Since commit 1930616b98
"audio: make mixeng optional" the
function hda_audio_output_cb can no longer assume the function
parameter avail contains the free buffer size. With the playback
mixing-engine turned off this leads to a broken playback rate
control and playback buffer drops in regular intervals.
This patch moves down the rate calculation, so the correct
buffer fill level is used for the calculation.
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-id: 20200104091122.13971-1-vr_qemu@t-online.de
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
parent
f0dcfddece
commit
df016a1998
@ -338,8 +338,6 @@ static void hda_audio_output_cb(void *opaque, int avail)
|
||||
return;
|
||||
}
|
||||
|
||||
hda_timer_sync_adjust(st, (wpos - rpos) - to_transfer - (B_SIZE >> 1));
|
||||
|
||||
while (to_transfer) {
|
||||
uint32_t start = (uint32_t) (rpos & B_MASK);
|
||||
uint32_t chunk = (uint32_t) MIN(B_SIZE - start, to_transfer);
|
||||
@ -351,6 +349,8 @@ static void hda_audio_output_cb(void *opaque, int avail)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
hda_timer_sync_adjust(st, (wpos - rpos) - (B_SIZE >> 1));
|
||||
}
|
||||
|
||||
static void hda_audio_compat_input_cb(void *opaque, int avail)
|
||||
|
Loading…
Reference in New Issue
Block a user