rtpengine/include/jitter_buffer.h

61 lines
1.4 KiB

#ifndef _JITTER_BUFFER_H_
#define _JITTER_BUFFER_H_
#include "auxlib.h"
#include "socket.h"
#include "timerthread.h"
#include "media_socket.h"
struct jb_packet;
struct media_packet;
struct jb_packet {
struct timerthread_queue_entry ttq_entry;
char *buf;
struct media_packet mp;
};
struct jitter_buffer {
struct timerthread_queue ttq;
mutex_t lock;
unsigned long first_send_ts;
struct timeval first_send;
struct timeval prev_seq_ts;
unsigned int first_seq;
unsigned int prev_seq;
unsigned int rtptime_delta;
unsigned int next_exp_seq;
unsigned int cont_frames;
unsigned int cont_miss;
unsigned int clock_rate;
unsigned int payload_type;
unsigned int num_resets;
unsigned int initial_pkts;
unsigned int ssrc;
unsigned int dtmf_mult_factor;
int buffer_len;
int clock_drift_val;
call_t *call;
int disabled;
};
void jitter_buffer_init(void);
void jitter_buffer_init_free(void);
struct jitter_buffer *jitter_buffer_new(call_t *);
void jitter_buffer_free(struct jitter_buffer **);
int buffer_packet(struct media_packet *mp, const str *s);
void jb_packet_free(struct jb_packet **jbp);
void jitter_buffer_launch(void);
INLINE void jb_put(struct jitter_buffer **jb) {
if (!*jb)
return;
obj_put(&(*jb)->ttq.tt_obj);
*jb = NULL;
}
#endif