Added loss period for rx stream implementation
git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@399 74dad513-b988-da41-8d7b-12977e46ad98
This commit is contained in:
parent
e21e784674
commit
903c99d74f
|
@ -160,6 +160,7 @@ struct pjmedia_rtcp_stream_stat
|
|||
unsigned dup; /**< Number of duplicates packets */
|
||||
|
||||
struct {
|
||||
unsigned count; /**< Number of period samples(to calc avg) */
|
||||
unsigned min; /**< Minimum loss period (in usec) */
|
||||
unsigned avg; /**< Average loss period (in usec) */
|
||||
unsigned max; /**< Maximum loss period (in usec) */
|
||||
|
|
|
@ -205,6 +205,29 @@ PJ_DEF(void) pjmedia_rtcp_rx_rtp(pjmedia_rtcp_session *sess,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Calculate loss periods. */
|
||||
if (seq_st.diff > 1) {
|
||||
unsigned count = seq_st.diff - 1;
|
||||
unsigned period;
|
||||
|
||||
period = count * sess->pkt_size * 1000 / sess->clock_rate;
|
||||
period *= 1000;
|
||||
|
||||
/* Update loss period stat */
|
||||
if (sess->stat.rx.loss_period.count == 0 ||
|
||||
period < sess->stat.rx.loss_period.min)
|
||||
{
|
||||
sess->stat.rx.loss_period.min = period;
|
||||
}
|
||||
if (period > sess->stat.rx.loss_period.max)
|
||||
sess->stat.rx.loss_period.max = period;
|
||||
sess->stat.rx.loss_period.avg =
|
||||
(sess->stat.rx.loss_period.avg * sess->stat.rx.loss_period.count +
|
||||
period) / (sess->stat.rx.loss_period.count + 1);
|
||||
sess->stat.rx.loss_period.last = period;
|
||||
++sess->stat.rx.loss_period.count;
|
||||
}
|
||||
|
||||
|
||||
/* Only mark "good" packets */
|
||||
++sess->received;
|
||||
|
|
Loading…
Reference in New Issue