|
@@ -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%%)",
|