From 147accdf74762ee8da012422f879db61b2ed8ebb Mon Sep 17 00:00:00 2001 From: DeeJayLSP Date: Mon, 9 Sep 2024 16:12:22 -0300 Subject: [PATCH] WAV: Fix one frame overflow at the end --- editor/import/resource_importer_wav.cpp | 4 ++-- scene/resources/audio_stream_wav.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/editor/import/resource_importer_wav.cpp b/editor/import/resource_importer_wav.cpp index 77b3629b076..7a6f39906c0 100644 --- a/editor/import/resource_importer_wav.cpp +++ b/editor/import/resource_importer_wav.cpp @@ -429,10 +429,10 @@ Error ResourceImporterWAV::import(const String &p_source_file, const String &p_s loop_end = p_options["edit/loop_end"]; // Wrap around to max frames, so `-1` can be used to select the end, etc. if (loop_begin < 0) { - loop_begin = CLAMP(loop_begin + frames + 1, 0, frames); + loop_begin = CLAMP(loop_begin + frames, 0, frames - 1); } if (loop_end < 0) { - loop_end = CLAMP(loop_end + frames + 1, 0, frames); + loop_end = CLAMP(loop_end + frames, 0, frames - 1); } } diff --git a/scene/resources/audio_stream_wav.cpp b/scene/resources/audio_stream_wav.cpp index d0e0f0eef31..c076dffc49b 100644 --- a/scene/resources/audio_stream_wav.cpp +++ b/scene/resources/audio_stream_wav.cpp @@ -297,7 +297,7 @@ int AudioStreamPlaybackWAV::mix(AudioFrame *p_buffer, float p_rate_scale, int p_ int64_t loop_end_fp = ((int64_t)base->loop_end << MIX_FRAC_BITS); int64_t length_fp = ((int64_t)len << MIX_FRAC_BITS); int64_t begin_limit = (base->loop_mode != AudioStreamWAV::LOOP_DISABLED) ? loop_begin_fp : 0; - int64_t end_limit = (base->loop_mode != AudioStreamWAV::LOOP_DISABLED) ? loop_end_fp : length_fp; + int64_t end_limit = (base->loop_mode != AudioStreamWAV::LOOP_DISABLED) ? loop_end_fp : length_fp - MIX_FRAC_LEN; bool is_stereo = base->stereo; int32_t todo = p_frames;