]> git.sesse.net Git - nageru/blobdiff - x264_encoder.cpp
Update the queue length metric after trimming, not before.
[nageru] / x264_encoder.cpp
index 9d108a0604989a87d4898dd970071a3495136bd3..955491e75656815be1d7f82d387d75d8cea1a4a9 100644 (file)
@@ -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);
        }