|
|
@ -198,7 +198,7 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal |
|
|
json_builder_begin_object(json); |
|
|
json_builder_begin_object(json); |
|
|
|
|
|
|
|
|
// copy out values |
|
|
// copy out values |
|
|
uint64_t packets, octets, packets_lost, duplicates; |
|
|
|
|
|
|
|
|
int64_t packets, octets, packets_lost, duplicates; |
|
|
packets = atomic64_get(&ssrc->packets); |
|
|
packets = atomic64_get(&ssrc->packets); |
|
|
octets = atomic64_get(&ssrc->octets); |
|
|
octets = atomic64_get(&ssrc->octets); |
|
|
packets_lost = sc->packets_lost; |
|
|
packets_lost = sc->packets_lost; |
|
|
@ -206,7 +206,8 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal |
|
|
|
|
|
|
|
|
// process per-second stats |
|
|
// process per-second stats |
|
|
uint64_t cur_ts = ssrc_timeval_to_ts(&rtpe_now); |
|
|
uint64_t cur_ts = ssrc_timeval_to_ts(&rtpe_now); |
|
|
uint64_t last_sample, sample_packets, sample_octets, sample_packets_lost, sample_duplicates; |
|
|
|
|
|
|
|
|
uint64_t last_sample; |
|
|
|
|
|
int64_t sample_packets, sample_octets, sample_packets_lost, sample_duplicates; |
|
|
|
|
|
|
|
|
// sample values |
|
|
// sample values |
|
|
last_sample = atomic64_get_set(&ssrc->last_sample, cur_ts); |
|
|
last_sample = atomic64_get_set(&ssrc->last_sample, cur_ts); |
|
|
@ -230,7 +231,7 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal |
|
|
if (last_sample && last_sample != cur_ts) { |
|
|
if (last_sample && last_sample != cur_ts) { |
|
|
// calc sample rates with primitive math |
|
|
// calc sample rates with primitive math |
|
|
struct timeval last_sample_ts = ssrc_ts_to_timeval(last_sample); |
|
|
struct timeval last_sample_ts = ssrc_ts_to_timeval(last_sample); |
|
|
uint64_t usecs_diff = timeval_diff(&rtpe_now, &last_sample_ts); |
|
|
|
|
|
|
|
|
double usecs_diff = (double) timeval_diff(&rtpe_now, &last_sample_ts); |
|
|
|
|
|
|
|
|
// adjust samples |
|
|
// adjust samples |
|
|
packets -= sample_packets; |
|
|
packets -= sample_packets; |
|
|
@ -239,16 +240,16 @@ static void mqtt_ssrc_stats(struct ssrc_ctx *ssrc, JsonBuilder *json, struct cal |
|
|
duplicates -= sample_duplicates; |
|
|
duplicates -= sample_duplicates; |
|
|
|
|
|
|
|
|
json_builder_set_member_name(json, "packets_per_second"); |
|
|
json_builder_set_member_name(json, "packets_per_second"); |
|
|
json_builder_add_double_value(json, (double) packets * 1000000.0 / (double) usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_add_double_value(json, (double) packets * 1000000.0 / usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_set_member_name(json, "bytes_per_second"); |
|
|
json_builder_set_member_name(json, "bytes_per_second"); |
|
|
json_builder_add_double_value(json, (double) octets * 1000000.0 / (double) usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_add_double_value(json, (double) octets * 1000000.0 / usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_set_member_name(json, "lost_per_second"); |
|
|
json_builder_set_member_name(json, "lost_per_second"); |
|
|
json_builder_add_double_value(json, (double) packets_lost * 1000000.0 / (double) usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_add_double_value(json, (double) packets_lost * 1000000.0 / usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_set_member_name(json, "duplicates_per_second"); |
|
|
json_builder_set_member_name(json, "duplicates_per_second"); |
|
|
json_builder_add_double_value(json, (double) duplicates * 1000000.0 / (double) usecs_diff); |
|
|
|
|
|
|
|
|
json_builder_add_double_value(json, (double) duplicates * 1000000.0 / usecs_diff); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
mutex_lock(&sc->h.lock); |
|
|
mutex_lock(&sc->h.lock); |
|
|
|