mirror of https://github.com/xqemu/xqemu.git
noaudio: correctly account acquired samples
This will fix the return value of the function which otherwise returns too many samples because sw->total_hw_samples_acquired isn't correctly accounted. Signed-off-by: Michael Walle <michael@walle.cc> Signed-off-by: malc <av1474@comtv.ru>
This commit is contained in:
parent
011da610ba
commit
8a7d0890ac
|
@ -117,9 +117,12 @@ static int no_run_in (HWVoiceIn *hw)
|
||||||
|
|
||||||
static int no_read (SWVoiceIn *sw, void *buf, int size)
|
static int no_read (SWVoiceIn *sw, void *buf, int size)
|
||||||
{
|
{
|
||||||
|
/* use custom code here instead of audio_pcm_sw_read() to avoid
|
||||||
|
* useless resampling/mixing */
|
||||||
int samples = size >> sw->info.shift;
|
int samples = size >> sw->info.shift;
|
||||||
int total = sw->hw->total_samples_captured - sw->total_hw_samples_acquired;
|
int total = sw->hw->total_samples_captured - sw->total_hw_samples_acquired;
|
||||||
int to_clear = audio_MIN (samples, total);
|
int to_clear = audio_MIN (samples, total);
|
||||||
|
sw->total_hw_samples_acquired += total;
|
||||||
audio_pcm_info_clear_buf (&sw->info, buf, to_clear);
|
audio_pcm_info_clear_buf (&sw->info, buf, to_clear);
|
||||||
return to_clear << sw->info.shift;
|
return to_clear << sw->info.shift;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue