]> git.sesse.net Git - nageru/blobdiff - x264_speed_control.h
Rename ui_foo.ui to foo.ui; seemingly, it is more standard.
[nageru] / x264_speed_control.h
index 8a1f344db847cc2d8daaf5747378ede9cbee96d6..b0a1739d022e462c48c7e80e7b73b905fcdb6411 100644 (file)
@@ -1,3 +1,6 @@
+#ifndef _X264_SPEED_CONTROL_H
+#define _X264_SPEED_CONTROL_H 1
+
 // The x264 speed control tries to encode video at maximum possible quality
 // without skipping frames (at the expense of higher encoding latency and
 // less even output rates, although VBV is still respected). It does this
@@ -52,10 +55,9 @@ extern "C" {
 #include <x264.h>
 }
 
+#include "metrics.h"
 #include "x264_dynamic.h"
 
-#define SC_PRESETS 26
-
 class X264SpeedControl {
 public:
        // x264: Encoding object we are using; must be opened. Assumed to be
@@ -132,9 +134,11 @@ private:
        std::function<void(x264_param_t *)> override_func = nullptr;
 
        // Metrics.
-       std::atomic<int64_t> metric_x264_speedcontrol_preset_used_frames[SC_PRESETS]{{0}};
+       Histogram metric_x264_speedcontrol_preset_used_frames;
        std::atomic<double> metric_x264_speedcontrol_buffer_available_seconds{0.0};
        std::atomic<double> metric_x264_speedcontrol_buffer_size_seconds{0.0};
        std::atomic<int64_t> metric_x264_speedcontrol_idle_frames{0};
        std::atomic<int64_t> metric_x264_speedcontrol_late_frames{0};
 };
+
+#endif  // !defined(_X264_SPEED_CONTROL_H)