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

@ -218,7 +218,7 @@ enum codec_status codec_run(void)
ape_resume(&ape_ctx, resume_offset,
&currentframe, &samplesdone, &samplestoskip, &firstbyte);
elapsedtime = (samplesdone*10)/(ape_ctx.samplerate/100);
elapsedtime = samplesdone*1000LL/ape_ctx.samplerate;
}
else {
currentframe = 0;
@ -285,8 +285,7 @@ frame_start:
inbuffer = ci->request_buffer(&bytesleft,
INPUT_CHUNKSIZE);
elapsedtime = (samplesdone*10)/
(ape_ctx.samplerate/100);
elapsedtime = samplesdone*1000LL/ape_ctx.samplerate;
ci->set_elapsed(elapsedtime);
ci->seek_complete();
action = CODEC_ACTION_NULL;
@ -330,7 +329,7 @@ frame_start:
if (!samplestoskip) {
/* Update the elapsed-time indicator */
elapsedtime = (samplesdone*10)/(ape_ctx.samplerate/100);
elapsedtime = samplesdone*1000LL/ape_ctx.samplerate;
ci->set_elapsed(elapsedtime);
}