compensate pause in fps calculation
This commit is contained in:
parent
82f39f34ad
commit
fb73f9dda7
|
@ -1664,7 +1664,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
|
|||
double bitrate;
|
||||
double speed;
|
||||
int64_t pts = INT64_MIN + 1;
|
||||
static int64_t last_time = -1;
|
||||
static int64_t last_time = -1; //last time this rutine was called
|
||||
static int qp_histogram[52];
|
||||
int hours, mins, secs, us;
|
||||
const char *hours_sign;
|
||||
|
@ -1679,13 +1679,12 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
|
|||
last_time = cur_time;
|
||||
return;
|
||||
}
|
||||
if ((cur_time - last_time) < 500000)
|
||||
if ((cur_time - last_time) < 500000) //only report every .5s
|
||||
return;
|
||||
last_time = cur_time;
|
||||
}
|
||||
|
||||
t = (cur_time-timer_start) / 1000000.0;
|
||||
|
||||
t = (cur_time - timer_start) / 1000000.0; //time in seconds, the transcode process is running
|
||||
|
||||
oc = output_files[0]->ctx;
|
||||
|
||||
|
@ -1712,7 +1711,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
|
|||
float fps;
|
||||
|
||||
frame_number = ost->frame_number;
|
||||
fps = t > 1 ? frame_number / t : 0;
|
||||
fps = t > 0 ? frame_number / t : 0;
|
||||
av_bprintf(&buf, "frame=%5d fps=%3.*f q=%3.1f ",
|
||||
frame_number, fps < 9.95, fps, q);
|
||||
av_bprintf(&buf_script, "frame=%d\n", frame_number);
|
||||
|
@ -1830,7 +1829,7 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
|
|||
|
||||
//get fps
|
||||
float fps;
|
||||
fps = t > 1 ? frame_number / t : -1;
|
||||
fps = t > 0 ? frame_number / t : -1;
|
||||
if (fps > 0 && max_frames_hint > 0) {
|
||||
//get remaining frames
|
||||
int64_t remaining_frames = max_frames_hint - frame_number;
|
||||
|
@ -1844,8 +1843,8 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
|
|||
struct tm * timeinfo;
|
||||
time(&rawtime);
|
||||
timeinfo = localtime(&rawtime);
|
||||
time_t time = mktime(timeinfo);
|
||||
time_t timef = time + secs;
|
||||
time_t time = mktime(timeinfo); //current time
|
||||
time_t timef = time + secs; //time finished
|
||||
timeinfo = localtime(&timef);
|
||||
|
||||
secs %= 60;
|
||||
|
@ -1855,7 +1854,9 @@ static void print_report(int is_last_report, int64_t timer_start, int64_t cur_ti
|
|||
else
|
||||
strftime(timebuf, 20, "%T", timeinfo); //time only
|
||||
|
||||
|
||||
av_bprintf(&buf, "Remaining=%"PRId64" ETA=%02d:%02d:%02d finish=%s", remaining_frames, hours, mins, secs, timebuf);
|
||||
|
||||
}
|
||||
|
||||
if (print_stats || is_last_report) {
|
||||
|
@ -4716,7 +4717,7 @@ static int transcode(void)
|
|||
#endif
|
||||
|
||||
while (!received_sigterm) {
|
||||
int64_t cur_time= av_gettime_relative();
|
||||
int64_t cur_time = av_gettime_relative();
|
||||
|
||||
/* if 'q' pressed, exits */
|
||||
if (stdin_interaction) {
|
||||
|
@ -4724,12 +4725,17 @@ static int transcode(void)
|
|||
if (kbinteractionresult < 0)
|
||||
break;
|
||||
if(kbinteractionresult == 1) { //pause
|
||||
fprintf(stderr, "Paused\r");
|
||||
fprintf(stderr, "\033[101mPaused\033[0m\r");
|
||||
|
||||
|
||||
//wait for key
|
||||
getchar();
|
||||
int64_t new_cur_time = av_gettime_relative();
|
||||
int64_t paused = new_cur_time - cur_time;
|
||||
cur_time = new_cur_time;
|
||||
timer_start += paused; // shift the transcode start by the time, that was paused -> fix calculation of remaining and fps
|
||||
|
||||
fprintf(stderr, "Unpaused\r");
|
||||
fprintf(stderr, "Unpaused Paused For: %lis \n", (paused / 1000000));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue