diff options
-rw-r--r-- | src/mp3_decode.c | 9 |
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; } |