1
0
Fork 0
forked from len0rd/rockbox

codecs: Fix elapsed time calculation for large files

In particular, this solves seeking glitches seen in ~6 hr mp3 files.

(Patch taken from Igor Poretsky's tree)

Change-Id: Id65b6726146b6d2d1a223e90b88e401d1b2d597a
This commit is contained in:
Solomon Peachy 2018-10-15 17:59:13 -04:00
parent 0120ecd651
commit 20b91a83d3
7 changed files with 15 additions and 17 deletions

View file

@ -104,7 +104,7 @@ enum codec_status codec_run(void)
}
}
elapsedtime = (samplesdone*10)/(ci->id3->frequency/100);
elapsedtime = samplesdone * 1000LL / ci->id3->frequency;
ci->set_elapsed(elapsedtime);
/* The main decoding loop */
@ -119,7 +119,7 @@ enum codec_status codec_run(void)
if (m4a_seek(&demux_res, &input_stream,
(param/10) * (ci->id3->frequency/100),
&samplesdone, (int *)&i)) {
elapsedtime=(samplesdone*10)/(ci->id3->frequency/100);
elapsedtime=samplesdone*1000LL/ci->id3->frequency;
}
ci->set_elapsed(elapsedtime);
ci->seek_complete();
@ -140,7 +140,7 @@ enum codec_status codec_run(void)
/* Update the elapsed-time indicator */
samplesdone+=samplesdecoded;
elapsedtime=(samplesdone*10)/(ci->id3->frequency/100);
elapsedtime=samplesdone*1000LL/ci->id3->frequency;
ci->set_elapsed(elapsedtime);
i++;