void timestatus(int samp_rate,long frameNum,long totalframes,int framesize) { ts_times real_time, process_time; int percent; real_time.so_far = ts_real_time(frameNum); process_time.so_far = ts_process_time(frameNum); if (frameNum == 0) { fprintf(stderr, " Frame | CPU/estimated | time/estimated | play/CPU | ETA\n"); return; } ts_calc_times(&real_time, samp_rate, frameNum, totalframes, framesize); ts_calc_times(&process_time, samp_rate, frameNum, totalframes, framesize); if (totalframes > 1) { percent = (int)(100.0 * frameNum / (totalframes - 1)); } else { percent = 100; } # define TS_TIME_DECOMPOSE(time) \ (int)((long)(time+.5) / 3600), \ (int)((long)((time+.5) / 60) % 60), \ (int)((long)(time+.5) % 60) fprintf(stderr, "\r%6ld/%6ld(%3d%%)|%2d:%02d:%02d/%2d:%02d:%02d|%2d:%02d:%02d/%2d:%02d:%02d|%10.4f|%2d:%02d:%02d ", frameNum, totalframes - 1, percent, TS_TIME_DECOMPOSE(process_time.so_far), TS_TIME_DECOMPOSE(process_time.estimated), TS_TIME_DECOMPOSE(real_time.so_far), TS_TIME_DECOMPOSE(real_time.estimated), process_time.speed, TS_TIME_DECOMPOSE(real_time.eta) ); fflush(stderr); }
static void timestatus(const lame_global_flags * const gfp) { timestatus_t* real_time = &global_encoder_progress.real_time; timestatus_t* proc_time = &global_encoder_progress.proc_time; int percent; double tmx, delta; int samp_rate = lame_get_out_samplerate(gfp) , frameNum = lame_get_frameNum(gfp) , totalframes = lame_get_totalframes(gfp) , framesize = lame_get_framesize(gfp) ; if (totalframes < frameNum) { totalframes = frameNum; } if (global_encoder_progress.time_status_init == 0) { real_time->last_time = GetRealTime(); proc_time->last_time = GetCPUTime(); real_time->elapsed_time = 0; proc_time->elapsed_time = 0; } /* we need rollover protection for GetCPUTime, and maybe GetRealTime(): */ tmx = GetRealTime(); delta = tmx - real_time->last_time; if (delta < 0) delta = 0; /* ignore, clock has rolled over */ real_time->elapsed_time += delta; real_time->last_time = tmx; tmx = GetCPUTime(); delta = tmx - proc_time->last_time; if (delta < 0) delta = 0; /* ignore, clock has rolled over */ proc_time->elapsed_time += delta; proc_time->last_time = tmx; if (global_encoder_progress.time_status_init == 0) { console_printf("\r" " Frame | CPU time/estim | REAL time/estim | play/CPU | ETA \n" " 0/ ( 0%%)| 0:00/ : | 0:00/ : | " SPEED_CHAR "| : \r" /* , Console_IO.str_clreoln, Console_IO.str_clreoln */ ); global_encoder_progress.time_status_init = 1; return; } ts_calc_times(real_time, samp_rate, frameNum, totalframes, framesize); ts_calc_times(proc_time, samp_rate, frameNum, totalframes, framesize); if (frameNum < totalframes) { percent = (int) (100. * frameNum / totalframes + 0.5); } else { percent = 100; } console_printf("\r%6i/%-6i", frameNum, totalframes); console_printf(percent < 100 ? " (%2d%%)|" : "(%3.3d%%)|", percent); ts_time_decompose(proc_time->elapsed_time, '/'); ts_time_decompose(proc_time->estimated_time, '|'); ts_time_decompose(real_time->elapsed_time, '/'); ts_time_decompose(real_time->estimated_time, '|'); console_printf(proc_time->speed_index <= 1. ? "%9.4f" SPEED_CHAR "|" : "%#9.5g" SPEED_CHAR "|", SPEED_MULT * proc_time->speed_index); ts_time_decompose((real_time->estimated_time - real_time->elapsed_time), ' '); }
void timestatus ( const int samp_rate, const int frameNum, const int totalframes, const int framesize ) { static timestatus_t real_time; static timestatus_t proc_time; int percent; static int init = 0; /* What happens here? A work around instead of a bug fix ??? */ double tmx,delta; if ( frameNum == 0 ) { real_time.last_time = GetRealTime (); proc_time.last_time = GetCPUTime (); real_time.elapsed_time = 0; proc_time.elapsed_time = 0; } /* we need rollover protection for GetCPUTime, and maybe GetRealTime(): */ tmx=GetRealTime(); delta=tmx-real_time.last_time; if (delta<0) delta=0; /* ignore, clock has rolled over */ real_time.elapsed_time += delta; real_time.last_time = tmx; tmx=GetCPUTime(); delta=tmx-proc_time.last_time; if (delta<0) delta=0; /* ignore, clock has rolled over */ proc_time.elapsed_time += delta; proc_time.last_time = tmx; if ( frameNum == 0 && init == 0 ) { fprintf ( stderr, "\r" " Frame | CPU time/estim | REAL time/estim | play/CPU | ETA \n" " 0/ ( 0%%)| 0:00/ : | 0:00/ : | " SPEED_CHAR "| : \r" /* , Console_IO.str_clreoln, Console_IO.str_clreoln */ ); init = 1; return; } /* reset init counter for next time we are called with frameNum==0 */ if (frameNum > 0) init = 0; ts_calc_times ( &real_time, samp_rate, frameNum, totalframes, framesize ); ts_calc_times ( &proc_time, samp_rate, frameNum, totalframes, framesize ); if ( frameNum < totalframes ) { percent = (int) (100. * frameNum / totalframes + 0.5 ); } else { percent = 100; } fprintf ( stderr, "\r%6i/%-6i", frameNum, totalframes ); fprintf ( stderr, percent < 100 ? " (%2d%%)|" : "(%3.3d%%)|", percent ); ts_time_decompose ( (unsigned long)proc_time.elapsed_time , '/' ); ts_time_decompose ( (unsigned long)proc_time.estimated_time, '|' ); ts_time_decompose ( (unsigned long)real_time.elapsed_time , '/' ); ts_time_decompose ( (unsigned long)real_time.estimated_time, '|' ); fprintf ( stderr, proc_time.speed_index <= 1. ? "%9.4f" SPEED_CHAR "|" : "%#9.5g" SPEED_CHAR "|", SPEED_MULT * proc_time.speed_index ); ts_time_decompose ( (unsigned long)(real_time.estimated_time - real_time.elapsed_time), ' ' ); fflush ( stderr ); }