Ticket #1189: ticket-1189.patch

File ticket-1189.patch, 2.1 KB (added by bennylp, 13 years ago)
  • pjmedia/src/pjmedia/jbuf.c

     
    758758        /* Calculating discard interval (aggressiveness) based on 
    759759         * (current size / burst level). 
    760760         */ 
    761         if (jb->jb_status == JB_STATUS_PROCESSING) { 
     761        if (cur_size >= 0 && jb->jb_status == JB_STATUS_PROCESSING) { 
    762762            burst_level = PJ_MAX(jb->jb_eff_level, jb->jb_level); 
    763763            burst_factor = cur_size / burst_level; 
    764764            /* Tolerate small spikes */ 
     
    791791         * from the last frame discarded. 
    792792         */ 
    793793        seq_delta = (pj_uint16_t)(frame_seq - jb->jb_last_discard_seq); 
    794         if ((0 != interval) && (seq_delta >= interval)) { 
    795             frame_type = PJMEDIA_JB_DISCARDED_FRAME; 
    796             jb->jb_last_discard_seq = frame_seq; 
     794        if (interval != 0) { 
     795            if (seq_delta >= interval) { 
     796                frame_type = PJMEDIA_JB_DISCARDED_FRAME; 
     797                jb->jb_last_discard_seq = frame_seq; 
    797798 
    798             TRACE__((jb->jb_name.ptr,  
    799                     "Discarding frame #%d: eff=%d disc=%d orig:%d" 
    800                     " seq_delta:%d", 
    801                     frame_seq, 
    802                     cur_size, 
    803                     jb_framelist_size(&jb->jb_framelist) - cur_size, 
    804                     jb_framelist_origin(&jb->jb_framelist), 
    805                     (int)seq_delta)); 
     799                TRACE__((jb->jb_name.ptr, 
     800                        "Discarding frame #%d: eff=%d disc=%d orig:%d" 
     801                        " seq_delta:%d bf:%d", 
     802                        frame_seq, 
     803                        cur_size, 
     804                        jb_framelist_size(&jb->jb_framelist) - cur_size, 
     805                        jb_framelist_origin(&jb->jb_framelist), 
     806                        (int)seq_delta, burst_factor)); 
     807            } else if (seq_delta == 1) { 
     808                frame_type = PJMEDIA_JB_ZERO_EMPTY_FRAME; 
     809                //jb->jb_last_discard_seq = frame_seq; 
     810 
     811                TRACE__((jb->jb_name.ptr, 
     812                        "Concealing Discarded frame #%d: eff=%d disc=%d" 
     813                        " orig:%d seq_delta:%d b:%d", 
     814                        frame_seq, 
     815                        cur_size, 
     816                        jb_framelist_size(&jb->jb_framelist) - cur_size, 
     817                        jb_framelist_origin(&jb->jb_framelist), 
     818                        (int)seq_delta, burst_factor)); 
     819            } 
    806820        } 
    807821    } 
    808822#endif /* PROGRESSIVE_DISCARD */ 
    809      
    810823 
     824 
    811825    /* Attempt to store the frame */ 
    812826    min_frame_size = PJ_MIN(frame_size, jb->jb_frame_size); 
    813827    status = jb_framelist_put_at(&jb->jb_framelist, frame_seq, frame,