- Timestamp:
- Nov 23, 2006 10:19:46 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia-codec/speex/speex_jitter.h
r628 r823 36 36 #ifndef SPEEX_JITTER_H 37 37 #define SPEEX_JITTER_H 38 /** @defgroup JitterBuffer JitterBuffer: Adaptive jitter buffer 39 * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size 40 * to maintain good quality and low latency. 41 * @{ 42 */ 38 43 39 44 #include "speex.h" … … 44 49 #endif 45 50 51 /** Generic adaptive jitter buffer state */ 46 52 struct JitterBuffer_; 47 53 54 /** Generic adaptive jitter buffer state */ 48 55 typedef struct JitterBuffer_ JitterBuffer; 49 56 57 /** Definition of an incoming packet */ 50 58 typedef struct _JitterBufferPacket JitterBufferPacket; 51 59 60 /** Definition of an incoming packet */ 52 61 struct _JitterBufferPacket { 53 char *data; 54 spx_uint32_t len; 55 spx_uint32_t timestamp; 56 spx_uint32_t span; 62 char *data; /**< Data bytes contained in the packet */ 63 spx_uint32_t len; /**< Length of the packet in bytes */ 64 spx_uint32_t timestamp; /**< Timestamp for the packet */ 65 spx_uint32_t span; /**< Time covered by the packet (same units as timestamp) */ 57 66 }; 58 67 59 68 /** Packet has been retrieved */ 60 69 #define JITTER_BUFFER_OK 0 70 /** Packet is missing */ 61 71 #define JITTER_BUFFER_MISSING 1 72 /** Packet is incomplete (does not cover the entive tick */ 62 73 #define JITTER_BUFFER_INCOMPLETE 2 74 /** There was an error in the jitter buffer */ 63 75 #define JITTER_BUFFER_INTERNAL_ERROR -1 76 /** Invalid argument */ 64 77 #define JITTER_BUFFER_BAD_ARGUMENT -2 65 78 66 /** Initialise jitter buffer */ 79 /** Initialises jitter buffer 80 * 81 * @param tick Number of samples per "tick", i.e. the time period of the elements that will be retrieved 82 * @return Newly created jitter buffer state 83 */ 67 84 JitterBuffer *jitter_buffer_init(int tick); 68 85 69 /** Reset jitter buffer */ 86 /** Restores jitter buffer to its original state 87 * 88 * @param jitter Jitter buffer state 89 */ 70 90 void jitter_buffer_reset(JitterBuffer *jitter); 71 91 72 /** Destroy jitter buffer */ 92 /** Destroys jitter buffer 93 * 94 * @param jitter Jitter buffer state 95 */ 73 96 void jitter_buffer_destroy(JitterBuffer *jitter); 74 97 … … 85 108 void jitter_buffer_tick(JitterBuffer *jitter); 86 109 110 /* @} */ 87 111 88 /** Speex jitter-buffer state. */ 112 /** @defgroup SpeexJitter SpeexJitter: Adaptive jitter buffer specifically for Speex 113 * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size 114 * to maintain good quality and low latency. This is a simplified version that works only 115 * with Speex, but is much easier to use. 116 * @{ 117 */ 118 119 /** Speex jitter-buffer state. Never use it directly! */ 89 120 typedef struct SpeexJitter { 90 SpeexBits current_packet; /**< Current Speex packet*/91 int valid_bits; /**< True if Speex bits are valid*/92 JitterBuffer *packets; 93 void *dec; /**< Pointer to Speex decoder*/94 int frame_size; /**< Frame size of Speex decoder*/121 SpeexBits current_packet; /**< Current Speex packet */ 122 int valid_bits; /**< True if Speex bits are valid */ 123 JitterBuffer *packets; /**< Generic jitter buffer state */ 124 void *dec; /**< Pointer to Speex decoder */ 125 spx_int32_t frame_size; /**< Frame size of Speex decoder */ 95 126 } SpeexJitter; 96 127 97 /** Initialise jitter buffer */ 128 /** Initialise jitter buffer 129 * 130 * @param jitter State of the Speex jitter buffer 131 * @param decoder Speex decoder to call 132 * @param sampling_rate Sampling rate used by the decoder 133 */ 98 134 void speex_jitter_init(SpeexJitter *jitter, void *decoder, int sampling_rate); 99 135 … … 114 150 #endif 115 151 116 152 /* @} */ 117 153 #endif
Note: See TracChangeset
for help on using the changeset viewer.