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
98 uint32_t bindIP, mcastifaceIP;
99 std::list<uint32_t> localIPs;
100 uint8_t multicastTTL;
107 #if ! (defined(WIN32) || defined(_WIN32_WCE))
112 { localIPlist = iplist; rtpsocket = rtpsock; rtcpsocket = rtcpsock; }
114 ~RTPUDPv4TransmissionInfo() { }
118 #if ! (defined(WIN32) || defined(_WIN32_WCE))
129 std::list<uint32_t> localIPlist;
130 #if ! (defined(WIN32) || defined(_WIN32_WCE))
131 int rtpsocket,rtcpsocket;
133 SOCKET rtpsocket,rtcpsocket;
137 class RTPUDPv4Trans_GetHashIndex_IPv4Dest
140 static int GetIndex(
const RTPIPv4Destination &d) {
return d.GetIP()%RTPUDPV4TRANS_HASHSIZE; }
143 class RTPUDPv4Trans_GetHashIndex_uint32_t
146 static int GetIndex(
const uint32_t &k) {
return k%RTPUDPV4TRANS_HASHSIZE; }
149 #define RTPUDPV4TRANS_HEADERSIZE (20+8)
164 int Init(
bool treadsafe);
169 int GetLocalHostName(uint8_t *buffer,
size_t *bufferlength);
170 bool ComesFromThisTransmitter(
const RTPAddress *addr);
171 size_t GetHeaderOverhead() {
return RTPUDPV4TRANS_HEADERSIZE; }
174 int WaitForIncomingData(
const RTPTime &delay,
bool *dataavailable = 0);
177 int SendRTPData(
const void *data,
size_t len);
178 int SendRTCPData(
const void *data,
size_t len);
181 int DeleteDestination(
const RTPAddress &addr);
182 void ClearDestinations();
184 bool SupportsMulticasting();
185 int JoinMulticastGroup(
const RTPAddress &addr);
186 int LeaveMulticastGroup(
const RTPAddress &addr);
187 void LeaveAllMulticastGroups();
191 int DeleteFromIgnoreList(
const RTPAddress &addr);
192 void ClearIgnoreList();
194 int DeleteFromAcceptList(
const RTPAddress &addr);
195 void ClearAcceptList();
196 int SetMaximumPacketSize(
size_t s);
198 bool NewDataAvailable();
204 int CreateLocalIPList();
205 bool GetLocalIPList_Interfaces();
206 void GetLocalIPList_DNS();
207 void AddLoopbackAddress();
209 int PollSocket(
bool rtp);
210 int ProcessAddAcceptIgnoreEntry(uint32_t ip,uint16_t port);
211 int ProcessDeleteAcceptIgnoreEntry(uint32_t ip,uint16_t port);
212 #ifdef RTP_SUPPORT_IPV4MULTICAST
213 bool SetMulticastTTL(uint8_t ttl);
214 #endif // RTP_SUPPORT_IPV4MULTICAST
215 bool ShouldAcceptData(uint32_t srcip,uint16_t srcport);
216 void ClearAcceptIgnoreInfo();
221 #if (defined(WIN32) || defined(_WIN32_WCE))
222 SOCKET rtpsock,rtcpsock;
223 #else // not using winsock
224 int rtpsock,rtcpsock;
226 uint32_t bindIP, mcastifaceIP;
227 std::list<uint32_t> localIPs;
229 uint8_t multicastTTL;
232 uint8_t *localhostname;
233 size_t localhostnamelength;
235 RTPHashTable<const RTPIPv4Destination,RTPUDPv4Trans_GetHashIndex_IPv4Dest,RTPUDPV4TRANS_HASHSIZE> destinations;
236 #ifdef RTP_SUPPORT_IPV4MULTICAST
237 RTPHashTable<const uint32_t,RTPUDPv4Trans_GetHashIndex_uint32_t,RTPUDPV4TRANS_HASHSIZE> multicastgroups;
238 #endif // RTP_SUPPORT_IPV4MULTICAST
239 std::list<RTPRawPacket*> rawpacketlist;
241 bool supportsmulticasting;
247 PortInfo() { all =
false; }
250 std::list<uint16_t> portlist;
253 RTPKeyHashTable<const uint32_t,PortInfo*,RTPUDPv4Trans_GetHashIndex_uint32_t,RTPUDPV4TRANS_HASHSIZE> acceptignoreinfo;
256 #if (defined(WIN32) || defined(_WIN32_WCE))
261 int CreateAbortDescriptors();
262 void DestroyAbortDescriptors();
263 void AbortWaitInternal();
264 #ifdef RTP_SUPPORT_THREAD
265 JMutex mainmutex,waitmutex;
267 #endif // RTP_SUPPORT_THREAD
270 #endif // RTPUDPV4TRANSMITTER_H
uint16_t GetPortbase() const
Returns the RTP portbase which will be used (default is 5000).
Definition: rtpudpv4transmitter.h:89
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:83
uint8_t GetMulticastTTL() const
Returns the multicast TTL which will be used (default is 1).
Definition: rtpudpv4transmitter.h:92
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:120
Additional information about the UDP over IPv4 transmitter.
Definition: rtpudpv4transmitter.h:104
std::list< uint32_t > GetLocalIPList() const
Returns the list of IPv4 addresses the transmitter considers to be the local IP addresses.
Definition: rtpudpv4transmitter.h:117
void SetPortbase(uint16_t pbase)
Sets the RTP portbase to pbase.
Definition: rtpudpv4transmitter.h:68
Base class for additional information about the transmitter.
Definition: rtptransmitter.h:236
Parameters for the UDP over IPv4 transmitter.
Definition: rtpudpv4transmitter.h:56
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
uint32_t GetMulticastInterfaceIP() const
Returns the multicast interface IP address.
Definition: rtpudpv4transmitter.h:86
void SetBindIP(uint32_t ip)
Sets the IP address which is used to bind the sockets to ip.
Definition: rtpudpv4transmitter.h:62
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:65
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:95
An UDP over IPv4 transmission component.
Definition: rtpudpv4transmitter.h:158
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:74
Base class for transmission parameters.
Definition: rtptransmitter.h:217
void ClearLocalIPList()
Clears the list of local IP addresses.
Definition: rtpudpv4transmitter.h:80
int GetRTCPSocket() const
Returns the socket descriptor used for receiving and transmitting RTCP packets.
Definition: rtpudpv4transmitter.h:123
void SetMulticastTTL(uint8_t mcastTTL)
Sets the multicast TTL to be used to mcastTTL.
Definition: rtpudpv4transmitter.h:71