Fix all sorts of wacky behavior with dummy audio callback
This fixes the VU meter when the audio output is set to NULL.
This commit is contained in:
parent
463eacedf1
commit
1e29e41577
1 changed files with 6 additions and 5 deletions
|
@ -58,16 +58,17 @@ namespace
|
||||||
{
|
{
|
||||||
int operator()()
|
int operator()()
|
||||||
{
|
{
|
||||||
float buf[16384];
|
int16_t buf[16384];
|
||||||
uint64_t last_ts = get_utime();
|
uint64_t last_ts = get_utime();
|
||||||
while(!dummy_cb_quit) {
|
while(!dummy_cb_quit) {
|
||||||
uint64_t cur_ts = get_utime();
|
uint64_t cur_ts = get_utime();
|
||||||
uint64_t dt = cur_ts - last_ts;
|
uint64_t dt = cur_ts - last_ts;
|
||||||
|
last_ts = cur_ts;
|
||||||
unsigned samples = dt / 25;
|
unsigned samples = dt / 25;
|
||||||
if(samples > 16384)
|
if(samples > 16384)
|
||||||
samples = 16384; //Don't get crazy.
|
samples = 16384; //Don't get crazy.
|
||||||
if(dummy_cb_active) {
|
if(dummy_cb_active) {
|
||||||
audioapi_get_voice(buf, samples);
|
audioapi_get_mixed(buf, samples, false);
|
||||||
audioapi_put_voice(NULL, samples);
|
audioapi_put_voice(NULL, samples);
|
||||||
}
|
}
|
||||||
usleep(10000);
|
usleep(10000);
|
||||||
|
@ -319,7 +320,7 @@ void audioapi_put_voice(float* samples, size_t count)
|
||||||
void audioapi_set_dummy_cb(bool enable)
|
void audioapi_set_dummy_cb(bool enable)
|
||||||
{
|
{
|
||||||
if(enable)
|
if(enable)
|
||||||
voice_rate = 40000;
|
orig_voice_rate = voice_rate = 40000;
|
||||||
dummy_cb_active = enable;
|
dummy_cb_active = enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,7 +398,7 @@ void audioapi_get_mixed(int16_t* samples, size_t count, bool stereo)
|
||||||
else
|
else
|
||||||
for(size_t i = 0; i < 2 * indata; i++)
|
for(size_t i = 0; i < 2 * indata; i++)
|
||||||
intbuf[i] = 0;
|
intbuf[i] = 0;
|
||||||
music_resampler.resample(in, indata, out, outdata, voice_rate / b.rate, true);
|
music_resampler.resample(in, indata, out, outdata, (double)voice_rate / b.rate, true);
|
||||||
indata_used -= indata;
|
indata_used -= indata;
|
||||||
outdata_used -= outdata;
|
outdata_used -= outdata;
|
||||||
audioapi_get_music(indata_used);
|
audioapi_get_music(indata_used);
|
||||||
|
@ -426,7 +427,7 @@ void audioapi_get_mixed(int16_t* samples, size_t count, bool stereo)
|
||||||
else
|
else
|
||||||
for(size_t i = 0; i < indata; i++)
|
for(size_t i = 0; i < indata; i++)
|
||||||
intbuf[i] = 0;
|
intbuf[i] = 0;
|
||||||
music_resampler.resample(in, indata, out, outdata, voice_rate / b.rate, false);
|
music_resampler.resample(in, indata, out, outdata, (double)voice_rate / b.rate, false);
|
||||||
indata_used -= indata;
|
indata_used -= indata;
|
||||||
outdata_used -= outdata;
|
outdata_used -= outdata;
|
||||||
audioapi_get_music(indata_used);
|
audioapi_get_music(indata_used);
|
||||||
|
|
Loading…
Add table
Reference in a new issue