JRTPLIB  3.9.0
rtpsessionparams.h
Go to the documentation of this file.
1 /*
2 
3  This file is a part of JRTPLIB
4  Copyright (c) 1999-2011 Jori Liesenborgs
5 
6  Contact: jori.liesenborgs@gmail.com
7 
8  This library was developed at the Expertise Centre for Digital Media
9  (http://www.edm.uhasselt.be), a research center of the Hasselt University
10  (http://www.uhasselt.be). The library is based upon work done for
11  my thesis at the School for Knowledge Technology (Belgium/The Netherlands).
12 
13  Permission is hereby granted, free of charge, to any person obtaining a
14  copy of this software and associated documentation files (the "Software"),
15  to deal in the Software without restriction, including without limitation
16  the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  and/or sell copies of the Software, and to permit persons to whom the
18  Software is furnished to do so, subject to the following conditions:
19 
20  The above copyright notice and this permission notice shall be included
21  in all copies or substantial portions of the Software.
22 
23  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26  THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
29  IN THE SOFTWARE.
30 
31 */
32 
37 #ifndef RTPSESSIONPARAMS_H
38 
39 #define RTPSESSIONPARAMS_H
40 
41 #include "rtpconfig.h"
42 #include "rtptypes.h"
43 #include "rtptransmitter.h"
44 #include "rtptimeutilities.h"
45 #include "rtpsources.h"
46 
47 namespace jrtplib
48 {
49 
55 {
56 public:
58 
62  int SetUsePollThread(bool usethread);
63 
65  bool IsUsingPollThread() const { return usepollthread; }
66 
68  void SetMaximumPacketSize(size_t max) { maxpacksize = max; }
69 
71  size_t GetMaximumPacketSize() const { return maxpacksize; }
72 
76  void SetAcceptOwnPackets(bool accept) { acceptown = accept; }
77 
79  bool AcceptOwnPackets() const { return acceptown; }
80 
82  void SetReceiveMode(RTPTransmitter::ReceiveMode recvmode) { receivemode = recvmode; }
83 
85  RTPTransmitter::ReceiveMode GetReceiveMode() const { return receivemode; }
86 
93  void SetOwnTimestampUnit(double tsunit) { owntsunit = tsunit; }
94 
96  double GetOwnTimestampUnit() const { return owntsunit; }
97 
103  void SetResolveLocalHostname(bool v) { resolvehostname = v; }
104 
108  bool GetResolveLocalHostname() const { return resolvehostname; }
109 #ifdef RTP_SUPPORT_PROBATION
110 
111  void SetProbationType(RTPSources::ProbationType probtype) { probationtype = probtype; }
112 
114  RTPSources::ProbationType GetProbationType() const { return probationtype; }
115 #endif // RTP_SUPPORT_PROBATION
116 
118  void SetSessionBandwidth(double sessbw) { sessionbandwidth = sessbw; }
119 
121  double GetSessionBandwidth() const { return sessionbandwidth; }
122 
124  void SetControlTrafficFraction(double frac) { controlfrac = frac; }
125 
127  double GetControlTrafficFraction() const { return controlfrac; }
128 
130  void SetSenderControlBandwidthFraction(double frac) { senderfrac = frac; }
131 
133  double GetSenderControlBandwidthFraction() const { return senderfrac; }
134 
136  void SetMinimumRTCPTransmissionInterval(const RTPTime &t) { mininterval = t; }
137 
139  RTPTime GetMinimumRTCPTransmissionInterval() const { return mininterval; }
140 
144  void SetUseHalfRTCPIntervalAtStartup(bool usehalf) { usehalfatstartup = usehalf; }
145 
149  bool GetUseHalfRTCPIntervalAtStartup() const { return usehalfatstartup; }
150 
152  void SetRequestImmediateBYE(bool v) { immediatebye = v; }
153 
155  bool GetRequestImmediateBYE() const { return immediatebye; }
156 
160  void SetSenderReportForBYE(bool v) { SR_BYE = v; }
161 
165  bool GetSenderReportForBYE() const { return SR_BYE; }
166 
168  void SetSenderTimeoutMultiplier(double m) { sendermultiplier = m; }
169 
171  double GetSenderTimeoutMultiplier() const { return sendermultiplier; }
172 
174  void SetSourceTimeoutMultiplier(double m) { generaltimeoutmultiplier = m; }
175 
177  double GetSourceTimeoutMultiplier() const { return generaltimeoutmultiplier; }
178 
180  void SetBYETimeoutMultiplier(double m) { byetimeoutmultiplier = m; }
181 
183  double GetBYETimeoutMultiplier() const { return byetimeoutmultiplier; }
184 
186  void SetCollisionTimeoutMultiplier(double m) { collisionmultiplier = m; }
187 
189  double GetCollisionTimeoutMultiplier() const { return collisionmultiplier; }
190 
192  void SetNoteTimeoutMultiplier(double m) { notemultiplier = m; }
193 
195  double GetNoteTimeoutMultiplier() const { return notemultiplier; }
196 
198  void SetUsePredefinedSSRC(bool f) { usepredefinedssrc = f; }
199 
201  bool GetUsePredefinedSSRC() const { return usepredefinedssrc; }
202 
204  void SetPredefinedSSRC(uint32_t ssrc) { predefinedssrc = ssrc; }
205 
207  uint32_t GetPredefinedSSRC() const { return predefinedssrc; }
208 
210  void SetCNAME(const std::string &s) { cname = s; }
211 
213  std::string GetCNAME() const { return cname; }
214 private:
215  bool acceptown;
216  bool usepollthread;
217  size_t maxpacksize;
218  double owntsunit;
219  RTPTransmitter::ReceiveMode receivemode;
220  bool resolvehostname;
221 #ifdef RTP_SUPPORT_PROBATION
222  RTPSources::ProbationType probationtype;
223 #endif // RTP_SUPPORT_PROBATION
224 
225  double sessionbandwidth;
226  double controlfrac;
227  double senderfrac;
228  RTPTime mininterval;
229  bool usehalfatstartup;
230  bool immediatebye;
231  bool SR_BYE;
232 
233  double sendermultiplier;
234  double generaltimeoutmultiplier;
235  double byetimeoutmultiplier;
236  double collisionmultiplier;
237  double notemultiplier;
238 
239  bool usepredefinedssrc;
240  uint32_t predefinedssrc;
241 
242  std::string cname;
243 };
244 
245 } // end namespace
246 
247 #endif // RTPSESSIONPARAMS_H
248 
void SetCollisionTimeoutMultiplier(double m)
Sets the multiplier to be used when timing out entries in the collision table.
Definition: rtpsessionparams.h:186
void SetOwnTimestampUnit(double tsunit)
Sets the timestamp unit for our own data.
Definition: rtpsessionparams.h:93
double GetSessionBandwidth() const
Returns the session bandwidth in bytes per second (default is 10000 bytes per second).
Definition: rtpsessionparams.h:121
double GetSenderTimeoutMultiplier() const
Returns the multiplier to be used when timing out senders (default is 2).
Definition: rtpsessionparams.h:171
void SetNoteTimeoutMultiplier(double m)
Sets the multiplier to be used when timing out SDES NOTE information.
Definition: rtpsessionparams.h:192
void SetPredefinedSSRC(uint32_t ssrc)
Sets the SSRC which will be used if RTPSessionParams::GetUsePredefinedSSRC returns true...
Definition: rtpsessionparams.h:204
void SetUseHalfRTCPIntervalAtStartup(bool usehalf)
If usehalf is set to true, the session will only wait half of the calculated RTCP interval before sen...
Definition: rtpsessionparams.h:144
bool GetUseHalfRTCPIntervalAtStartup() const
Returns whether the session will only wait half of the calculated RTCP interval before sending its fi...
Definition: rtpsessionparams.h:149
uint32_t GetPredefinedSSRC() const
Returns the SSRC which will be used if RTPSessionParams::GetUsePredefinedSSRC returns true...
Definition: rtpsessionparams.h:207
ProbationType
Type of probation to use for new sources.
Definition: rtpsources.h:78
double GetNoteTimeoutMultiplier() const
Returns the multiplier to be used when timing out SDES NOTE information (default is 25)...
Definition: rtpsessionparams.h:195
bool GetSenderReportForBYE() const
Returns true if a BYE packet will be sent in an RTCP compound packet which starts with a sender repor...
Definition: rtpsessionparams.h:165
void SetCNAME(const std::string &s)
Forces this string to be used as the CNAME identifier.
Definition: rtpsessionparams.h:210
void SetBYETimeoutMultiplier(double m)
Sets the multiplier to be used when timing out a member after it has sent a BYE packet.
Definition: rtpsessionparams.h:180
void SetRequestImmediateBYE(bool v)
If v is true, the session will send a BYE packet immediately if this is allowed.
Definition: rtpsessionparams.h:152
double GetSenderControlBandwidthFraction() const
Returns the minimum fraction of the control traffic that will be used by senders (default is 25%)...
Definition: rtpsessionparams.h:133
bool GetUsePredefinedSSRC() const
Returns a flag indicating if a predefined SSRC should be used.
Definition: rtpsessionparams.h:201
void SetSenderTimeoutMultiplier(double m)
Sets the multiplier to be used when timing out senders.
Definition: rtpsessionparams.h:168
void SetSenderControlBandwidthFraction(double frac)
Sets the minimum fraction of the control traffic that will be used by senders.
Definition: rtpsessionparams.h:130
double GetControlTrafficFraction() const
Returns the fraction of the session bandwidth that will be used for control traffic (default is 5%)...
Definition: rtpsessionparams.h:127
ReceiveMode
Three kind of receive modes can be specified.
Definition: rtptransmitter.h:78
void SetReceiveMode(RTPTransmitter::ReceiveMode recvmode)
Sets the receive mode to be used by the session.
Definition: rtpsessionparams.h:82
void SetAcceptOwnPackets(bool accept)
If the argument is true, the session should accept its own packets and store them accordingly in the ...
Definition: rtpsessionparams.h:76
std::string GetCNAME() const
Returns the currently set CNAME, is blank when this will be generated automatically (the default)...
Definition: rtpsessionparams.h:213
This class is used to specify wallclock time, delay intervals etc.
Definition: rtptimeutilities.h:80
void SetSessionBandwidth(double sessbw)
Sets the session bandwidth in bytes per second.
Definition: rtpsessionparams.h:118
bool GetRequestImmediateBYE() const
Returns whether the session should send a BYE packet immediately (if allowed) or not (default is true...
Definition: rtpsessionparams.h:155
bool GetResolveLocalHostname() const
Returns whether the local hostname should be determined from the transmitter's list of local IP addre...
Definition: rtpsessionparams.h:108
size_t GetMaximumPacketSize() const
Returns the maximum allowed packet size (default is 1400 bytes).
Definition: rtpsessionparams.h:71
void SetUsePredefinedSSRC(bool f)
Sets a flag which indicates if a predefined SSRC identifier should be used.
Definition: rtpsessionparams.h:198
RTPTransmitter::ReceiveMode GetReceiveMode() const
Sets the receive mode to be used by the session (default is: accept all packets). ...
Definition: rtpsessionparams.h:85
void SetProbationType(RTPSources::ProbationType probtype)
If probation support is enabled, this function sets the probation type to be used.
Definition: rtpsessionparams.h:111
void SetMaximumPacketSize(size_t max)
Sets the maximum allowed packet size for the session.
Definition: rtpsessionparams.h:68
int SetUsePollThread(bool usethread)
If usethread is true, the session will use a poll thread to automatically process incoming data and t...
RTPTime GetMinimumRTCPTransmissionInterval() const
Returns the minimal time interval between sending RTCP packets (default is 5 seconds).
Definition: rtpsessionparams.h:139
double GetOwnTimestampUnit() const
Returns the currently set timestamp unit.
Definition: rtpsessionparams.h:96
double GetSourceTimeoutMultiplier() const
Returns the multiplier to be used when timing out members (default is 5).
Definition: rtpsessionparams.h:177
bool AcceptOwnPackets() const
Returns true if the session should accept its own packets (default is false).
Definition: rtpsessionparams.h:79
void SetControlTrafficFraction(double frac)
Sets the fraction of the session bandwidth to be used for control traffic.
Definition: rtpsessionparams.h:124
void SetResolveLocalHostname(bool v)
Sets a flag indicating if a DNS lookup should be done to determine our hostname (to construct a CNAME...
Definition: rtpsessionparams.h:103
void SetSourceTimeoutMultiplier(double m)
Sets the multiplier to be used when timing out members.
Definition: rtpsessionparams.h:174
void SetMinimumRTCPTransmissionInterval(const RTPTime &t)
Set the minimal time interval between sending RTCP packets.
Definition: rtpsessionparams.h:136
Describes the parameters for to be used by an RTPSession instance.
Definition: rtpsessionparams.h:54
bool IsUsingPollThread() const
Returns whether the session should use a poll thread or not (default is true).
Definition: rtpsessionparams.h:65
void SetSenderReportForBYE(bool v)
When sending a BYE packet, this indicates whether it will be part of an RTCP compound packet that beg...
Definition: rtpsessionparams.h:160
double GetCollisionTimeoutMultiplier() const
Returns the multiplier to be used when timing out entries in the collision table (default is 10)...
Definition: rtpsessionparams.h:189
double GetBYETimeoutMultiplier() const
Returns the multiplier to be used when timing out a member after it has sent a BYE packet (default is...
Definition: rtpsessionparams.h:183
RTPSources::ProbationType GetProbationType() const
Returns the probation type which will be used (default is RTPSources::ProbationStore).
Definition: rtpsessionparams.h:114