From 98d898a71571b02e1fd217a41fde5248599ce6a5 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Tue, 1 Jul 2025 04:48:07 -0700 Subject: [PATCH] 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 --- Audio/Visualization/VisualizationController.m | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Audio/Visualization/VisualizationController.m b/Audio/Visualization/VisualizationController.m index 81daca678..8211a0157 100644 --- a/Audio/Visualization/VisualizationController.m +++ b/Audio/Visualization/VisualizationController.m @@ -16,6 +16,7 @@ float *visAudio; int visAudioCursor, visAudioSize; uint64_t visSamplesPosted; + BOOL ignoreLatency; } static VisualizationController *_sharedController = nil; @@ -35,6 +36,7 @@ static VisualizationController *_sharedController = nil; visAudio = NULL; visAudioSize = 0; latency = 0; + ignoreLatency = YES; } return self; } @@ -48,6 +50,7 @@ static VisualizationController *_sharedController = nil; latency = 0; visAudioCursor = 0; visSamplesPosted = 0; + ignoreLatency = YES; if(visAudio && visAudioSize) { bzero(visAudio, sizeof(float) * visAudioSize); } @@ -99,7 +102,7 @@ static VisualizationController *_sharedController = nil; - (void)postLatency:(double)latency { self->latency = latency; - assert(latency < 45.0); + ignoreLatency = (latency >= 45.0) || (latency < 0.0); } - (double)readSampleRate { @@ -115,7 +118,7 @@ static VisualizationController *_sharedController = nil; - (void)copyVisPCM:(float *_Nullable)outPCM visFFT:(float *_Nullable)outFFT latencyOffset:(double)latency { if(!outPCM && !outFFT) return; - if(!visAudio || !visAudioSize) { + if(ignoreLatency || !visAudio || !visAudioSize) { if(outPCM) bzero(outPCM, sizeof(float) * 4096); if(outFFT) bzero(outFFT, sizeof(float) * 2048); return;