X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264_encoder.cpp;h=955491e75656815be1d7f82d387d75d8cea1a4a9;hb=1836dccf699779d9092a75755cec96cea1734a2a;hp=9d108a0604989a87d4898dd970071a3495136bd3;hpb=0ec13fe273ceb4f0db4d1b431a8adec9f1f03b7e;p=nageru diff --git a/x264_encoder.cpp b/x264_encoder.cpp index 9d108a0..955491e 100644 --- a/x264_encoder.cpp +++ b/x264_encoder.cpp @@ -65,7 +65,11 @@ X264Encoder::X264Encoder(AVOutputFormat *oformat) 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); - global_metrics.add_histogram("x264_crf", {}, metric_x264_crf, &metric_x264_crf_sum, crf_buckets); + + metric_x264_crf.init_uniform(50); + global_metrics.add("x264_crf", &metric_x264_crf); + + latency_histogram.init("x264"); } X264Encoder::~X264Encoder() @@ -364,15 +368,7 @@ void X264Encoder::encode_frame(X264Encoder::QueuedFrame qf) ++metric_x264_output_frames_p; } - if (pic.prop.f_crf_avg <= 0.0) { - ++metric_x264_crf[0]; - } else if (pic.prop.f_crf_avg <= crf_buckets - 1) { - ++metric_x264_crf[int(floor(pic.prop.f_crf_avg))]; - } else { - // Just clamp; this isn't ideal, but at least the total count will be right. - ++metric_x264_crf[crf_buckets - 1]; - } - metric_x264_crf_sum = metric_x264_crf_sum + pic.prop.f_crf_avg; + 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]; @@ -381,7 +377,7 @@ void X264Encoder::encode_frame(X264Encoder::QueuedFrame qf) 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); }