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

@ -140,7 +140,7 @@ enum codec_status codec_run(void)
samplesdone = 0;
}
elapsed_time = (samplesdone*10)/frequency;
elapsed_time = (samplesdone*10LL)/frequency;
}
ci->set_elapsed(elapsed_time);
@ -162,7 +162,7 @@ enum codec_status codec_run(void)
samplesdone = new_offset;
}
elapsed_time = (samplesdone*10)/frequency;
elapsed_time = (samplesdone*10LL)/frequency;
ci->set_elapsed(elapsed_time);
ci->seek_complete();
}
@ -182,7 +182,7 @@ enum codec_status codec_run(void)
frame.buffer + MPC_FRAME_LENGTH,
frame.samples);
samplesdone += frame.samples;
elapsed_time = (samplesdone*10)/frequency;
elapsed_time = (samplesdone*10LL)/frequency;
ci->set_elapsed(elapsed_time);
/* Remark: rockbox offset is the file offset in bytes. So estimate
* this offset from the samples, sampling frequency and bitrate */