global_metrics.add("x264_output_frames", {{ "type", "i" }}, &metric_x264_output_frames_i);
global_metrics.add("x264_output_frames", {{ "type", "p" }}, &metric_x264_output_frames_p);
global_metrics.add("x264_output_frames", {{ "type", "b" }}, &metric_x264_output_frames_b);
+
+ metric_x264_crf.init_uniform(50);
+ global_metrics.add("x264_crf", &metric_x264_crf);
+
+ latency_histogram.init("x264");
}
X264Encoder::~X264Encoder()
++metric_x264_output_frames_p;
}
+ metric_x264_crf.count_event(pic.prop.f_crf_avg);
+
if (frames_being_encoded.count(pic.i_pts)) {
ReceivedTimestamps received_ts = frames_being_encoded[pic.i_pts];
frames_being_encoded.erase(pic.i_pts);
static int frameno = 0;
print_latency("Current x264 latency (video inputs → network mux):",
received_ts, (pic.i_type == X264_TYPE_B || pic.i_type == X264_TYPE_BREF),
- &frameno);
+ &frameno, &latency_histogram);
} else {
assert(false);
}