Ignore:
Timestamp:
Jul 15, 2010 10:18:59 AM (14 years ago)
Author:
nanang
Message:

Re #1103:

  • Updated RTCP jitter statistics calculation (in receiving direction) to use "interarrival jitter" (was using "difference D") of RFC 3550.
  • Added APIs to reset RTCP statistics.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/rtcp.c

    r3226 r3237  
    137137 
    138138/* 
     139 * Initialize bidirectional RTCP statistics. 
     140 * 
     141 */ 
     142PJ_DEF(void) pjmedia_rtcp_init_stat(pjmedia_rtcp_stat *stat) 
     143{ 
     144    pj_time_val now; 
     145 
     146    pj_assert(stat); 
     147 
     148    pj_bzero(stat, sizeof(pjmedia_rtcp_stat)); 
     149 
     150    pj_math_stat_init(&stat->rtt); 
     151    pj_math_stat_init(&stat->rx.loss_period); 
     152    pj_math_stat_init(&stat->rx.jitter); 
     153    pj_math_stat_init(&stat->tx.loss_period); 
     154    pj_math_stat_init(&stat->tx.jitter); 
     155 
     156    pj_gettimeofday(&now); 
     157    stat->start = now; 
     158} 
     159 
     160 
     161/* 
    139162 * Initialize RTCP session. 
    140163 */ 
     
    195218    pj_gettimeofday(&now); 
    196219    sess->tv_base = now; 
    197     sess->stat.start = now; 
    198220    pj_get_timestamp(&sess->ts_base); 
    199221    pj_get_timestamp_freq(&sess->ts_freq); 
     
    201223 
    202224    /* Initialize statistics states */ 
    203     pj_math_stat_init(&sess->stat.rtt); 
    204     pj_math_stat_init(&sess->stat.rx.loss_period); 
    205     pj_math_stat_init(&sess->stat.rx.jitter); 
    206     pj_math_stat_init(&sess->stat.tx.loss_period); 
    207     pj_math_stat_init(&sess->stat.tx.jitter); 
     225    pjmedia_rtcp_init_stat(&sess->stat); 
    208226 
    209227    /* RR will be initialized on receipt of the first RTP packet. */ 
     
    351369            sess->jitter += d - ((sess->jitter + 8) >> 4); 
    352370 
    353             /* Get jitter in usec */ 
    354             if (d < 4294) 
    355                 jitter = d * 1000000 / sess->clock_rate; 
     371            /* Update jitter stat */ 
     372            jitter = sess->jitter >> 4; 
     373             
     374            /* Convert jitter unit from samples to usec */ 
     375            if (jitter < 4294) 
     376                jitter = jitter * 1000000 / sess->clock_rate; 
    356377            else { 
    357                 jitter = d * 1000 / sess->clock_rate; 
     378                jitter = jitter * 1000 / sess->clock_rate; 
    358379                jitter *= 1000; 
    359380            } 
    360  
    361             /* Update jitter stat */ 
    362381            pj_math_stat_update(&sess->stat.rx.jitter, jitter); 
     382 
    363383 
    364384#if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) 
Note: See TracChangeset for help on using the changeset viewer.