int cc = pkt[3] & 0xf;
if (has_payload) {
int last_cc = ccs[pid];
- if (!silence && cc != ((last_cc + 1) & 0xf)) {
- printf("Pid %d discontinuity (expected %d, got %d)\n", pid, (last_cc + 1) & 0xf, cc);
+ if (cc != ((last_cc + 1) & 0xf)) {
+ if (!silence) {
+ printf("Pid %d discontinuity (expected %d, got %d)\n", pid, (last_cc + 1) & 0xf, cc);
+ }
+ ++num_ts_discontinuities;
}
ccs[pid] = cc;
}
int get_reorders() const { return num_reorders; }
int get_lost_packets() const { return num_lost_packets; }
+ int get_ts_discontinuities() const { return num_ts_discontinuities; }
private:
void check_ts_discontinuity(uint16_t proto, const std::string &data, bool silence);
std::priority_queue<GREPacket, std::vector<GREPacket>, std::greater<GREPacket>> packet_buffer;
std::map<int, int> ccs;
- int num_reorders = 0, num_lost_packets = 0;
+ int num_reorders = 0, num_lost_packets = 0, num_ts_discontinuities = 0;
};
#endif // !defined(_REORDERER_H)
int last_rcvd = 0, last_reorders = 0;
int last_fec_recovered = 0, last_lost = 0;
- int last_output = 0;
+ int last_output = 0, last_ts_discontinuities = 0;
int last_sent = 0;
timeval last_print;
gettimeofday(&last_print, NULL);
int reorders = tun_reorderer.get_reorders();
int lost = tun_reorderer.get_lost_packets();
int output = tun.get_sent_packets();
+ int ts_discontinuities = tun_reorderer.get_ts_discontinuities();
int sent = gre.get_sent_packets();
- fprintf(stderr, "%5dp rcvd, %3dp FEC recovered, %4d reorders, %3dp lost, %5dp output. %5dp sent\n",
+ fprintf(stderr, "%5dp rcvd, %3dp FEC recovered, %4d reorders, %3dp lost, %5dp output, %3d TS discontinuities. %5dp sent\n",
rcvd - last_rcvd, fec_recovered - last_fec_recovered,
reorders - last_reorders, lost - last_lost,
- output - last_output, sent - last_sent);
+ output - last_output,
+ ts_discontinuities - last_ts_discontinuities,
+ sent - last_sent);
last_rcvd = rcvd;
last_fec_recovered = fec_recovered;
last_reorders = reorders;
last_lost = lost;
last_output = output;
+ last_ts_discontinuities = ts_discontinuities;
last_sent = sent;
last_print = now;
}