From fe730333c65555de8a92cff4b274b2e39f999d2d Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Fri, 29 May 2020 11:29:30 +0200 Subject: [PATCH] For streaming data, pass the available frame - the padding size Otherwise in some cases you might have interpolators reading uninitialized/zero data if they're close to the streaming bound --- src/sfizz/FilePool.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/sfizz/FilePool.h b/src/sfizz/FilePool.h index 94e9fa1d..1e996756 100644 --- a/src/sfizz/FilePool.h +++ b/src/sfizz/FilePool.h @@ -68,12 +68,13 @@ struct FilePromise return AudioSpan(fileData) .subspan(sfz::config::excessFileFrames, fileData.getNumFrames() - 2 * sfz::config::excessFileFrames); - else if (availableFrames > preloadedData->getNumFrames()) - return AudioSpan(fileData).subspan(sfz::config::excessFileFrames, availableFrames); + else if (availableFrames > preloadedData->getNumFrames() + sfz::config::excessFileFrames) + return AudioSpan(fileData) + .subspan(sfz::config::excessFileFrames, availableFrames - sfz::config::excessFileFrames); else return AudioSpan(*preloadedData) .subspan(sfz::config::excessFileFrames, - preloadedData->getNumFrames() - sfz::config::excessFileFrames); + preloadedData->getNumFrames() - 2 * sfz::config::excessFileFrames); } void reset()