Merge pull request #950 from Xaymar/patch_fix-log-stats

libobs: Fix an int underflow in log_frame_info
master
Jim 2017-07-01 10:50:37 -07:00 committed by GitHub
commit 35474f5b72
1 changed files with 15 additions and 8 deletions

View File

@ -283,26 +283,33 @@ static void log_frame_info(struct obs_output *output)
{
struct obs_core_video *video = &obs->video;
uint32_t video_frames = video_output_get_total_frames(output->video);
uint32_t encoded_frames = video_output_get_total_frames(output->video);
uint32_t total = video_frames - output->starting_frame_count;
int64_t encoded_temp = (int64_t)encoded_frames
- (int64_t)output->starting_frame_count;
uint32_t encoded = encoded_temp > 0 ? (uint32_t)encoded_temp : 0;
uint32_t drawn = video->total_frames - output->starting_drawn_count;
uint32_t lagged = video->lagged_frames - output->starting_lagged_count;
int64_t drawn_temp = (int64_t)video->total_frames
- (int64_t)output->starting_drawn_count;
uint32_t drawn = drawn_temp > 0 ? (uint32_t)drawn_temp : 0;
int64_t lagged_temp = (int64_t)video->total_frames
- (int64_t)output->starting_lagged_count;
uint32_t lagged = lagged_temp > 0 ? (uint32_t)lagged_temp : 0;
int dropped = obs_output_get_frames_dropped(output);
double percentage_lagged = 0.0f;
double percentage_dropped = 0.0f;
if (total)
percentage_dropped = (double)dropped / (double)total * 100.0;
if (encoded)
percentage_dropped = (double)dropped / (double)encoded * 100.0;
if (drawn)
percentage_lagged = (double)lagged / (double)drawn * 100.0;
blog(LOG_INFO, "Output '%s': stopping", output->context.name);
blog(LOG_INFO, "Output '%s': Total encoded frames: %"PRIu32,
output->context.name, total);
output->context.name, encoded);
blog(LOG_INFO, "Output '%s': Total drawn frames: %"PRIu32,
output->context.name, drawn);
@ -311,7 +318,7 @@ static void log_frame_info(struct obs_output *output)
"to rendering lag/stalls: %"PRIu32" (%0.1f%%)",
output->context.name,
lagged, percentage_lagged);
if (total && dropped)
if (encoded && dropped)
blog(LOG_INFO, "Output '%s': Number of dropped frames due "
"to insufficient bandwidth/connection stalls: "
"%d (%0.1f%%)",