summaryrefslogtreecommitdiff
path: root/apps/codecs/wav.c
diff options
context:
space:
mode:
authorMagnus Holmgren <magnushol@gmail.com>2006-06-04 15:04:03 +0000
committerMagnus Holmgren <magnushol@gmail.com>2006-06-04 15:04:03 +0000
commitf95dd56a2cfd1df77a3fc5beb664a8fb2018b80a (patch)
treebef8dde94bb326c93b236aee1ba1f16d78f27857 /apps/codecs/wav.c
parent959d23e231014de4e8cf4f8a7808633ed7eaf459 (diff)
downloadrockbox-f95dd56a2cfd1df77a3fc5beb664a8fb2018b80a.tar.gz
rockbox-f95dd56a2cfd1df77a3fc5beb664a8fb2018b80a.zip
Fix bug 5341: Resume in Wav and Flac doesn't start from the position where it was left off. Mark Arigo helped with the Flac fix.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10051 a1c6a512-1295-4272-9138-f99709370657
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.