|
@@ -541,7 +541,7 @@ static size_t audio_pcm_hw_find_min_in (HWVoiceIn *hw)
|
|
|
return m;
|
|
|
}
|
|
|
|
|
|
-size_t audio_pcm_hw_get_live_in(HWVoiceIn *hw)
|
|
|
+static size_t audio_pcm_hw_get_live_in(HWVoiceIn *hw)
|
|
|
{
|
|
|
size_t live = hw->total_samples_captured - audio_pcm_hw_find_min_in (hw);
|
|
|
if (audio_bug(__func__, live > hw->samples)) {
|
|
@@ -551,29 +551,7 @@ size_t audio_pcm_hw_get_live_in(HWVoiceIn *hw)
|
|
|
return live;
|
|
|
}
|
|
|
|
|
|
-size_t audio_pcm_hw_clip_out(HWVoiceOut *hw, void *pcm_buf,
|
|
|
- size_t live, size_t pending)
|
|
|
-{
|
|
|
- size_t left = hw->samples - pending;
|
|
|
- size_t len = MIN (left, live);
|
|
|
- size_t clipped = 0;
|
|
|
-
|
|
|
- while (len) {
|
|
|
- struct st_sample *src = hw->mix_buf + hw->rpos;
|
|
|
- uint8_t *dst = advance (pcm_buf, hw->rpos << hw->info.shift);
|
|
|
- size_t samples_till_end_of_buf = hw->samples - hw->rpos;
|
|
|
- size_t samples_to_clip = MIN (len, samples_till_end_of_buf);
|
|
|
-
|
|
|
- hw->clip (dst, src, samples_to_clip);
|
|
|
-
|
|
|
- hw->rpos = (hw->rpos + samples_to_clip) % hw->samples;
|
|
|
- len -= samples_to_clip;
|
|
|
- clipped += samples_to_clip;
|
|
|
- }
|
|
|
- return clipped;
|
|
|
-}
|
|
|
-
|
|
|
-static void audio_pcm_hw_clip_out2(HWVoiceOut *hw, void *pcm_buf, size_t len)
|
|
|
+static void audio_pcm_hw_clip_out(HWVoiceOut *hw, void *pcm_buf, size_t len)
|
|
|
{
|
|
|
size_t clipped = 0;
|
|
|
size_t pos = hw->rpos;
|
|
@@ -1083,7 +1061,7 @@ static size_t audio_pcm_hw_run_out(HWVoiceOut *hw, size_t live)
|
|
|
}
|
|
|
|
|
|
decr = MIN(size >> hw->info.shift, live);
|
|
|
- audio_pcm_hw_clip_out2(hw, buf, decr);
|
|
|
+ audio_pcm_hw_clip_out(hw, buf, decr);
|
|
|
proc = hw->pcm_ops->put_buffer_out(hw, buf, decr << hw->info.shift) >>
|
|
|
hw->info.shift;
|
|
|
|
|
@@ -1146,11 +1124,7 @@ static void audio_run_out (AudioState *s)
|
|
|
}
|
|
|
|
|
|
prev_rpos = hw->rpos;
|
|
|
- if (hw->pcm_ops->run_out) {
|
|
|
- played = hw->pcm_ops->run_out(hw, live);
|
|
|
- } else {
|
|
|
- played = audio_pcm_hw_run_out(hw, live);
|
|
|
- }
|
|
|
+ played = audio_pcm_hw_run_out(hw, live);
|
|
|
replay_audio_out(&played);
|
|
|
if (audio_bug(__func__, hw->rpos >= hw->samples)) {
|
|
|
dolog("hw->rpos=%zu hw->samples=%zu played=%zu\n",
|
|
@@ -1247,12 +1221,8 @@ static void audio_run_in (AudioState *s)
|
|
|
size_t captured = 0, min;
|
|
|
|
|
|
if (replay_mode != REPLAY_MODE_PLAY) {
|
|
|
- if (hw->pcm_ops->run_in) {
|
|
|
- captured = hw->pcm_ops->run_in(hw);
|
|
|
- } else {
|
|
|
- captured = audio_pcm_hw_run_in(
|
|
|
- hw, hw->samples - audio_pcm_hw_get_live_in(hw));
|
|
|
- }
|
|
|
+ captured = audio_pcm_hw_run_in(
|
|
|
+ hw, hw->samples - audio_pcm_hw_get_live_in(hw));
|
|
|
}
|
|
|
replay_audio_in(&captured, hw->conv_buf, &hw->wpos, hw->samples);
|
|
|
|