summaryrefslogtreecommitdiff
path: root/apps/codecs/wav.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/wav.c')
-rw-r--r--apps/codecs/wav.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/apps/codecs/wav.c b/apps/codecs/wav.c
index d9be0a3420..f83f1d1e58 100644
--- a/apps/codecs/wav.c
+++ b/apps/codecs/wav.c
@@ -410,11 +410,19 @@ next_track:
410 } 410 }
411 411
412 firstblockposn = 1024 - n; 412 firstblockposn = 1024 - n;
413 ci->advance_buffer(firstblockposn); 413
414 if (ci->id3->offset > (uint32_t) firstblockposn) {
415 /* Round down to previous block */
416 uint32_t offset = ci->id3->offset - ci->id3->offset % blockalign;
417
418 ci->advance_buffer(offset);
419 bytesdone = offset - firstblockposn;
420 } else {
421 ci->advance_buffer(firstblockposn);
422 bytesdone = 0;
423 }
414 424
415 /* The main decoder loop */ 425 /* The main decoder loop */
416 bytesdone = 0;
417 ci->set_elapsed(0);
418 endofstream = 0; 426 endofstream = 0;
419 /* chunksize is computed so that one chunk is about 1/50s. 427 /* chunksize is computed so that one chunk is about 1/50s.
420 * this make 4096 for 44.1kHz 16bits stereo. 428 * this make 4096 for 44.1kHz 16bits stereo.