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
This commit is contained in:
Paul Ferrand 2020-05-29 11:29:30 +02:00 committed by Jean Pierre Cimalando
parent acf4f00b9d
commit fe730333c6

View file

@ -68,12 +68,13 @@ struct FilePromise
return AudioSpan<const float>(fileData) return AudioSpan<const float>(fileData)
.subspan(sfz::config::excessFileFrames, .subspan(sfz::config::excessFileFrames,
fileData.getNumFrames() - 2 * sfz::config::excessFileFrames); fileData.getNumFrames() - 2 * sfz::config::excessFileFrames);
else if (availableFrames > preloadedData->getNumFrames()) else if (availableFrames > preloadedData->getNumFrames() + sfz::config::excessFileFrames)
return AudioSpan<const float>(fileData).subspan(sfz::config::excessFileFrames, availableFrames); return AudioSpan<const float>(fileData)
.subspan(sfz::config::excessFileFrames, availableFrames - sfz::config::excessFileFrames);
else else
return AudioSpan<const float>(*preloadedData) return AudioSpan<const float>(*preloadedData)
.subspan(sfz::config::excessFileFrames, .subspan(sfz::config::excessFileFrames,
preloadedData->getNumFrames() - sfz::config::excessFileFrames); preloadedData->getNumFrames() - 2 * sfz::config::excessFileFrames);
} }
void reset() void reset()