diff options
Diffstat (limited to 'audio/audio.c')
-rw-r--r-- | audio/audio.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/audio/audio.c b/audio/audio.c index 9e9c03a42e..22c36d6660 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -576,10 +576,10 @@ static void audio_pcm_sw_resample_in(SWVoiceIn *sw, } } -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 buf_len) { HWVoiceIn *hw = sw->hw; - size_t samples, live, ret, swlim, total; + size_t live, frames_out_max, swlim, total_in, total_out; live = hw->total_samples_captured - sw->total_hw_samples_acquired; if (!live) { @@ -590,20 +590,20 @@ static size_t audio_pcm_sw_read(SWVoiceIn *sw, void *buf, size_t size) return 0; } - samples = size / sw->info.bytes_per_frame; + frames_out_max = buf_len / sw->info.bytes_per_frame; swlim = (live * sw->ratio) >> 32; - swlim = MIN (swlim, samples); + swlim = MIN(swlim, frames_out_max); - audio_pcm_sw_resample_in(sw, live, swlim, &total, &ret); + audio_pcm_sw_resample_in(sw, live, swlim, &total_in, &total_out); if (!hw->pcm_ops->volume_in) { - mixeng_volume(sw->resample_buf.buffer, ret, &sw->vol); + mixeng_volume(sw->resample_buf.buffer, total_out, &sw->vol); } + sw->clip(buf, sw->resample_buf.buffer, total_out); - sw->clip(buf, sw->resample_buf.buffer, ret); - sw->total_hw_samples_acquired += total; - return ret * sw->info.bytes_per_frame; + sw->total_hw_samples_acquired += total_in; + return total_out * sw->info.bytes_per_frame; } /* |