[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-commits] [COMMIT ddabec7] audio: introduce audio_pcm_hw_clip_out h
From: |
Anthony Liguori |
Subject: |
[Qemu-commits] [COMMIT ddabec7] audio: introduce audio_pcm_hw_clip_out helperfunction |
Date: |
Fri, 18 Sep 2009 10:07:32 -0000 |
From: malc <address@hidden>
Signed-off-by: malc <address@hidden>
diff --git a/audio/audio.c b/audio/audio.c
index a3e23b2..d8e1e15 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -851,6 +851,28 @@ int audio_pcm_hw_get_live_in (HWVoiceIn *hw)
return live;
}
+int audio_pcm_hw_clip_out (HWVoiceOut *hw, void *pcm_buf,
+ int live, int pending)
+{
+ int left = hw->samples - pending;
+ int len = audio_MIN (left, live);
+ int clipped = 0;
+
+ while (len) {
+ struct st_sample *src = hw->mix_buf + hw->rpos;
+ uint8_t *dst = advance (pcm_buf, hw->rpos << hw->info.shift);
+ int samples_till_end_of_buf = hw->samples - hw->rpos;
+ int samples_to_clip = audio_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;
+}
+
/*
* Soft voice (capture)
*/
diff --git a/audio/audio_int.h b/audio/audio_int.h
index ce791ee..7ea8729 100644
--- a/audio/audio_int.h
+++ b/audio/audio_int.h
@@ -221,6 +221,9 @@ int audio_pcm_sw_read (SWVoiceIn *sw, void *buf, int len);
int audio_pcm_hw_get_live_out (HWVoiceOut *hw);
int audio_pcm_hw_get_live_out2 (HWVoiceOut *hw, int *nb_live);
+int audio_pcm_hw_clip_out (HWVoiceOut *hw, void *pcm_buf,
+ int live, int pending);
+
int audio_bug (const char *funcname, int cond);
void *audio_calloc (const char *funcname, int nmemb, size_t size);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-commits] [COMMIT ddabec7] audio: introduce audio_pcm_hw_clip_out helperfunction,
Anthony Liguori <=