From 20b91a83d3078eeabc02a4d214f6d44c64282f89 Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Mon, 15 Oct 2018 17:59:13 -0400 Subject: 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 --- lib/rbcodec/codecs/ape.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'lib/rbcodec/codecs/ape.c') diff --git a/lib/rbcodec/codecs/ape.c b/lib/rbcodec/codecs/ape.c index 0adc793ade..937af1945f 100644 --- a/lib/rbcodec/codecs/ape.c +++ b/lib/rbcodec/codecs/ape.c @@ -218,7 +218,7 @@ enum codec_status codec_run(void) ape_resume(&ape_ctx, resume_offset, ¤tframe, &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); } -- cgit v1.2.3