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>
This commit is contained in:
parent
251f15496e
commit
0ceb26af0c
|
@ -569,37 +569,24 @@ static size_t audio_pcm_hw_conv_in(HWVoiceIn *hw, void *pcm_buf, size_t samples)
|
||||||
/*
|
/*
|
||||||
* Soft voice (capture)
|
* 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)
|
static size_t audio_pcm_sw_read(SWVoiceIn *sw, void *buf, size_t size)
|
||||||
{
|
{
|
||||||
HWVoiceIn *hw = sw->hw;
|
HWVoiceIn *hw = sw->hw;
|
||||||
size_t samples, live, ret = 0, swlim, isamp, osamp, rpos, total = 0;
|
size_t samples, live, ret = 0, swlim, isamp, osamp, rpos, total = 0;
|
||||||
struct st_sample *src, *dst = sw->buf;
|
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;
|
live = hw->total_samples_captured - sw->total_hw_samples_acquired;
|
||||||
|
if (!live) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (audio_bug(__func__, live > hw->conv_buf->size)) {
|
if (audio_bug(__func__, live > hw->conv_buf->size)) {
|
||||||
dolog("live_in=%zu hw->conv_buf->size=%zu\n", live, hw->conv_buf->size);
|
dolog("live_in=%zu hw->conv_buf->size=%zu\n", live, hw->conv_buf->size);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rpos = audio_ring_posb(hw->conv_buf->pos, live, hw->conv_buf->size);
|
||||||
|
|
||||||
samples = size / sw->info.bytes_per_frame;
|
samples = size / sw->info.bytes_per_frame;
|
||||||
if (!live) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
swlim = (live * sw->ratio) >> 32;
|
swlim = (live * sw->ratio) >> 32;
|
||||||
swlim = MIN (swlim, samples);
|
swlim = MIN (swlim, samples);
|
||||||
|
|
Loading…
Reference in New Issue