X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=src%2Fprogress.c;h=e872a4f58cfb1c80dd4ebab1d4f1306122ffcdc8;hb=00799c5e4471047908d35faf85a032927bbf294d;hp=fb693487cc3204e7b27dd98a246aa424aed101d2;hpb=68879398540cee898518f4660e8ca948c5026b0b;p=fdkaac.git diff --git a/src/progress.c b/src/progress.c index fb69348..e872a4f 100644 --- a/src/progress.c +++ b/src/progress.c @@ -6,6 +6,8 @@ # include "config.h" #endif #include +#include +#include #include #if HAVE_STDINT_H # include @@ -51,11 +53,14 @@ void aacenc_progress_init(aacenc_progress_t *progress, int64_t total, void aacenc_progress_update(aacenc_progress_t *progress, int64_t current, int period) { - int percent = 100.0 * current / progress->total + .5; double seconds = current / progress->timescale; double ellapsed = (aacenc_timer() - progress->start) / 1000.0; - double eta = ellapsed * (progress->total / (double)current - 1.0); - double speed = ellapsed ? seconds / ellapsed : 0.0; + double speed = ellapsed ? seconds / ellapsed : 1.0; + int percent = progress->total ? 100.0 * current / progress->total + .5 + : 100; + double eta = current ? ellapsed * (progress->total / (double)current - 1.0) + : progress->total ? DBL_MAX : 0; + if (current < progress->processed + period) return;