37 #ifndef RTPUDPV4TRANSMITTER_H
39 #define RTPUDPV4TRANSMITTER_H
41 #include "rtpconfig.h"
48 #ifdef RTP_SUPPORT_THREAD
50 #endif // RTP_SUPPORT_THREAD
52 #define RTPUDPV4TRANS_HASHSIZE 8317
53 #define RTPUDPV4TRANS_DEFAULTPORTBASE 5000
55 #define RTPUDPV4TRANS_RTPRECEIVEBUFFER 32768
56 #define RTPUDPV4TRANS_RTCPRECEIVEBUFFER 32768
57 #define RTPUDPV4TRANS_RTPTRANSMITBUFFER 32768
58 #define RTPUDPV4TRANS_RTCPTRANSMITBUFFER 32768
127 uint32_t bindIP, mcastifaceIP;
128 std::list<uint32_t> localIPs;
129 uint8_t multicastTTL;
130 int rtpsendbuf, rtprecvbuf;
131 int rtcpsendbuf, rtcprecvbuf;
138 #if ! (defined(WIN32) || defined(_WIN32_WCE))
143 { localIPlist = iplist; rtpsocket = rtpsock; rtcpsocket = rtcpsock; }
145 ~RTPUDPv4TransmissionInfo() { }
149 #if ! (defined(WIN32) || defined(_WIN32_WCE))
160 std::list<uint32_t> localIPlist;
161 #if ! (defined(WIN32) || defined(_WIN32_WCE))
162 int rtpsocket,rtcpsocket;
164 SOCKET rtpsocket,rtcpsocket;
168 class RTPUDPv4Trans_GetHashIndex_IPv4Dest
171 static int GetIndex(
const RTPIPv4Destination &d) {
return d.GetIP()%RTPUDPV4TRANS_HASHSIZE; }
174 class RTPUDPv4Trans_GetHashIndex_uint32_t
177 static int GetIndex(
const uint32_t &k) {
return k%RTPUDPV4TRANS_HASHSIZE; }
180 #define RTPUDPV4TRANS_HEADERSIZE (20+8)
195 int Init(
bool treadsafe);
200 int GetLocalHostName(uint8_t *buffer,
size_t *bufferlength);
201 bool ComesFromThisTransmitter(
const RTPAddress *addr);
202 size_t GetHeaderOverhead() {
return RTPUDPV4TRANS_HEADERSIZE; }
205 int WaitForIncomingData(
const RTPTime &delay,
bool *dataavailable = 0);
208 int SendRTPData(
const void *data,
size_t len);
209 int SendRTCPData(
const void *data,
size_t len);
212 int DeleteDestination(
const RTPAddress &addr);
213 void ClearDestinations();
215 bool SupportsMulticasting();
216 int JoinMulticastGroup(
const RTPAddress &addr);
217 int LeaveMulticastGroup(
const RTPAddress &addr);
218 void LeaveAllMulticastGroups();
222 int DeleteFromIgnoreList(
const RTPAddress &addr);
223 void ClearIgnoreList();
225 int DeleteFromAcceptList(
const RTPAddress &addr);
226 void ClearAcceptList();
227 int SetMaximumPacketSize(
size_t s);
229 bool NewDataAvailable();
235 int CreateLocalIPList();
236 bool GetLocalIPList_Interfaces();
237 void GetLocalIPList_DNS();
238 void AddLoopbackAddress();
240 int PollSocket(
bool rtp);
241 int ProcessAddAcceptIgnoreEntry(uint32_t ip,uint16_t port);
242 int ProcessDeleteAcceptIgnoreEntry(uint32_t ip,uint16_t port);
243 #ifdef RTP_SUPPORT_IPV4MULTICAST
244 bool SetMulticastTTL(uint8_t ttl);
245 #endif // RTP_SUPPORT_IPV4MULTICAST
246 bool ShouldAcceptData(uint32_t srcip,uint16_t srcport);
247 void ClearAcceptIgnoreInfo();
252 #if (defined(WIN32) || defined(_WIN32_WCE))
253 SOCKET rtpsock,rtcpsock;
254 #else // not using winsock
255 int rtpsock,rtcpsock;
257 uint32_t bindIP, mcastifaceIP;
258 std::list<uint32_t> localIPs;
260 uint8_t multicastTTL;
263 uint8_t *localhostname;
264 size_t localhostnamelength;
266 RTPHashTable<const RTPIPv4Destination,RTPUDPv4Trans_GetHashIndex_IPv4Dest,RTPUDPV4TRANS_HASHSIZE> destinations;
267 #ifdef RTP_SUPPORT_IPV4MULTICAST
268 RTPHashTable<const uint32_t,RTPUDPv4Trans_GetHashIndex_uint32_t,RTPUDPV4TRANS_HASHSIZE> multicastgroups;
269 #endif // RTP_SUPPORT_IPV4MULTICAST
270 std::list<RTPRawPacket*> rawpacketlist;
272 bool supportsmulticasting;
278 PortInfo() { all =
false; }
281 std::list<uint16_t> portlist;
284 RTPKeyHashTable<const uint32_t,PortInfo*,RTPUDPv4Trans_GetHashIndex_uint32_t,RTPUDPV4TRANS_HASHSIZE> acceptignoreinfo;
287 #if (defined(WIN32) || defined(_WIN32_WCE))
292 int CreateAbortDescriptors();
293 void DestroyAbortDescriptors();
294 void AbortWaitInternal();
295 #ifdef RTP_SUPPORT_THREAD
296 JMutex mainmutex,waitmutex;
298 #endif // RTP_SUPPORT_THREAD
301 #endif // RTPUDPV4TRANSMITTER_H
uint16_t GetPortbase() const
Returns the RTP portbase which will be used (default is 5000).
Definition: rtpudpv4transmitter.h:94
void SetRTCPSendBuffer(int s)
Sets the RTCP socket's send buffer size.
Definition: rtpudpv4transmitter.h:109
A memory manager.
Definition: rtpmemorymanager.h:144
uint32_t GetBindIP() const
Returns the IP address which will be used to bind the sockets.
Definition: rtpudpv4transmitter.h:88
uint8_t GetMulticastTTL() const
Returns the multicast TTL which will be used (default is 1).
Definition: rtpudpv4transmitter.h:97
void SetRTPReceiveBuffer(int s)
Sets the RTP socket's receive buffer size.
Definition: rtpudpv4transmitter.h:106
This class is used to specify wallclock time, delay intervals etc.
Definition: rtptimeutilities.h:77
int GetRTPSocket() const
Returns the socket descriptor used for receiving and transmitting RTP packets.
Definition: rtpudpv4transmitter.h:151
Additional information about the UDP over IPv4 transmitter.
Definition: rtpudpv4transmitter.h:135
std::list< uint32_t > GetLocalIPList() const
Returns the list of IPv4 addresses the transmitter considers to be the local IP addresses.
Definition: rtpudpv4transmitter.h:148
void SetRTPSendBuffer(int s)
Sets the RTP socket's send buffer size.
Definition: rtpudpv4transmitter.h:103
void SetPortbase(uint16_t pbase)
Sets the RTP portbase to pbase.
Definition: rtpudpv4transmitter.h:73
int GetRTCPSendBuffer() const
Returns the RTCP socket's send buffer size.
Definition: rtpudpv4transmitter.h:121
Base class for additional information about the transmitter.
Definition: rtptransmitter.h:236
void SetRTCPReceiveBuffer(int s)
Sets the RTCP socket's receive buffer size.
Definition: rtpudpv4transmitter.h:112
Parameters for the UDP over IPv4 transmitter.
Definition: rtpudpv4transmitter.h:61
Specifies the internal UDP over IPv4 transmitter.
Definition: rtptransmitter.h:67
This class is used by the transmission component to store the incoming RTP and RTCP data in...
Definition: rtprawpacket.h:48
ReceiveMode
Three kind of receive modes can be specified.
Definition: rtptransmitter.h:73
int GetRTCPReceiveBuffer() const
Returns the RTCP socket's receive buffer size.
Definition: rtpudpv4transmitter.h:124
uint32_t GetMulticastInterfaceIP() const
Returns the multicast interface IP address.
Definition: rtpudpv4transmitter.h:91
void SetBindIP(uint32_t ip)
Sets the IP address which is used to bind the sockets to ip.
Definition: rtpudpv4transmitter.h:67
int GetRTPReceiveBuffer() const
Returns the RTP socket's receive buffer size.
Definition: rtpudpv4transmitter.h:118
Abstract class from which actual transmission components should be derived.
Definition: rtptransmitter.h:57
void SetMulticastInterfaceIP(uint32_t ip)
Sets the multicast interface IP address.
Definition: rtpudpv4transmitter.h:70
This class is an abstract class which is used to specify destinations, multicast groups etc...
Definition: rtpaddress.h:47
const std::list< uint32_t > & GetLocalIPList() const
Returns the list of local IP addresses.
Definition: rtpudpv4transmitter.h:100
An UDP over IPv4 transmission component.
Definition: rtpudpv4transmitter.h:189
int GetRTPSendBuffer() const
Returns the RTP socket's send buffer size.
Definition: rtpudpv4transmitter.h:115
void SetLocalIPList(std::list< uint32_t > &iplist)
Passes a list of IP addresses which will be used as the local IP addresses.
Definition: rtpudpv4transmitter.h:79
Base class for transmission parameters.
Definition: rtptransmitter.h:217
void ClearLocalIPList()
Clears the list of local IP addresses.
Definition: rtpudpv4transmitter.h:85
int GetRTCPSocket() const
Returns the socket descriptor used for receiving and transmitting RTCP packets.
Definition: rtpudpv4transmitter.h:154
void SetMulticastTTL(uint8_t mcastTTL)
Sets the multicast TTL to be used to mcastTTL.
Definition: rtpudpv4transmitter.h:76