aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/mp3_decode.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/mp3_decode.c b/src/mp3_decode.c
index d31db2e86..e2bf2f6bf 100644
--- a/src/mp3_decode.c
+++ b/src/mp3_decode.c
@@ -343,11 +343,18 @@ int decodeFirstFrame(mp3DecodeData * data) {
}
}
else {
+ size_t offset = data->currentOffset;
mad_timer_t duration = data->frame.header.duration;
float frameTime = ((float)mad_timer_count(duration,
MAD_UNITS_MILLISECONDS))/1000;
fstat(fileno(data->fp),&filestat);
- data->totalTime = (filestat.st_size*8.0)/
+ if(data->stream.this_frame!=NULL) {
+ offset-= data->stream.bufend-data->stream.this_frame;
+ }
+ else {
+ offset-= data->stream.bufend-data->stream.buffer;
+ }
+ data->totalTime = ((filestat.st_size-offset)*8.0)/
(data->frame).header.bitrate;
data->maxFrames = data->totalTime/frameTime+FRAMES_CUSHION;
}