audio: rewind compressed sampler blocks at loop boundaries

This commit is contained in:
nmzik
2026-09-28 16:46:53 +04:00
parent 2016f8e2fe
commit a20b64d3e5
2 changed files with 75 additions and 2 deletions
+6 -2
View File
@@ -1435,6 +1435,11 @@ static void Ngs2FinishBlock(Ngs2VoiceInternal& voice) {
}
++block.repeated_count;
block.cursor = 0;
if (voice.decoder != nullptr) {
block.data_cursor = 0;
voice.compressed_input.clear();
voice.decoder->Reset();
}
}
const Ngs2VoiceCallbackInfo info {voice.callback_data,
reinterpret_cast<uintptr_t>(&voice),
@@ -2396,8 +2401,7 @@ int KYTY_SYSV_ABI Ngs2VoiceControl(uintptr_t voice_handle, const Ngs2VoiceParamH
block.num_samples = 0;
}
EXIT_NOT_IMPLEMENTED(block.num_repeats != 0 &&
(voice->rack->type != Ngs2RackType::Sampler ||
voice->decoder != nullptr));
voice->rack->type != Ngs2RackType::Sampler);
EXIT_NOT_IMPLEMENTED(
voice->decoder == nullptr &&
(uint64_t(block.num_skip_samples) + block.num_samples) *