+void LatencyHistogram::init(const string &measuring_point)
+{
+ histogram_lowest_latency_input.init_geometric(0.001, 10.0, 30);
+ histogram_highest_latency_input.init_geometric(0.001, 10.0, 30);
+ histogram_lowest_latency_input_bframe.init_geometric(0.001, 10.0, 30);
+ histogram_highest_latency_input_bframe.init_geometric(0.001, 10.0, 30);
+
+ global_metrics.add("latency_seconds",
+ {{ "measuring_point", measuring_point }, { "input", "lowest_latency" }, { "frame_type", "i/p" }},
+ &histogram_lowest_latency_input);
+ global_metrics.add("latency_seconds",
+ {{ "measuring_point", measuring_point }, { "input", "highest_latency" }, { "frame_type", "i/p" }},
+ &histogram_highest_latency_input);
+ global_metrics.add("latency_seconds",
+ {{ "measuring_point", measuring_point }, { "input", "lowest_latency" }, { "frame_type", "b" }},
+ &histogram_lowest_latency_input_bframe);
+ global_metrics.add("latency_seconds",
+ {{ "measuring_point", measuring_point }, { "input", "highest_latency" }, { "frame_type", "b" }},
+ &histogram_highest_latency_input_bframe);
+}
+
+void print_latency(const string &header, const ReceivedTimestamps &received_ts, bool is_b_frame, int *frameno, LatencyHistogram *histogram)