- Timestamp:
- Jul 26, 2006 5:04:54 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia-codec/speex/speex_jitter.h
r278 r628 44 44 #endif 45 45 46 #define SPEEX_JITTER_MAX_PACKET_SIZE 1500 /**< Maximum number of bytes per packet */ 47 #define SPEEX_JITTER_MAX_BUFFER_SIZE 20 /**< Maximum number of packets in jitter buffer */ 46 struct JitterBuffer_; 48 47 49 #define MAX_MARGIN 12 /**< Number of bins in margin histogram */ 48 typedef struct JitterBuffer_ JitterBuffer; 49 50 typedef struct _JitterBufferPacket JitterBufferPacket; 51 52 struct _JitterBufferPacket { 53 char *data; 54 spx_uint32_t len; 55 spx_uint32_t timestamp; 56 spx_uint32_t span; 57 }; 58 59 60 #define JITTER_BUFFER_OK 0 61 #define JITTER_BUFFER_MISSING 1 62 #define JITTER_BUFFER_INCOMPLETE 2 63 #define JITTER_BUFFER_INTERNAL_ERROR -1 64 #define JITTER_BUFFER_BAD_ARGUMENT -2 65 66 /** Initialise jitter buffer */ 67 JitterBuffer *jitter_buffer_init(int tick); 68 69 /** Reset jitter buffer */ 70 void jitter_buffer_reset(JitterBuffer *jitter); 71 72 /** Destroy jitter buffer */ 73 void jitter_buffer_destroy(JitterBuffer *jitter); 74 75 /** Put one packet into the jitter buffer */ 76 void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet); 77 78 /** Get one packet from the jitter buffer */ 79 int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_uint32_t *current_timestamp); 80 81 /** Get pointer timestamp of jitter buffer */ 82 int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter); 83 84 /** Advance by one tick */ 85 void jitter_buffer_tick(JitterBuffer *jitter); 86 50 87 51 88 /** Speex jitter-buffer state. */ 52 89 typedef struct SpeexJitter { 53 int buffer_size; /**< Buffer size */54 int pointer_timestamp; /**< Pointer timestamp */55 56 90 SpeexBits current_packet; /**< Current Speex packet */ 57 91 int valid_bits; /**< True if Speex bits are valid */ 58 59 char buf[SPEEX_JITTER_MAX_BUFFER_SIZE][SPEEX_JITTER_MAX_PACKET_SIZE]; /**< Buffer of packets */ 60 int timestamp[SPEEX_JITTER_MAX_BUFFER_SIZE]; /**< Timestamp of packet */ 61 int len[SPEEX_JITTER_MAX_BUFFER_SIZE]; /**< Number of bytes in packet */ 62 92 JitterBuffer *packets; 63 93 void *dec; /**< Pointer to Speex decoder */ 64 94 int frame_size; /**< Frame size of Speex decoder */ 65 int frame_time; /**< Frame time in [ms] of Speex decoder */66 int reset_state; /**< True if Speex state was reset */67 68 int lost_count; /**< Number of lost packets */69 float shortterm_margin[MAX_MARGIN]; /**< Short term margins */70 float longterm_margin[MAX_MARGIN]; /**< Long term margins */71 float loss_rate; /**< Loss rate */72 95 } SpeexJitter; 73 96 … … 82 105 83 106 /** Get one packet from the jitter buffer */ 84 void speex_jitter_get(SpeexJitter *jitter, s hort *out, int *current_timestamp);107 void speex_jitter_get(SpeexJitter *jitter, spx_int16_t *out, int *start_offset); 85 108 86 109 /** Get pointer timestamp of jitter buffer */
Note: See TracChangeset
for help on using the changeset viewer.