diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2024-05-08 18:23:05 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2024-05-08 18:23:05 +0200 |
commit | cff016d6dd2aa3345c1e6bcc0c49477c40488f97 (patch) | |
tree | 2a82a92867ad949b8ce792d7882713c833667c8a | |
parent | 4778b24366fbcc216d9d59fafbbb7505c371dd1d (diff) | |
parent | 97a70cbd6e3b9011a5df3f9625cbf2985afc9f14 (diff) | |
download | redot-engine-cff016d6dd2aa3345c1e6bcc0c49477c40488f97.tar.gz |
Merge pull request #91714 from DeeJayLSP/qoalen-fix
Use data length on QOA checks instead of min size
-rw-r--r-- | scene/resources/audio_stream_wav.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/scene/resources/audio_stream_wav.cpp b/scene/resources/audio_stream_wav.cpp index ba5dad088f..db2564af22 100644 --- a/scene/resources/audio_stream_wav.cpp +++ b/scene/resources/audio_stream_wav.cpp @@ -542,7 +542,7 @@ double AudioStreamWAV::get_length() const { break; case AudioStreamWAV::FORMAT_QOA: qoa_desc desc = { 0, 0, 0, { { { 0 }, { 0 } } } }; - qoa_decode_header((uint8_t *)data + DATA_PAD, QOA_MIN_FILESIZE, &desc); + qoa_decode_header((uint8_t *)data + DATA_PAD, data_bytes, &desc); len = desc.samples * desc.channels; } @@ -681,7 +681,8 @@ Ref<AudioStreamPlayback> AudioStreamWAV::instantiate_playback() { if (format == AudioStreamWAV::FORMAT_QOA) { sample->qoa.desc = (qoa_desc *)memalloc(sizeof(qoa_desc)); - qoa_decode_header((uint8_t *)data + DATA_PAD, QOA_MIN_FILESIZE, sample->qoa.desc); + uint32_t ffp = qoa_decode_header((uint8_t *)data + DATA_PAD, data_bytes, sample->qoa.desc); + ERR_FAIL_COND_V(ffp != 8, Ref<AudioStreamPlaybackWAV>()); sample->qoa.frame_len = qoa_max_frame_size(sample->qoa.desc); int samples_len = (sample->qoa.desc->samples > QOA_FRAME_LEN ? QOA_FRAME_LEN : sample->qoa.desc->samples); int alloc_len = sample->qoa.desc->channels * samples_len * sizeof(int16_t); |