FreeCalypso > hg > themwi-rtp-lib
comparison include/twjit.h @ 9:117fa99ff871
twjit: implement proper analytics
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Fri, 05 Jul 2024 23:49:37 +0000 |
| parents | 95f6c8ce33b0 |
| children | 4f82b9c07ddb |
comparison
equal
deleted
inserted
replaced
| 8:95f6c8ce33b0 | 9:117fa99ff871 |
|---|---|
| 51 uint32_t intentional_gaps; | 51 uint32_t intentional_gaps; |
| 52 uint32_t ts_resets; | 52 uint32_t ts_resets; |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 /* | 55 /* |
| 56 * Info collected from the incoming RTP data stream | |
| 57 * for the purpose of generating RTCP reception report blocks. | |
| 58 */ | |
| 59 struct twrtp_jibuf_rr_info { | |
| 60 uint32_t rx_packets; | |
| 61 uint32_t base_seq; | |
| 62 uint32_t max_seq_ext; | |
| 63 uint32_t expected_pkt; | |
| 64 uint32_t jitter_accum; | |
| 65 }; | |
| 66 | |
| 67 /* | |
| 56 * Each twjit instance has two sub-buffers; each subbuf is a queue of | 68 * Each twjit instance has two sub-buffers; each subbuf is a queue of |
| 57 * received RTP packets that have the same SSRC and whose timestamps | 69 * received RTP packets that have the same SSRC and whose timestamps |
| 58 * increment in the expected cadence, with each ts delta being an | 70 * increment in the expected cadence, with each ts delta being an |
| 59 * integral multiple of the samples-per-quantum constant. | 71 * integral multiple of the samples-per-quantum constant. |
| 60 */ | 72 */ |
| 61 struct twrtp_jibuf_sub { | 73 struct twrtp_jibuf_sub { |
| 62 uint32_t ssrc; | 74 uint32_t ssrc; |
| 63 uint32_t head_ts; | 75 uint32_t head_ts; |
| 64 struct llist_head queue; | 76 struct llist_head queue; |
| 65 uint32_t depth; | 77 uint32_t depth; |
| 66 /* last packet arrival time, used only in starting state */ | 78 uint32_t delta_ms; /* used only in starting state */ |
| 67 struct timeval last_arrival; | |
| 68 uint32_t delta_ms; | |
| 69 /* thinning mechanism */ | 79 /* thinning mechanism */ |
| 70 uint16_t drop_int_count; | 80 uint16_t drop_int_count; |
| 71 /* running config for this subbuf */ | 81 /* running config for this subbuf */ |
| 72 struct twrtp_jibuf_config conf; | 82 struct twrtp_jibuf_config conf; |
| 73 }; | 83 }; |
| 99 /* operational state */ | 109 /* operational state */ |
| 100 enum twrtp_jibuf_state state; | 110 enum twrtp_jibuf_state state; |
| 101 struct twrtp_jibuf_sub sb[2]; | 111 struct twrtp_jibuf_sub sb[2]; |
| 102 uint8_t read_sb; /* 0 or 1 */ | 112 uint8_t read_sb; /* 0 or 1 */ |
| 103 uint8_t write_sb; /* ditto */ | 113 uint8_t write_sb; /* ditto */ |
| 104 /* Rx packet stream analysis */ | 114 /* info about the most recent Rx packet */ |
| 105 uint32_t last_ssrc; | 115 uint32_t last_ssrc; |
| 106 uint32_t last_ts; | 116 uint32_t last_ts; |
| 107 uint16_t last_seq; | 117 uint16_t last_seq; |
| 108 bool got_first_packet; | 118 bool got_first_packet; |
| 119 struct timespec last_arrival; | |
| 120 uint32_t last_arrival_delta; | |
| 121 /* analytics for RTCP RR */ | |
| 122 struct twrtp_jibuf_rr_info rr_info; | |
| 109 /* stats over lifetime of this instance */ | 123 /* stats over lifetime of this instance */ |
| 110 struct twrtp_jibuf_stats stats; | 124 struct twrtp_jibuf_stats stats; |
| 111 }; | 125 }; |
| 112 | 126 |
| 113 /* twjit module API functions */ | 127 /* twjit module API functions */ |
