diff options
Diffstat (limited to 'apps/codecs/wav.c')
-rw-r--r-- | apps/codecs/wav.c | 14 |
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. |