Browse Source

Fix repetitive file playing in AudioPlaySdWav

dds
PaulStoffregen 10 years ago
parent
commit
2371818686
1 changed files with 17 additions and 15 deletions
  1. +17
    -15
      play_sd_wav.cpp

+ 17
- 15
play_sd_wav.cpp View File

@@ -130,12 +130,12 @@ void AudioPlaySdWav::update(void)
buffer_length = wavfile.read(buffer, 512);
if (buffer_length == 0) goto end;
buffer_offset = 0;
if (!consume(buffer_length)) {
// no audio was transmitted
//Serial.println("consume returned false");
bool txok = consume(buffer_length);
if (txok) {
if (state != STATE_STOP) return;
} else {
if (state != STATE_STOP) goto cleanup;
}
return;
}
end: // end of file reached or other reason to stop
wavfile.close();
@@ -180,17 +180,19 @@ bool AudioPlaySdWav::consume(uint32_t size)
p = buffer + buffer_offset;
start:
if (size == 0) return false;
//Serial.print("AudioPlaySdWav write, ");
//Serial.print("size = ");
//Serial.print(size);
//Serial.print(", buffer_offset = ");
//Serial.print(buffer_offset);
//Serial.print(", data_length = ");
//Serial.print(data_length);
//Serial.print(", space = ");
//Serial.print((AUDIO_BLOCK_SAMPLES - block_offset) * 2);
//Serial.print(", state = ");
//Serial.println(state);
#if 0
Serial.print("AudioPlaySdWav consume, ");
Serial.print("size = ");
Serial.print(size);
Serial.print(", buffer_offset = ");
Serial.print(buffer_offset);
Serial.print(", data_length = ");
Serial.print(data_length);
Serial.print(", space = ");
Serial.print((AUDIO_BLOCK_SAMPLES - block_offset) * 2);
Serial.print(", state = ");
Serial.println(state);
#endif
switch (state) {
// parse wav file header, is this really a .wav file?
case STATE_PARSE1:

Loading…
Cancel
Save