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:
Benny Prijono 2006-04-09 17:12:05 +00:00
parent e21e784674
commit 903c99d74f
2 changed files with 24 additions and 0 deletions

View File

@ -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) */

View File

@ -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;