X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=x264_encoder.h;h=687bf718679c316a3b2e6a24a41c8e449d79c776;hb=b9feb66845bf24465b7671ac9ff7a52b88f6032b;hp=973b62ce5ba5353d74b82cf2b72f869a24325199;hpb=86950850f835fc611818d361d10a3ddbf6bb4f79;p=nageru diff --git a/x264_encoder.h b/x264_encoder.h index 973b62c..687bf71 100644 --- a/x264_encoder.h +++ b/x264_encoder.h @@ -33,6 +33,7 @@ extern "C" { #include #include "defs.h" +#include "metrics.h" #include "print_latency.h" #include "x264_dynamic.h" @@ -76,6 +77,9 @@ private: void init_x264(); void encode_frame(QueuedFrame qf); + // bitrate_kbit can be 0 for no change. + static void speed_control_override_func(unsigned bitrate_kbit, movit::YCbCrLumaCoefficients coefficients, x264_param_t *param); + // One big memory chunk of all 50 (or whatever) frames, allocated in // the constructor. All data functions just use pointers into this // pool. @@ -94,8 +98,6 @@ private: x264_t *x264; std::unique_ptr speed_control; - std::function bitrate_override_func; - std::atomic new_bitrate_kbit{0}; // 0 for no change. // Protects everything below it. @@ -114,14 +116,6 @@ private: // Key is the pts of the frame. std::unordered_map frames_being_encoded; - - // Metrics. - std::atomic metric_x264_queued_frames{0}; - std::atomic metric_x264_max_queued_frames{X264_QUEUE_LENGTH}; - std::atomic metric_x264_dropped_frames{0}; - std::atomic metric_x264_output_frames_i{0}; - std::atomic metric_x264_output_frames_p{0}; - std::atomic metric_x264_output_frames_b{0}; }; #endif // !defined(_X264ENCODE_H)