diff --git a/pes.c b/pes.c index dff7cc36..65918385 100644 --- a/pes.c +++ b/pes.c @@ -82,6 +82,8 @@ pes_packet_input(th_transport_t *t, th_stream_t *st, uint8_t *buf, size_t len) th_pkt_t *pkt; AVRational mpeg_tc = {1, 90000}; + avgstat_add(&st->st_rate, len, dispatch_clock); + hdr = getu8(buf, len); flags = getu8(buf, len); hlen = getu8(buf, len); diff --git a/transports.c b/transports.c index 35d60a79..18041de4 100644 --- a/transports.c +++ b/transports.c @@ -374,5 +374,7 @@ transport_add_stream(th_transport_t *t, int pid, tv_streamtype_t type) TAILQ_INIT(&st->st_durationq); TAILQ_INIT(&st->st_pktq); + avgstat_init(&st->st_rate, 10); + avgstat_init(&st->st_cc_errors, 10); return st; } diff --git a/tsdemux.c b/tsdemux.c index 384ebd9e..07b263aa 100644 --- a/tsdemux.c +++ b/tsdemux.c @@ -122,6 +122,7 @@ ts_recv_packet(th_transport_t *t, int pid, uint8_t *tsb) if(st->st_cc_valid && cc != st->st_cc) { /* Incorrect CC */ avgstat_add(&t->tht_cc_errors, 1, dispatch_clock); + avgstat_add(&st->st_cc_errors, 1, dispatch_clock); err = 1; } st->st_cc_valid = 1; diff --git a/tvhead.h b/tvhead.h index 48059c57..4b0bdc60 100644 --- a/tvhead.h +++ b/tvhead.h @@ -247,6 +247,9 @@ typedef struct th_stream { uint8_t st_cc; /* Last CC */ uint8_t st_cc_valid; /* Is CC valid at all? */ + avgstat_t st_cc_errors; + avgstat_t st_rate; + tv_streamtype_t st_type; int st_demuxer_fd; int st_index;