summaryrefslogtreecommitdiffstats
path: root/audio
diff options
context:
space:
mode:
authorVolker RĂ¼melin2022-03-01 20:13:00 +0100
committerGerd Hoffmann2022-03-04 11:05:13 +0100
commit0ceb26af0c2f4f07ed5d2c2493552501926df45b (patch)
tree37792ad2efc7651d5ac55a9522a33da426b8ba04 /audio
parentaudio: add function audio_pcm_hw_conv_in() (diff)
downloadqemu-0ceb26af0c2f4f07ed5d2c2493552501926df45b.tar.gz
qemu-0ceb26af0c2f4f07ed5d2c2493552501926df45b.tar.xz
qemu-0ceb26af0c2f4f07ed5d2c2493552501926df45b.zip
audio: inline function audio_pcm_sw_get_rpos_in()
Simplify code by inlining function audio_pcm_sw_get_rpos_in() at the only call site and remove the duplicated audio_bug() test. Signed-off-by: Volker RĂ¼melin <vr_qemu@t-online.de> Message-Id: <20220301191311.26695-4-vr_qemu@t-online.de> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'audio')
-rw-r--r--audio/audio.c23
1 files changed, 5 insertions, 18 deletions
diff --git a/audio/audio.c b/audio/audio.c
index f28e91853f..35437986d9 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -569,37 +569,24 @@ static size_t audio_pcm_hw_conv_in(HWVoiceIn *hw, void *pcm_buf, size_t samples)
/*
* Soft voice (capture)
*/
-static size_t audio_pcm_sw_get_rpos_in(SWVoiceIn *sw)
-{
- HWVoiceIn *hw = sw->hw;
- ssize_t live = hw->total_samples_captured - sw->total_hw_samples_acquired;
-
- if (audio_bug(__func__, live < 0 || live > hw->conv_buf->size)) {
- dolog("live=%zu hw->conv_buf->size=%zu\n", live, hw->conv_buf->size);
- return 0;
- }
-
- return audio_ring_posb(hw->conv_buf->pos, live, hw->conv_buf->size);
-}
-
static size_t audio_pcm_sw_read(SWVoiceIn *sw, void *buf, size_t size)
{
HWVoiceIn *hw = sw->hw;
size_t samples, live, ret = 0, swlim, isamp, osamp, rpos, total = 0;
struct st_sample *src, *dst = sw->buf;
- rpos = audio_pcm_sw_get_rpos_in(sw) % hw->conv_buf->size;
-
live = hw->total_samples_captured - sw->total_hw_samples_acquired;
+ if (!live) {
+ return 0;
+ }
if (audio_bug(__func__, live > hw->conv_buf->size)) {
dolog("live_in=%zu hw->conv_buf->size=%zu\n", live, hw->conv_buf->size);
return 0;
}
+ rpos = audio_ring_posb(hw->conv_buf->pos, live, hw->conv_buf->size);
+
samples = size / sw->info.bytes_per_frame;
- if (!live) {
- return 0;
- }
swlim = (live * sw->ratio) >> 32;
swlim = MIN (swlim, samples);