siproxd/src/rtpproxy.h

78 lines
2.8 KiB
C

/*
Copyright (C) 2003-2009 Thomas Ries <tries@gmx.net>
This file is part of Siproxd.
Siproxd is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
Siproxd is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Siproxd; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/* $Id$ */
#define CALLIDNUM_SIZE 256
#define CALLIDHOST_SIZE 128
/* Buffer structure to store an RTP frame */
typedef char rtp_buff_t[RTP_BUFFER_SIZE];
/* Time control structure to be used with De-jitter feature */
typedef struct {
struct timeval starttime ;
int calccount ;
int dejitter ;
struct timeval dejitter_tv ;
double dejitter_d ;
int time_code_a ;
double received_a ; /* time in µsec since epoch */
int time_code_b ;
double received_b ; /* time in µsec since epoch */
int time_code_c ;
double received_c ; /* time in µsec since epoch */
} timecontrol_t ;
typedef struct {
int rtp_rx_sock; /* rx socket (0 -> free slot)*/
int rtp_tx_sock; /* tx socket */
int rtp_con_rx_sock; /* rx socket rtcp */
int rtp_con_tx_sock; /* tx socket rtcp */
char callid_number[CALLIDNUM_SIZE]; /* call ID */
char callid_host[CALLIDHOST_SIZE]; /* --"-- */
client_id_t client_id;
int direction; /* Direction of RTP stream */
int call_direction; /* Direction of Call DIR_x */
int media_stream_no;
timecontrol_t tc; /* de-jitter feature */
struct in_addr local_ipaddr; /* local IP */
int local_port; /* local allocated port */
struct in_addr remote_ipaddr; /* remote IP */
int remote_port; /* remote port */
time_t timestamp; /* last 'stream alive' TS */
int opposite_entry; /* 0 based index of opposite entry */
} rtp_proxytable_t;
/*
* RTP relay
*/
int rtp_relay_init(void);
int rtp_relay_start_fwd (osip_call_id_t *callid, client_id_t client_id,
int rtp_direction, int call_direction, int media_stream_no,
struct in_addr local_ipaddr, int *local_port,
struct in_addr remote_ipaddr, int remote_port,
int dejitter);
int rtp_relay_stop_fwd (osip_call_id_t *callid, int rtp_direction,
int media_stream_no, int nolock);
#define NOLOCK_FDSET 1
#define LOCK_FDSET 0