+#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
#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
std::function<void(x264_param_t *)> override_func = nullptr;
// Metrics.
- std::atomic<int64_t> metric_x264_speedcontrol_preset_used_frames[SC_PRESETS]{{0}};
- std::atomic<double> metric_x264_speedcontrol_preset_used_frames_sum{0.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)