oRTP 0.18.0

src/rtpsession_priv.h

00001 /*
00002   The oRTP library is an RTP (Realtime Transport Protocol - rfc3550) stack.
00003   Copyright (C) 2001  Simon MORLAT simon.morlat@linphone.org
00004 
00005   This library is free software; you can redistribute it and/or
00006   modify it under the terms of the GNU Lesser General Public
00007   License as published by the Free Software Foundation; either
00008   version 2.1 of the License, or (at your option) any later version.
00009 
00010   This library is distributed in the hope that it will be useful,
00011   but WITHOUT ANY WARRANTY; without even the implied warranty of
00012   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013   Lesser General Public License for more details.
00014 
00015   You should have received a copy of the GNU Lesser General Public
00016   License along with this library; if not, write to the Free Software
00017   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 */
00019 
00020 #ifndef rtpsession_priv_h
00021 #define rtpsession_priv_h
00022 
00023 #include "ortp/rtpsession.h"
00024 
00025 typedef enum {
00026         RTP_SESSION_RECV_SYNC=1,        /* the rtp session is synchronising in the incoming stream */
00027         RTP_SESSION_FIRST_PACKET_DELIVERED=1<<1,
00028         RTP_SESSION_SCHEDULED=1<<2,/* the scheduler controls this session*/
00029         RTP_SESSION_BLOCKING_MODE=1<<3, /* in blocking mode */
00030         RTP_SESSION_RECV_NOT_STARTED=1<<4,      /* the application has not started to try to recv */
00031         RTP_SESSION_SEND_NOT_STARTED=1<<5,  /* the application has not started to send something */
00032         RTP_SESSION_IN_SCHEDULER=1<<6,  /* the rtp session is in the scheduler list */
00033         RTP_SESSION_USING_EXT_SOCKETS=1<<7, /* the session is using externaly supplied sockets */
00034         RTP_SOCKET_CONNECTED=1<<8,
00035         RTCP_SOCKET_CONNECTED=1<<9,
00036         RTP_SESSION_USING_TRANSPORT=1<<10,
00037         RTCP_OVERRIDE_LOST_PACKETS=1<11,
00038         RTCP_OVERRIDE_JITTER=1<<12,
00039         RTCP_OVERRIDE_DELAY=1<<13
00040 }RtpSessionFlags;
00041 
00042 #define rtp_session_using_transport(s, stream) (((s)->flags & RTP_SESSION_USING_TRANSPORT) && (s->stream.tr != 0))
00043 
00044 void rtp_session_update_payload_type(RtpSession * session, int pt);
00045 void rtp_putq(queue_t *q, mblk_t *mp);
00046 mblk_t * rtp_getq(queue_t *q, uint32_t ts, int *rejected);
00047 int rtp_session_rtp_recv(RtpSession * session, uint32_t ts);
00048 int rtp_session_rtcp_recv(RtpSession * session);
00049 int rtp_session_rtp_send (RtpSession * session, mblk_t * m);
00050 int rtp_session_rtcp_send (RtpSession * session, mblk_t * m);
00051 
00052 void rtp_session_rtp_parse(RtpSession *session, mblk_t *mp, uint32_t local_str_ts, struct sockaddr *addr, socklen_t addrlen);
00053 void rtp_session_rtcp_parse(RtpSession *session, mblk_t *mp);
00054 
00055 void rtp_session_dispatch_event(RtpSession *session, OrtpEvent *ev);
00056 
00057 mblk_t * rtp_session_network_simulate(RtpSession *session, mblk_t *input);
00058 void ortp_network_simulator_destroy(OrtpNetworkSimulatorCtx *sim);
00059 
00060 #endif