summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2012-10-25 20:04:52 +0200
committerNils Wallménius <nils@rockbox.org>2012-10-25 20:04:52 +0200
commit54ef3066101e68a9058e98ba8498d1a7ffce8ba9 (patch)
treedd57807171ab7e8da3a18e49fdecc261dc72769e
parentc1ec1ec89962ded5ae4acefc33c6a445f5b4c3f5 (diff)
downloadrockbox-54ef3066101e68a9058e98ba8498d1a7ffce8ba9.tar.gz
rockbox-54ef3066101e68a9058e98ba8498d1a7ffce8ba9.zip
flac: use 64 bit math to calculate the elapsed time
avoids overflows for very long files Change-Id: Idb1e9a411bd9007cfddbbd2d3dcf127645fa9a7c
-rw-r--r--lib/rbcodec/codecs/flac.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/rbcodec/codecs/flac.c b/lib/rbcodec/codecs/flac.c
index e10403819c..e8588d3c95 100644
--- a/lib/rbcodec/codecs/flac.c
+++ b/lib/rbcodec/codecs/flac.c
@@ -483,7 +483,7 @@ enum codec_status codec_run(void)
483 483
484 flac_seek_offset(&fc, samplesdone); 484 flac_seek_offset(&fc, samplesdone);
485 samplesdone=fc.samplenumber+fc.blocksize; 485 samplesdone=fc.samplenumber+fc.blocksize;
486 elapsedtime=(samplesdone*10)/(ci->id3->frequency/100); 486 elapsedtime=((uint64_t)samplesdone*1000)/(ci->id3->frequency);
487 ci->set_elapsed(elapsedtime); 487 ci->set_elapsed(elapsedtime);
488 488
489 /* The main decoding loop */ 489 /* The main decoding loop */
@@ -523,7 +523,7 @@ enum codec_status codec_run(void)
523 523
524 /* Update the elapsed-time indicator */ 524 /* Update the elapsed-time indicator */
525 samplesdone=fc.samplenumber+fc.blocksize; 525 samplesdone=fc.samplenumber+fc.blocksize;
526 elapsedtime=(samplesdone*10)/(ci->id3->frequency/100); 526 elapsedtime=((uint64_t)samplesdone*1000)/(ci->id3->frequency);
527 ci->set_elapsed(elapsedtime); 527 ci->set_elapsed(elapsedtime);
528 528
529 ci->advance_buffer(consumed); 529 ci->advance_buffer(consumed);