Changeset 1961 for pjproject/trunk/pjmedia/src/pjmedia/rtcp.c
- Timestamp:
- May 17, 2008 2:54:18 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/rtcp.c
r1942 r1961 167 167 pj_get_timestamp_freq(&sess->ts_freq); 168 168 169 /* Initialize statistics states */ 170 pj_math_stat_init(&sess->stat.rtt); 171 pj_math_stat_init(&sess->stat.rx.loss_period); 172 pj_math_stat_init(&sess->stat.rx.jitter); 173 pj_math_stat_init(&sess->stat.tx.loss_period); 174 pj_math_stat_init(&sess->stat.tx.jitter); 175 169 176 /* RR will be initialized on receipt of the first RTP packet. */ 170 177 } … … 275 282 276 283 /* Update loss period stat */ 277 if (sess->stat.rx.loss_period.count == 0 || 278 period < sess->stat.rx.loss_period.min) 279 { 280 sess->stat.rx.loss_period.min = period; 281 } 282 if (period > sess->stat.rx.loss_period.max) 283 sess->stat.rx.loss_period.max = period; 284 sess->stat.rx.loss_period.avg = 285 (sess->stat.rx.loss_period.avg * sess->stat.rx.loss_period.count + 286 period) / (sess->stat.rx.loss_period.count + 1); 287 sess->stat.rx.loss_period.last = period; 288 ++sess->stat.rx.loss_period.count; 284 pj_math_stat_update(&sess->stat.rx.loss_period, period); 289 285 } 290 286 … … 330 326 } 331 327 332 /* Add to average */333 sess->avg_jitter =334 (jitter + sess->avg_jitter * sess->stat.rx.jitter.count) /335 (sess->stat.rx.jitter.count + 1);336 sess->stat.rx.jitter.avg = (unsigned)sess->avg_jitter;337 ++sess->stat.rx.jitter.count;338 339 328 /* Update jitter stat */ 340 if (jitter < sess->stat.rx.jitter.min) 341 sess->stat.rx.jitter.min = jitter; 342 if (jitter > sess->stat.rx.jitter.max) 343 sess->stat.rx.jitter.max = jitter; 344 345 sess->stat.rx.jitter.last = jitter; 329 pj_math_stat_update(&sess->stat.rx.jitter, jitter); 346 330 347 331 #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) … … 464 448 period *= 1000; 465 449 466 if (sess->stat.tx.update_cnt==0||sess->stat.tx.loss_period.min==0) 467 sess->stat.tx.loss_period.min = period; 468 if (period < sess->stat.tx.loss_period.min) 469 sess->stat.tx.loss_period.min = period; 470 if (period > sess->stat.tx.loss_period.max) 471 sess->stat.tx.loss_period.max = period; 472 473 sess->stat.tx.loss_period.avg = 474 (sess->stat.tx.loss_period.avg*sess->stat.tx.update_cnt+period) 475 / (sess->stat.tx.update_cnt + 1); 476 sess->stat.tx.loss_period.last = period; 450 /* Update loss period stat */ 451 pj_math_stat_update(&sess->stat.tx.loss_period, period); 477 452 } 478 453 … … 488 463 489 464 /* Update jitter statistics */ 490 if (sess->stat.tx.jitter.count == 0) 491 sess->stat.tx.jitter.min = jitter; 492 if (jitter < sess->stat.tx.jitter.min && jitter) 493 sess->stat.tx.jitter.min = jitter; 494 if (jitter > sess->stat.tx.jitter.max) 495 sess->stat.tx.jitter.max = jitter; 496 sess->stat.tx.jitter.avg = 497 (sess->stat.tx.jitter.avg * sess->stat.tx.jitter.count + jitter) / 498 (sess->stat.tx.jitter.count + 1); 499 ++sess->stat.tx.jitter.count; 500 sess->stat.tx.jitter.last = jitter; 501 465 pj_math_stat_update(&sess->stat.tx.jitter, jitter); 502 466 503 467 /* Can only calculate if LSR and DLSR is present in RR */ … … 553 517 } 554 518 555 if (sess->stat.rtt_update_cnt == 0)556 sess->stat.rtt.min = rtt;557 558 519 /* "Normalize" rtt value that is exceptionally high. 559 520 * For such values, "normalize" the rtt to be three times 560 521 * the average value. 561 522 */ 562 if (rtt > (sess->stat.rtt.avg*3) && sess->stat.rtt_update_cnt!=0) { 523 if (rtt > ((unsigned)sess->stat.rtt.mean*3) && sess->stat.rtt.n!=0) 524 { 563 525 unsigned orig_rtt = rtt; 564 rtt = sess->stat.rtt. avg*3;526 rtt = sess->stat.rtt.mean*3; 565 527 PJ_LOG(5,(sess->name, 566 528 "RTT value %d usec is normalized to %d usec", … … 570 532 TRACE_((sess->name, "RTCP RTT is set to %d usec", rtt)); 571 533 572 if (rtt < sess->stat.rtt.min && rtt) 573 sess->stat.rtt.min = rtt; 574 if (rtt > sess->stat.rtt.max) 575 sess->stat.rtt.max = rtt; 576 577 sess->stat.rtt.avg = 578 (sess->stat.rtt.avg * sess->stat.rtt_update_cnt + rtt) / 579 (sess->stat.rtt_update_cnt + 1); 580 581 sess->stat.rtt.last = rtt; 582 sess->stat.rtt_update_cnt++; 534 /* Update RTT stat */ 535 pj_math_stat_update(&sess->stat.rtt, rtt); 583 536 584 537 } else {
Note: See TracChangeset
for help on using the changeset viewer.