Changes between Initial Version and Version 1 of JBuf_Spec

Apr 1, 2009 9:53:27 AM (13 years ago)



  • JBuf_Spec

    v1 v1  
     3<!-- MAIN TABLE START --> 
     4<table border=0 width="90%" align="center"><tr><td> 
     7= Jitter Buffer Specification = 
     9'''Table of Contents''' 
     12This short article describes the specification for the jitter buffer. 
     16== Specifications == 
     18=== Continuous flow === 
     20The main function of a jitter buffer is to ensure that it's user receive as continuous as possible flow of incoming frames regardless of the jitter in the incoming packet arrival time. The jitter buffer MUST provide this function. 
     22=== Adaptive to jitter change === 
     24The jitter buffer MUST be able to adapt to change in network jitter, increasing or decreasing the prefetch value as necessary. 
     26=== Low latency === 
     28The jitter buffer MUST attempt to provide the minimum buffering possible on the incoming packet (without sacrificing the continuous flow requirement above), to minimize latency. 
     30=== Duplicate/old frame === 
     32The jitter buffer MUST be able to detect the arrival of duplicate or old frame. 
     34A duplicate frame is a frame which has the same frame number of an existing frame in it's buffer. In this case, the handling depends on the value of ''discarded'' argument in {{{pjmedia_jbuf_put_frame2()}}} function: 
     35 - if non-zero (TRUE), jitter buffer MUST ignore the duplicate frame and set the ''discarded'' argument of {{{pjmedia_jbuf_put_frame2()}}}. 
     36 - if FALSE, the jitter buffer will override the old frame with this newer frame. 
     38An old frame is a frame which sequence number is older than what is currently "played" (returned by the jitter buffer to it's user). Old frame is always discarded, and ''discarded'' argument of {{{pjmedia_jbuf_put_frame2()}}} function will be set. 
     41=== Non octet-aligned === 
     43The jitter buffer MUST be able to store frames that are not octet/byte aligned. 
     45=== Sequence number jump/restart === 
     47The jitter buffer MUST be able to detect large jump in sequence number and restart it's state. 
     49=== DTX === 
     51The jitter buffer MUST be able to handle discontinuous transmission (DTX) without triggering restart. Note that user MAY use RTP timestamp or sequence number as frame sequence number of the jitter buffer frames, hence DTX MAY or MAY NOT be reflected with a jump in the frame sequence number. 
     57<!-- MAIN TABLE END -->