2 #define _SRT_METRICS_H 1
9 // Metrics related to an SRT stream (input or output).
12 std::atomic<double> metric_srt_uptime_seconds{0.0 / 0.0};
13 std::atomic<double> metric_srt_send_duration_seconds{0.0 / 0.0};
14 std::atomic<int64_t> metric_srt_sent_bytes{-1};
15 std::atomic<int64_t> metric_srt_received_bytes{-1};
16 std::atomic<int64_t> metric_srt_sent_packets_normal{-1};
17 std::atomic<int64_t> metric_srt_received_packets_normal{-1};
18 std::atomic<int64_t> metric_srt_sent_packets_lost{-1};
19 std::atomic<int64_t> metric_srt_received_packets_lost{-1};
20 std::atomic<int64_t> metric_srt_sent_packets_retransmitted{-1};
21 std::atomic<int64_t> metric_srt_sent_bytes_retransmitted{-1};
22 std::atomic<int64_t> metric_srt_sent_packets_ack{-1};
23 std::atomic<int64_t> metric_srt_received_packets_ack{-1};
24 std::atomic<int64_t> metric_srt_sent_packets_nak{-1};
25 std::atomic<int64_t> metric_srt_received_packets_nak{-1};
26 std::atomic<int64_t> metric_srt_sent_packets_dropped{-1};
27 std::atomic<int64_t> metric_srt_received_packets_dropped{-1};
28 std::atomic<int64_t> metric_srt_sent_bytes_dropped{-1};
29 std::atomic<int64_t> metric_srt_received_bytes_dropped{-1};
30 std::atomic<int64_t> metric_srt_received_packets_undecryptable{-1};
31 std::atomic<int64_t> metric_srt_received_bytes_undecryptable{-1};
33 std::atomic<int64_t> metric_srt_filter_received_extra_packets{-1};
34 std::atomic<int64_t> metric_srt_filter_received_rebuilt_packets{-1};
35 std::atomic<int64_t> metric_srt_filter_received_lost_packets{-1};
37 std::atomic<double> metric_srt_packet_sending_period_seconds{0.0 / 0.0};
38 std::atomic<int64_t> metric_srt_flow_window_packets{-1};
39 std::atomic<int64_t> metric_srt_congestion_window_packets{-1};
40 std::atomic<int64_t> metric_srt_flight_size_packets{-1};
41 std::atomic<double> metric_srt_rtt_seconds{0.0 / 0.0};
42 std::atomic<double> metric_srt_estimated_bandwidth_bits_per_second{0.0 / 0.0};
43 std::atomic<double> metric_srt_bandwidth_ceiling_bits_per_second{0.0 / 0.0};
44 std::atomic<int64_t> metric_srt_send_buffer_available_bytes{-1};
45 std::atomic<int64_t> metric_srt_receive_buffer_available_bytes{-1};
46 std::atomic<int64_t> metric_srt_mss_bytes{-1};
47 std::atomic<int64_t> metric_srt_sender_unacked_packets{-1};
48 std::atomic<int64_t> metric_srt_sender_unacked_bytes{-1};
49 std::atomic<double> metric_srt_sender_unacked_timespan_seconds{0.0 / 0.0};
50 std::atomic<double> metric_srt_sender_delivery_delay_seconds{0.0 / 0.0};
51 std::atomic<int64_t> metric_srt_receiver_unacked_packets{-1};
52 std::atomic<int64_t> metric_srt_receiver_unacked_bytes{-1};
53 std::atomic<double> metric_srt_receiver_unacked_timespan_seconds{0.0 / 0.0};
54 std::atomic<double> metric_srt_receiver_delivery_delay_seconds{0.0 / 0.0};
55 std::atomic<int64_t> metric_srt_filter_sent_packets{-1};
57 // Registers in global_metrics.
58 void init(const std::vector<std::pair<std::string, std::string>> &labels);
60 // Unregisters similarly.
61 void deinit(const std::vector<std::pair<std::string, std::string>> &labels);
63 void update_srt_stats(int srt_sock);