]> git.sesse.net Git - nageru/blobdiff - x264_encoder.cpp
Make the histograms more flexible.
[nageru] / x264_encoder.cpp
index 9d108a0604989a87d4898dd970071a3495136bd3..08f6c91af90b4dd0de977d6e08443458705c317f 100644 (file)
@@ -65,7 +65,9 @@ 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);
 }
 
 X264Encoder::~X264Encoder()
@@ -364,15 +366,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];