From 1be0977330e4ca30bbb8d6615a9c3a5ba541fdc4 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 27 Dec 2013 10:33:45 +0100 Subject: [PATCH] Fix for #197 (non audio chunks > 256 bytes) --- radio/src/audio_arm.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/radio/src/audio_arm.cpp b/radio/src/audio_arm.cpp index 83988b215..27807b7d9 100644 --- a/radio/src/audio_arm.cpp +++ b/radio/src/audio_arm.cpp @@ -380,10 +380,13 @@ int AudioQueue::mixWav(AudioContext &context, AudioBuffer *buffer, int volume, u result = FR_DENIED; } while (result == FR_OK && memcmp(wavSamplesPtr, "data", 4) != 0) { - result = (size < 256 ? f_read(&context.state.wav.file, wavBuffer, size+8, &read) : FR_DENIED); - if (read != size+8) result = FR_DENIED; - wavSamplesPtr = (uint32_t *)(wavBuffer + size); - size = wavSamplesPtr[1]; + result = f_lseek(&context.state.wav.file, f_tell(&context.state.wav.file)+size); + if (result == FR_OK) { + result = f_read(&context.state.wav.file, wavBuffer, 8, &read); + if (read != 8) result = FR_DENIED; + wavSamplesPtr = (uint32_t *)wavBuffer; + size = wavSamplesPtr[1]; + } } context.state.wav.size = size; }