Changeset 1961


Ignore:
Timestamp:
May 17, 2008 2:54:18 PM (16 years ago)
Author:
nanang
Message:

More on ticket #535: updated files using and related to math.h

Location:
pjproject/trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjlib/include/pjlib.h

    r1953 r1961  
    4343#include <pj/lock.h> 
    4444#include <pj/log.h> 
     45#include <pj/math.h> 
    4546#include <pj/os.h> 
    4647#include <pj/pool.h> 
  • pjproject/trunk/pjmedia/include/pjmedia/jbuf.h

    r1942 r1961  
    7777    unsigned    max_prefetch;       /**< Maximum allowed prefetch, in frms. */ 
    7878    unsigned    size;               /**< Current buffer size, in frames.    */ 
    79     unsigned    max_size;           /**< Maximum size ever.                 */ 
     79    unsigned    avg_delay;          /**< Average delay, in ms.              */ 
     80    unsigned    min_delay;          /**< Minimum delay, in ms.              */ 
     81    unsigned    max_delay;          /**< Maximum delay, in ms.              */ 
     82    unsigned    dev_delay;          /**< Standard deviation of delay, in ms. */ 
    8083}; 
    8184 
  • pjproject/trunk/pjmedia/include/pjmedia/rtcp.h

    r1942 r1961  
    2828#include <pjmedia/rtcp_xr.h> 
    2929#include <pjmedia/rtp.h> 
    30  
    3130 
    3231PJ_BEGIN_DECL 
     
    181180    unsigned        dup;        /**< Total number of duplicates packets     */ 
    182181 
    183     struct { 
    184         unsigned    count;      /**< Number of period samples(to calc avg)  */ 
    185         unsigned    min;        /**< Minimum loss period (in usec)          */ 
    186         unsigned    avg;        /**< Average loss period (in usec)          */ 
    187         unsigned    max;        /**< Maximum loss period (in usec)          */ 
    188         unsigned    last;       /**< Last loss period (in usec)             */ 
    189     } loss_period;              /**< Lost period history.                   */ 
     182    pj_math_stat    loss_period;/**< Loss period statistics (in usec)       */ 
    190183 
    191184    struct { 
     
    194187    } loss_type;                /**< Types of loss detected.                */ 
    195188 
    196     struct { 
    197         unsigned    count;      /**< Number of updates.                     */ 
    198         unsigned    min;        /**< Minimum jitter (in usec)               */ 
    199         unsigned    avg;        /**< Average jitter (in usec)               */ 
    200         unsigned    max;        /**< Maximum jitter (in usec)               */ 
    201         unsigned    last;       /**< Last jitter (in usec)                  */ 
    202     } jitter;                   /**< Jitter history.                        */ 
     189    pj_math_stat    jitter;     /**< Jitter statistics (in usec)            */ 
    203190}; 
    204191 
     
    221208    pjmedia_rtcp_stream_stat rx;    /**< Decoder stream statistics.         */ 
    222209     
    223     struct { 
    224         unsigned    min;            /**< Minimum round-trip delay (in usec) */ 
    225         unsigned    avg;            /**< Average round-trip delay (in usec) */ 
    226         unsigned    max;            /**< Maximum round-trip delay (in usec) */ 
    227         unsigned    last;           /**< Last round-trip delay (in usec)    */ 
    228     } rtt;                          /**< Round trip delay history.          */ 
    229  
    230     unsigned        rtt_update_cnt; /**< Nb of times rtt is updated.        */ 
     210    pj_math_stat             rtt;   /**< Round trip delay statistic(in usec)*/ 
    231211}; 
    232212 
  • pjproject/trunk/pjmedia/include/pjmedia/rtcp_xr.h

    r1943 r1961  
    2626 
    2727#include <pjmedia/types.h> 
     28#include <pj/math.h> 
    2829 
    2930 
     
    247248        unsigned            lost;       /**< Number of packets lost         */ 
    248249        unsigned            dup;        /**< Number of duplicated packets   */ 
    249          
    250         struct { 
    251             unsigned        min;        /**< Minimum jitter (in usec)       */ 
    252             unsigned        max;        /**< Maximum jitter (in usec)       */ 
    253             unsigned        dev;        /**< Jitter deviation (in usec)     */ 
    254             unsigned        mean;       /**< Average jitter (in usec)       */ 
    255             unsigned        count;      /**< Update count                   */ 
    256         } jitter;                       /**< Jitter history.                */ 
    257  
    258         struct { 
    259             unsigned        min;        /**< Minimum ToH                    */ 
    260             unsigned        max;        /**< Maximum ToH                    */ 
    261             unsigned        dev;        /**< ToH deviation                  */ 
    262             unsigned        mean;       /**< Average ToH                    */ 
    263             unsigned        count;      /**< Update count                   */ 
    264         } toh;                          /**< TTL of hop limit history.      */ 
     250        pj_math_stat        jitter;     /**< Jitter statistics (in usec)    */ 
     251        pj_math_stat        toh;        /**< TTL of hop limit statistics.   */ 
    265252    } stat_sum; 
    266253 
     
    301288typedef struct pjmedia_rtcp_xr_stat 
    302289{ 
    303     pjmedia_rtcp_xr_stream_stat  rx; 
    304     pjmedia_rtcp_xr_stream_stat  tx; 
    305  
    306     /* RTT calculated from receiver side */ 
    307     struct { 
    308         unsigned    min;            /**< Minimum round-trip delay (in usec) */ 
    309         unsigned    avg;            /**< Average round-trip delay (in usec) */ 
    310         unsigned    max;            /**< Maximum round-trip delay (in usec) */ 
    311         unsigned    last;           /**< Last round-trip delay (in usec)    */ 
    312         unsigned    update_cnt;     /**< Nb of times rtt is updated.        */ 
    313     } rtt;                          /**< Round trip delay history.          */ 
    314  
     290    pjmedia_rtcp_xr_stream_stat  rx;  /**< Decoding direction statistics.   */ 
     291    pjmedia_rtcp_xr_stream_stat  tx;  /**< Encoding direction statistics.   */ 
     292    pj_math_stat                 rtt; /**< Round-trip delay stat (in usec)  
     293                                           the value is calculated from  
     294                                           receiver side.                   */ 
    315295} pjmedia_rtcp_xr_stat; 
    316296 
  • pjproject/trunk/pjmedia/src/pjmedia/jbuf.c

    r1942 r1961  
    2525#include <pj/assert.h> 
    2626#include <pj/log.h> 
     27#include <pj/math.h> 
    2728#include <pj/string.h> 
    2829 
     
    6768    int             jb_max_prefetch;      // Maximum allowable prefetch 
    6869    int             jb_status;            // status is 'init' until the first 'put' operation 
    69  
    70     int             jb_max_size;          // Maximum frames buffered ever 
     70    pj_math_stat    jb_delay;             // Delay statistics of jitter buffer (in frame unit) 
    7171}; 
    7272 
     
    7474#define JB_STATUS_INITIALIZING  0 
    7575#define JB_STATUS_PROCESSING    1 
    76  
    77 #define PJ_ABS(x)       ((x > 0) ? (x) : -(x)) 
    78 #define PJ_MAX(x, y)    ((x > y) ? (x) : (y)) 
    79 #define PJ_MIN(x, y)    ((x < y) ? (x) : (y)) 
    80  
    8176 
    8277/* Enabling this would log the jitter buffer state about once per  
     
    314309    jb->jb_max_count     = max_count; 
    315310 
     311    pj_math_stat_init(&jb->jb_delay); 
     312 
    316313    *p_jb = jb; 
    317314    return PJ_SUCCESS; 
     
    369366    jb->jb_status        = JB_STATUS_INITIALIZING; 
    370367    jb->jb_max_hist_level = 0; 
    371     jb->jb_max_size      = 0; 
    372368 
    373369    jb_framelist_remove_head(&jb->jb_framelist,  
    374370                             jb_framelist_size(&jb->jb_framelist)); 
     371 
     372    pj_math_stat_init(&jb->jb_delay); 
     373     
    375374    return PJ_SUCCESS; 
    376375} 
     
    389388    /* Update jb_max_size */ 
    390389    cur_size = jb_framelist_size(&jb->jb_framelist); 
    391     if (cur_size > jb->jb_max_size) 
    392         jb->jb_max_size = cur_size; 
    393390 
    394391    /* Only apply burst-level calculation on PUT operation since if VAD is  
     
    457454        jb_framelist_remove_head(&jb->jb_framelist, diff); 
    458455 
     456        pj_math_stat_update(&jb->jb_delay, cur_size - diff); 
     457 
    459458        TRACE__((jb->name.ptr,  
    460459                 "JB shrinking %d frame(s), size=%d", diff, 
    461460                 jb_framelist_size(&jb->jb_framelist))); 
     461    } else { 
     462        pj_math_stat_update(&jb->jb_delay, cur_size); 
    462463    } 
    463464 
     
    612613    state->max_prefetch = jb->jb_max_prefetch; 
    613614    state->size = jb_framelist_size(&jb->jb_framelist); 
    614     state->max_size = jb->jb_max_size; 
     615    state->avg_delay = jb->jb_delay.mean * jb->jb_frame_ptime; 
     616    state->min_delay = jb->jb_delay.min * jb->jb_frame_ptime; 
     617    state->max_delay = jb->jb_delay.max * jb->jb_frame_ptime; 
     618    state->dev_delay = pj_math_stat_get_stddev(&jb->jb_delay) *  
     619                       jb->jb_frame_ptime; 
    615620 
    616621    return PJ_SUCCESS; 
    617622} 
    618  
  • pjproject/trunk/pjmedia/src/pjmedia/rtcp.c

    r1942 r1961  
    167167    pj_get_timestamp_freq(&sess->ts_freq); 
    168168 
     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 
    169176    /* RR will be initialized on receipt of the first RTP packet. */ 
    170177} 
     
    275282 
    276283        /* 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); 
    289285    } 
    290286 
     
    330326            } 
    331327 
    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  
    339328            /* 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); 
    346330 
    347331#if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) 
     
    464448        period *= 1000; 
    465449 
    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); 
    477452    } 
    478453 
     
    488463 
    489464    /* 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); 
    502466 
    503467    /* Can only calculate if LSR and DLSR is present in RR */ 
     
    553517            } 
    554518 
    555             if (sess->stat.rtt_update_cnt == 0) 
    556                 sess->stat.rtt.min = rtt; 
    557  
    558519            /* "Normalize" rtt value that is exceptionally high. 
    559520             * For such values, "normalize" the rtt to be three times 
    560521             * the average value. 
    561522             */ 
    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            { 
    563525                unsigned orig_rtt = rtt; 
    564                 rtt = sess->stat.rtt.avg*3; 
     526                rtt = sess->stat.rtt.mean*3; 
    565527                PJ_LOG(5,(sess->name,  
    566528                          "RTT value %d usec is normalized to %d usec", 
     
    570532            TRACE_((sess->name, "RTCP RTT is set to %d usec", rtt)); 
    571533 
    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); 
    583536 
    584537        } else { 
  • pjproject/trunk/pjmedia/src/pjmedia/rtcp_xr.c

    r1945 r1961  
    2727#include <pj/string.h> 
    2828 
    29 #if defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) 
     29#if 1 //defined(PJMEDIA_HAS_RTCP_XR) && (PJMEDIA_HAS_RTCP_XR != 0) 
    3030 
    3131#define THIS_FILE "rtcp_xr.c" 
     
    5858#   define TRACE_(x)    ; 
    5959#endif 
    60  
    61 /* Integer square root for calculating standard deviation */ 
    62 static pj_uint32_t my_isqrt(pj_uint32_t i) 
    63 { 
    64     pj_uint32_t res = 1, prev; 
    65      
    66     /* Rough guess */ 
    67     prev = i >> 2; 
    68     while (prev) { 
    69         prev >>= 2; 
    70         res <<= 1; 
    71     } 
    72  
    73     /* Babilonian method */ 
    74     do { 
    75         prev = res; 
    76         res = (prev + i/prev) >> 1; 
    77     } while ((prev+res)>>1 != res); 
    78  
    79     return res; 
    80 } 
    8160 
    8261void pjmedia_rtcp_xr_init( pjmedia_rtcp_xr_session *session,  
     
    231210            r->jitter_min = pj_htonl(sess->stat.rx.stat_sum.jitter.min); 
    232211            r->jitter_max = pj_htonl(sess->stat.rx.stat_sum.jitter.max); 
    233             r->jitter_mean = pj_htonl(sess->stat.rx.stat_sum.jitter.mean); 
    234             sess->stat.rx.stat_sum.jitter.dev =  
    235                                 my_isqrt(sess->stat.rx.stat_sum.jitter.dev); 
    236             r->jitter_dev = pj_htonl(sess->stat.rx.stat_sum.jitter.dev); 
     212            r->jitter_mean =  
     213                pj_htonl((unsigned)sess->stat.rx.stat_sum.jitter.mean); 
     214            r->jitter_dev =  
     215                pj_htonl(pj_math_stat_get_stddev(&sess->stat.rx.stat_sum.jitter)); 
    237216        } 
    238217        if (sess->stat.rx.stat_sum.t) { 
    239218            r->toh_min = sess->stat.rx.stat_sum.toh.min; 
    240219            r->toh_max = sess->stat.rx.stat_sum.toh.max; 
    241             r->toh_mean = sess->stat.rx.stat_sum.toh.mean; 
    242             sess->stat.rx.stat_sum.toh.dev =  
    243                                 my_isqrt(sess->stat.rx.stat_sum.toh.dev); 
    244             r->toh_dev = sess->stat.rx.stat_sum.toh.dev; 
     220            r->toh_mean = (unsigned) sess->stat.rx.stat_sum.toh.mean; 
     221            r->toh_dev = pj_math_stat_get_stddev(&sess->stat.rx.stat_sum.toh); 
    245222        } 
    246223 
     
    293270 
    294271        /* Calculate burst and densities. */ 
    295         if (ctotal) { 
     272        if (c11 && (c23 || c33)) { 
    296273            p32 = c32 / (c31 + c32 + c33); 
    297274            if((c22 + c23) < 1) { 
     
    518495             */ 
    519496            if (eedelay <= 30 * 1000 * 1000UL) { 
    520                 if (sess->stat.rtt.update_cnt == 0) 
    521                     sess->stat.rtt.min = rtt; 
    522  
    523497                /* "Normalize" rtt value that is exceptionally high. 
    524498                 * For such values, "normalize" the rtt to be three times 
    525499                 * the average value. 
    526500                 */ 
    527                 if (rtt>(sess->stat.rtt.avg*3) && sess->stat.rtt.update_cnt!=0) 
     501                if (rtt>((unsigned)sess->stat.rtt.mean*3) && sess->stat.rtt.n!=0) 
    528502                { 
    529503                    unsigned orig_rtt = rtt; 
    530                     rtt = sess->stat.rtt.avg*3; 
     504                    rtt = (unsigned)sess->stat.rtt.mean*3; 
    531505                    PJ_LOG(5,(sess->name,  
    532506                              "RTT value %d usec is normalized to %d usec", 
     
    535509         
    536510                TRACE_((sess->name, "RTCP RTT is set to %d usec", rtt)); 
    537  
    538                 if (rtt < sess->stat.rtt.min && rtt) 
    539                     sess->stat.rtt.min = rtt; 
    540                 if (rtt > sess->stat.rtt.max) 
    541                     sess->stat.rtt.max = rtt; 
    542  
    543                 sess->stat.rtt.avg =  
    544                     (sess->stat.rtt.avg * sess->stat.rtt.update_cnt + rtt) /  
    545                     (sess->stat.rtt.update_cnt + 1); 
    546  
    547                 sess->stat.rtt.last = rtt; 
    548                 sess->stat.rtt.update_cnt++; 
     511                pj_math_stat_update(&sess->stat.rtt, rtt); 
    549512            } 
    550513        } else { 
     
    586549            sess->stat.tx.stat_sum.jitter.min = pj_ntohl(rb_stats->jitter_min); 
    587550            sess->stat.tx.stat_sum.jitter.max = pj_ntohl(rb_stats->jitter_max); 
    588             sess->stat.tx.stat_sum.jitter.mean = pj_ntohl(rb_stats->jitter_mean); 
    589             sess->stat.tx.stat_sum.jitter.dev = pj_ntohl(rb_stats->jitter_dev); 
     551            sess->stat.tx.stat_sum.jitter.mean= pj_ntohl(rb_stats->jitter_mean); 
     552            pj_math_stat_set_stddev(&sess->stat.tx.stat_sum.jitter,  
     553                                    pj_ntohl(rb_stats->jitter_dev)); 
    590554        } 
    591555 
     
    593557            sess->stat.tx.stat_sum.toh.min = rb_stats->toh_min; 
    594558            sess->stat.tx.stat_sum.toh.max = rb_stats->toh_max; 
    595             sess->stat.tx.stat_sum.toh.mean = rb_stats->toh_mean; 
    596             sess->stat.tx.stat_sum.toh.dev = rb_stats->toh_dev; 
     559            sess->stat.tx.stat_sum.toh.mean= rb_stats->toh_mean; 
     560            pj_math_stat_set_stddev(&sess->stat.tx.stat_sum.toh,  
     561                                    pj_ntohl(rb_stats->toh_dev)); 
    597562        } 
    598563 
     
    728693 
    729694    if (jitter >= 0) { 
    730         pj_int32_t diff; 
    731  
    732695        sess->stat.rx.stat_sum.j = PJ_TRUE; 
    733         if (sess->stat.rx.stat_sum.jitter.min > (pj_uint32_t)jitter) 
    734             sess->stat.rx.stat_sum.jitter.min = jitter; 
    735         if (sess->stat.rx.stat_sum.jitter.max < (pj_uint32_t)jitter) 
    736             sess->stat.rx.stat_sum.jitter.max = jitter; 
    737         sess->stat.rx.stat_sum.jitter.mean =  
    738             (jitter + sess->stat.rx.stat_sum.jitter.mean *  
    739              sess->stat.rx.stat_sum.jitter.count) / 
    740             (sess->stat.rx.stat_sum.jitter.count + 1); 
    741  
    742         diff = sess->stat.rx.stat_sum.jitter.mean - jitter; 
    743         sess->stat.rx.stat_sum.jitter.dev = 
    744             (diff * diff + sess->stat.rx.stat_sum.jitter.dev *  
    745              sess->stat.rx.stat_sum.jitter.count) / 
    746             (sess->stat.rx.stat_sum.jitter.count + 1); 
    747  
    748         ++sess->stat.rx.stat_sum.jitter.count; 
     696        pj_math_stat_update(&sess->stat.rx.stat_sum.jitter, jitter); 
    749697    } 
    750698 
    751699    if (toh >= 0) { 
    752         pj_int32_t diff; 
    753  
    754700        sess->stat.rx.stat_sum.t = toh_ipv4? 1 : 2; 
    755  
    756         if (sess->stat.rx.stat_sum.toh.min > (pj_uint32_t)toh) 
    757             sess->stat.rx.stat_sum.toh.min = toh; 
    758         if (sess->stat.rx.stat_sum.toh.max < (pj_uint32_t)toh) 
    759             sess->stat.rx.stat_sum.toh.max = toh; 
    760         sess->stat.rx.stat_sum.toh.mean =  
    761             (toh + sess->stat.rx.stat_sum.toh.mean *  
    762              sess->stat.rx.stat_sum.toh.count) / 
    763             (sess->stat.rx.stat_sum.toh.count + 1); 
    764  
    765         diff = sess->stat.rx.stat_sum.toh.mean - toh; 
    766         sess->stat.rx.stat_sum.toh.dev = 
    767             (diff * diff + sess->stat.rx.stat_sum.toh.dev *  
    768              sess->stat.rx.stat_sum.toh.count) / 
    769             (sess->stat.rx.stat_sum.toh.count + 1); 
    770  
    771         ++sess->stat.rx.stat_sum.toh.count; 
     701        pj_math_stat_update(&sess->stat.rx.stat_sum.toh, toh); 
    772702    } 
    773703 
  • pjproject/trunk/pjmedia/src/pjmedia/stream.c

    r1945 r1961  
    501501            pjmedia_jbuf_get_state(stream->jb, &jb_state); 
    502502             
    503             i = jb_state.size * stream->codec_param.info.frm_ptime; 
     503            i = jb_state.avg_delay; 
    504504            pjmedia_rtcp_xr_update_info(&stream->rtcp.xr_session,  
    505505                                        PJMEDIA_RTCP_XR_INFO_JB_NOM, 
    506506                                        i); 
    507507 
    508             i = jb_state.max_size* stream->codec_param.info.frm_ptime; 
     508            i = jb_state.max_delay; 
    509509            pjmedia_rtcp_xr_update_info(&stream->rtcp.xr_session,  
    510510                                        PJMEDIA_RTCP_XR_INFO_JB_MAX, 
     
    16741674        pjmedia_jbuf_get_state(stream->jb, &jb_state); 
    16751675             
    1676         i = jb_state.size * stream->codec_param.info.frm_ptime; 
     1676        i = jb_state.avg_delay; 
    16771677        pjmedia_rtcp_xr_update_info(&stream->rtcp.xr_session,  
    16781678                                    PJMEDIA_RTCP_XR_INFO_JB_NOM, 
    16791679                                    i); 
    16801680 
    1681         i = jb_state.max_size* stream->codec_param.info.frm_ptime; 
     1681        i = jb_state.max_delay; 
    16821682        pjmedia_rtcp_xr_update_info(&stream->rtcp.xr_session,  
    16831683                                    PJMEDIA_RTCP_XR_INFO_JB_MAX, 
  • pjproject/trunk/pjsip-apps/src/samples/siprtp.c

    r1873 r1961  
    16601660        MIN_(min_stat.rx.jitter.min, audio->rtcp.stat.rx.jitter.min); 
    16611661        MAX_(max_stat.rx.jitter.max, audio->rtcp.stat.rx.jitter.max); 
    1662         AVG_(avg_stat.rx.jitter.avg, audio->rtcp.stat.rx.jitter.avg); 
     1662        AVG_(avg_stat.rx.jitter.mean, audio->rtcp.stat.rx.jitter.mean); 
    16631663 
    16641664 
     
    16931693        MIN_(min_stat.tx.jitter.min, audio->rtcp.stat.tx.jitter.min); 
    16941694        MAX_(max_stat.tx.jitter.max, audio->rtcp.stat.tx.jitter.max); 
    1695         AVG_(avg_stat.tx.jitter.avg, audio->rtcp.stat.tx.jitter.avg); 
     1695        AVG_(avg_stat.tx.jitter.mean, audio->rtcp.stat.tx.jitter.mean); 
    16961696 
    16971697 
     
    16991699        MIN_(min_stat.rtt.min, audio->rtcp.stat.rtt.min); 
    17001700        MAX_(max_stat.rtt.max, audio->rtcp.stat.rtt.max); 
    1701         AVG_(avg_stat.rtt.avg, audio->rtcp.stat.rtt.avg); 
     1701        AVG_(avg_stat.rtt.mean, audio->rtcp.stat.rtt.mean); 
    17021702 
    17031703        ++count; 
     
    17681768 
    17691769           min_stat.rx.jitter.min/1000.0,  
    1770            avg_stat.rx.jitter.avg/1000.0,  
     1770           avg_stat.rx.jitter.mean/1000.0,  
    17711771           max_stat.rx.jitter.max/1000.0, 
    17721772           "ms", 
     
    17991799 
    18001800           min_stat.tx.jitter.min/1000.0,  
    1801            avg_stat.tx.jitter.avg/1000.0,  
     1801           avg_stat.tx.jitter.mean/1000.0,  
    18021802           max_stat.tx.jitter.max/1000.0, 
    18031803           "ms", 
     
    18051805           /* rtt */ 
    18061806           min_stat.rtt.min/1000.0,  
    1807            avg_stat.rtt.avg/1000.0,  
     1807           avg_stat.rtt.mean/1000.0,  
    18081808           max_stat.rtt.max/1000.0, 
    18091809           "ms" 
  • pjproject/trunk/pjsip-apps/src/samples/siprtp_report.c

    r974 r1961  
    161161           "", 
    162162           audio->rtcp.stat.rx.loss_period.min / 1000.0,  
    163            audio->rtcp.stat.rx.loss_period.avg / 1000.0,  
     163           audio->rtcp.stat.rx.loss_period.mean / 1000.0,  
    164164           audio->rtcp.stat.rx.loss_period.max / 1000.0, 
    165165           audio->rtcp.stat.rx.loss_period.last / 1000.0, 
    166166           "", 
    167167           audio->rtcp.stat.rx.jitter.min / 1000.0, 
    168            audio->rtcp.stat.rx.jitter.avg / 1000.0, 
     168           audio->rtcp.stat.rx.jitter.mean / 1000.0, 
    169169           audio->rtcp.stat.rx.jitter.max / 1000.0, 
    170170           audio->rtcp.stat.rx.jitter.last / 1000.0, 
     
    205205           "", 
    206206           audio->rtcp.stat.tx.loss_period.min / 1000.0,  
    207            audio->rtcp.stat.tx.loss_period.avg / 1000.0,  
     207           audio->rtcp.stat.tx.loss_period.mean / 1000.0,  
    208208           audio->rtcp.stat.tx.loss_period.max / 1000.0, 
    209209           audio->rtcp.stat.tx.loss_period.last / 1000.0, 
    210210           "", 
    211211           audio->rtcp.stat.tx.jitter.min / 1000.0, 
    212            audio->rtcp.stat.tx.jitter.avg / 1000.0, 
     212           audio->rtcp.stat.tx.jitter.mean / 1000.0, 
    213213           audio->rtcp.stat.tx.jitter.max / 1000.0, 
    214214           audio->rtcp.stat.tx.jitter.last / 1000.0, 
     
    220220           "             RTT delay      : %7.3f %7.3f %7.3f %7.3f%s\n",  
    221221           audio->rtcp.stat.rtt.min / 1000.0, 
    222            audio->rtcp.stat.rtt.avg / 1000.0, 
     222           audio->rtcp.stat.rtt.mean / 1000.0, 
    223223           audio->rtcp.stat.rtt.max / 1000.0, 
    224224           audio->rtcp.stat.rtt.last / 1000.0, 
  • pjproject/trunk/pjsip-apps/src/samples/streamutil.c

    r1943 r1961  
    769769           "    total %s packets %sB received (%sB +IP hdr)%s\n" 
    770770           "    pkt loss=%d (%3.1f%%), dup=%d (%3.1f%%), reorder=%d (%3.1f%%)%s\n" 
    771            "          (msec)    min     avg     max     last\n" 
    772            "    loss period: %7.3f %7.3f %7.3f %7.3f%s\n" 
    773            "    jitter     : %7.3f %7.3f %7.3f %7.3f%s\n", 
     771           "          (msec)    min     avg     max     last    dev\n" 
     772           "    loss period: %7.3f %7.3f %7.3f %7.3f %7.3f%s\n" 
     773           "    jitter     : %7.3f %7.3f %7.3f %7.3f %7.3f%s\n", 
    774774           last_update, 
    775775           good_number(packets, stat.rx.pkt), 
     
    785785           "", 
    786786           stat.rx.loss_period.min / 1000.0,  
    787            stat.rx.loss_period.avg / 1000.0,  
     787           stat.rx.loss_period.mean / 1000.0,  
    788788           stat.rx.loss_period.max / 1000.0, 
    789789           stat.rx.loss_period.last / 1000.0, 
     790           pj_math_stat_get_stddev(&stat.rx.loss_period) / 1000.0, 
    790791           "", 
    791792           stat.rx.jitter.min / 1000.0, 
    792            stat.rx.jitter.avg / 1000.0, 
     793           stat.rx.jitter.mean / 1000.0, 
    793794           stat.rx.jitter.max / 1000.0, 
    794795           stat.rx.jitter.last / 1000.0, 
     796           pj_math_stat_get_stddev(&stat.rx.jitter) / 1000.0, 
    795797           "" 
    796798           ); 
     
    812814           "    total %s packets %sB sent (%sB +IP hdr)%s\n" 
    813815           "    pkt loss=%d (%3.1f%%), dup=%d (%3.1f%%), reorder=%d (%3.1f%%)%s\n" 
    814            "          (msec)    min     avg     max     last\n" 
    815            "    loss period: %7.3f %7.3f %7.3f %7.3f%s\n" 
    816            "    jitter     : %7.3f %7.3f %7.3f %7.3f%s\n", 
     816           "          (msec)    min     avg     max     last    dev\n" 
     817           "    loss period: %7.3f %7.3f %7.3f %7.3f %7.3f%s\n" 
     818           "    jitter     : %7.3f %7.3f %7.3f %7.3f %7.3f%s\n", 
    817819           last_update, 
    818820           good_number(packets, stat.tx.pkt), 
     
    828830           "", 
    829831           stat.tx.loss_period.min / 1000.0,  
    830            stat.tx.loss_period.avg / 1000.0,  
     832           stat.tx.loss_period.mean / 1000.0,  
    831833           stat.tx.loss_period.max / 1000.0, 
    832834           stat.tx.loss_period.last / 1000.0, 
     835           pj_math_stat_get_stddev(&stat.tx.loss_period) / 1000.0, 
    833836           "", 
    834837           stat.tx.jitter.min / 1000.0, 
    835            stat.tx.jitter.avg / 1000.0, 
     838           stat.tx.jitter.mean / 1000.0, 
    836839           stat.tx.jitter.max / 1000.0, 
    837840           stat.tx.jitter.last / 1000.0, 
     841           pj_math_stat_get_stddev(&stat.tx.jitter) / 1000.0, 
    838842           "" 
    839843           ); 
    840844 
    841845 
    842     printf(" RTT delay     : %7.3f %7.3f %7.3f %7.3f%s\n",  
     846    printf(" RTT delay     : %7.3f %7.3f %7.3f %7.3f %7.3f%s\n",  
    843847           stat.rtt.min / 1000.0, 
    844            stat.rtt.avg / 1000.0, 
     848           stat.rtt.mean / 1000.0, 
    845849           stat.rtt.max / 1000.0, 
    846850           stat.rtt.last / 1000.0, 
     851           pj_math_stat_get_stddev(&stat.rtt) / 1000.0, 
    847852           "" 
    848853           ); 
     
    886891            SAMPLES_TO_USEC(jmean, xr_stat.rx.stat_sum.jitter.mean,  
    887892                            port->info.clock_rate); 
    888             SAMPLES_TO_USEC(jdev, xr_stat.rx.stat_sum.jitter.dev,  
    889                             port->info.clock_rate); 
     893            SAMPLES_TO_USEC(jdev,  
     894                           pj_math_stat_get_stddev(&xr_stat.rx.stat_sum.jitter), 
     895                           port->info.clock_rate); 
    890896            sprintf(jitter, "%7.3f %7.3f %7.3f %7.3f",  
    891897                    jmin/1000.0, jmean/1000.0, jmax/1000.0, jdev/1000.0); 
     
    898904                    xr_stat.rx.stat_sum.toh.mean, 
    899905                    xr_stat.rx.stat_sum.toh.max, 
    900                     xr_stat.rx.stat_sum.toh.dev); 
     906                    pj_math_stat_get_stddev(&xr_stat.rx.stat_sum.toh)); 
    901907        } else 
    902908            sprintf(toh, "(report not available)"); 
     
    948954            SAMPLES_TO_USEC(jmean, xr_stat.tx.stat_sum.jitter.mean,  
    949955                            port->info.clock_rate); 
    950             SAMPLES_TO_USEC(jdev, xr_stat.tx.stat_sum.jitter.dev,  
    951                             port->info.clock_rate); 
     956            SAMPLES_TO_USEC(jdev,  
     957                           pj_math_stat_get_stddev(&xr_stat.tx.stat_sum.jitter), 
     958                           port->info.clock_rate); 
    952959            sprintf(jitter, "%7.3f %7.3f %7.3f %7.3f",  
    953960                    jmin/1000.0, jmean/1000.0, jmax/1000.0, jdev/1000.0); 
     
    960967                    xr_stat.tx.stat_sum.toh.mean, 
    961968                    xr_stat.tx.stat_sum.toh.max, 
    962                     xr_stat.tx.stat_sum.toh.dev); 
     969                    pj_math_stat_get_stddev(&xr_stat.rx.stat_sum.toh)); 
    963970        } else 
    964971            sprintf(toh,    "(report not available)"); 
     
    11691176 
    11701177 
    1171         /* RTT delay, need this? */ 
    1172         printf("          (msec)    min     avg     max     last\n"); 
    1173         printf(" RTT delay     : %7.3f %7.3f %7.3f %7.3f%s\n",  
     1178        /* RTT delay (by receiver side) */ 
     1179        printf("          (msec)    min     avg     max     last    dev\n"); 
     1180        printf(" RTT delay     : %7.3f %7.3f %7.3f %7.3f %7.3f%s\n",  
    11741181               xr_stat.rtt.min / 1000.0, 
    1175                xr_stat.rtt.avg / 1000.0, 
     1182               xr_stat.rtt.mean / 1000.0, 
    11761183               xr_stat.rtt.max / 1000.0, 
    11771184               xr_stat.rtt.last / 1000.0, 
     1185               pj_math_stat_get_stddev(&xr_stat.rtt) / 1000.0, 
    11781186               "" 
    11791187               ); 
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_call.c

    r1931 r1961  
    20592059               "%s        total %spkt %sB (%sB +IP hdr) @avg=%sbps/%sbps\n" 
    20602060               "%s        pkt loss=%d (%3.1f%%), dup=%d (%3.1f%%), reorder=%d (%3.1f%%)\n" 
    2061                "%s              (msec)    min     avg     max     last\n" 
    2062                "%s        loss period: %7.3f %7.3f %7.3f %7.3f\n" 
    2063                "%s        jitter     : %7.3f %7.3f %7.3f %7.3f%s", 
     2061               "%s              (msec)    min     avg     max     last    dev\n" 
     2062               "%s        loss period: %7.3f %7.3f %7.3f %7.3f %7.3f\n" 
     2063               "%s        jitter     : %7.3f %7.3f %7.3f %7.3f %7.3f%s", 
    20642064               indent, info.stream_info[i].fmt.pt, 
    20652065               last_update, 
     
    20792079               indent, indent, 
    20802080               stat.rx.loss_period.min / 1000.0,  
    2081                stat.rx.loss_period.avg / 1000.0,  
     2081               stat.rx.loss_period.mean / 1000.0,  
    20822082               stat.rx.loss_period.max / 1000.0, 
    20832083               stat.rx.loss_period.last / 1000.0, 
     2084               pj_math_stat_get_stddev(&stat.rx.loss_period) / 1000.0, 
    20842085               indent, 
    20852086               stat.rx.jitter.min / 1000.0, 
    2086                stat.rx.jitter.avg / 1000.0, 
     2087               stat.rx.jitter.mean / 1000.0, 
    20872088               stat.rx.jitter.max / 1000.0, 
    20882089               stat.rx.jitter.last / 1000.0, 
     2090               pj_math_stat_get_stddev(&stat.rx.jitter) / 1000.0, 
    20892091               "" 
    20902092               ); 
     
    21152117               "%s        total %spkt %sB (%sB +IP hdr) @avg %sbps/%sbps\n" 
    21162118               "%s        pkt loss=%d (%3.1f%%), dup=%d (%3.1f%%), reorder=%d (%3.1f%%)\n" 
    2117                "%s              (msec)    min     avg     max     last\n" 
    2118                "%s        loss period: %7.3f %7.3f %7.3f %7.3f\n" 
    2119                "%s        jitter     : %7.3f %7.3f %7.3f %7.3f%s", 
     2119               "%s              (msec)    min     avg     max     last    dev \n" 
     2120               "%s        loss period: %7.3f %7.3f %7.3f %7.3f %7.3f\n" 
     2121               "%s        jitter     : %7.3f %7.3f %7.3f %7.3f %7.3f%s", 
    21202122               indent, 
    21212123               info.stream_info[i].tx_pt, 
     
    21412143               indent, indent, 
    21422144               stat.tx.loss_period.min / 1000.0,  
    2143                stat.tx.loss_period.avg / 1000.0,  
     2145               stat.tx.loss_period.mean / 1000.0,  
    21442146               stat.tx.loss_period.max / 1000.0, 
    21452147               stat.tx.loss_period.last / 1000.0, 
     2148               pj_math_stat_get_stddev(&stat.tx.loss_period) / 1000.0, 
    21462149               indent, 
    21472150               stat.tx.jitter.min / 1000.0, 
    2148                stat.tx.jitter.avg / 1000.0, 
     2151               stat.tx.jitter.mean / 1000.0, 
    21492152               stat.tx.jitter.max / 1000.0, 
    21502153               stat.tx.jitter.last / 1000.0, 
     2154               pj_math_stat_get_stddev(&stat.tx.jitter) / 1000.0, 
    21512155               "" 
    21522156               ); 
     
    21622166 
    21632167        len = pj_ansi_snprintf(p, end-p, 
    2164                "%s    RTT msec       : %7.3f %7.3f %7.3f %7.3f",  
     2168               "%s    RTT msec       : %7.3f %7.3f %7.3f %7.3f %7.3f",  
    21652169               indent, 
    21662170               stat.rtt.min / 1000.0, 
    2167                stat.rtt.avg / 1000.0, 
     2171               stat.rtt.mean / 1000.0, 
    21682172               stat.rtt.max / 1000.0, 
    2169                stat.rtt.last / 1000.0 
     2173               stat.rtt.last / 1000.0, 
     2174               pj_math_stat_get_stddev(&stat.rtt) / 1000.0 
    21702175               ); 
    21712176        if (len < 1 || len > end-p) { 
Note: See TracChangeset for help on using the changeset viewer.