Visualization: No longer throw an assert on error
If latency is greater than the buffer size, or somehow less than zero, instead simply emit silent visualization data until latency recovers. Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This commit is contained in:
parent
c3511ea5e7
commit
98d898a715
1 changed files with 5 additions and 2 deletions
|
@ -16,6 +16,7 @@
|
||||||
float *visAudio;
|
float *visAudio;
|
||||||
int visAudioCursor, visAudioSize;
|
int visAudioCursor, visAudioSize;
|
||||||
uint64_t visSamplesPosted;
|
uint64_t visSamplesPosted;
|
||||||
|
BOOL ignoreLatency;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VisualizationController *_sharedController = nil;
|
static VisualizationController *_sharedController = nil;
|
||||||
|
@ -35,6 +36,7 @@ static VisualizationController *_sharedController = nil;
|
||||||
visAudio = NULL;
|
visAudio = NULL;
|
||||||
visAudioSize = 0;
|
visAudioSize = 0;
|
||||||
latency = 0;
|
latency = 0;
|
||||||
|
ignoreLatency = YES;
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +50,7 @@ static VisualizationController *_sharedController = nil;
|
||||||
latency = 0;
|
latency = 0;
|
||||||
visAudioCursor = 0;
|
visAudioCursor = 0;
|
||||||
visSamplesPosted = 0;
|
visSamplesPosted = 0;
|
||||||
|
ignoreLatency = YES;
|
||||||
if(visAudio && visAudioSize) {
|
if(visAudio && visAudioSize) {
|
||||||
bzero(visAudio, sizeof(float) * visAudioSize);
|
bzero(visAudio, sizeof(float) * visAudioSize);
|
||||||
}
|
}
|
||||||
|
@ -99,7 +102,7 @@ static VisualizationController *_sharedController = nil;
|
||||||
|
|
||||||
- (void)postLatency:(double)latency {
|
- (void)postLatency:(double)latency {
|
||||||
self->latency = latency;
|
self->latency = latency;
|
||||||
assert(latency < 45.0);
|
ignoreLatency = (latency >= 45.0) || (latency < 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (double)readSampleRate {
|
- (double)readSampleRate {
|
||||||
|
@ -115,7 +118,7 @@ static VisualizationController *_sharedController = nil;
|
||||||
- (void)copyVisPCM:(float *_Nullable)outPCM visFFT:(float *_Nullable)outFFT latencyOffset:(double)latency {
|
- (void)copyVisPCM:(float *_Nullable)outPCM visFFT:(float *_Nullable)outFFT latencyOffset:(double)latency {
|
||||||
if(!outPCM && !outFFT) return;
|
if(!outPCM && !outFFT) return;
|
||||||
|
|
||||||
if(!visAudio || !visAudioSize) {
|
if(ignoreLatency || !visAudio || !visAudioSize) {
|
||||||
if(outPCM) bzero(outPCM, sizeof(float) * 4096);
|
if(outPCM) bzero(outPCM, sizeof(float) * 4096);
|
||||||
if(outFFT) bzero(outFFT, sizeof(float) * 2048);
|
if(outFFT) bzero(outFFT, sizeof(float) * 2048);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue