27 #ifndef OPAL_OPAL_MEDIASESSION_H
28 #define OPAL_OPAL_MEDIASESSION_H
38 #include <ptlib/notifier_ext.h>
47 class H235SecurityCapability;
55 #define OPAL_OPT_MEDIA_RX_TIMEOUT "Media-Rx-Timeout"
60 #define OPAL_OPT_MEDIA_TX_TIMEOUT "Media-Tx-Timeout"
78 struct OpalCandidateStatistics : PNatCandidate
80 OpalCandidateStatistics(
const PNatCandidate & cand);
82 virtual void PrintOn(ostream & strm)
const;
85 unsigned m_nominations;
86 PTime m_lastNomination;
95 } m_rxRequests, m_txRequests;
108 std::vector<OpalCandidateStatistics> m_candidates;
222 virtual void PrintOn(ostream & strm)
const;
246 unsigned GetRateInt(int64_t current, int64_t previous)
const;
251 PString
GetRateStr(int64_t total,
const char * units =
"",
unsigned significantFigures = 0)
const;
252 PString
GetRateStr(int64_t current, int64_t previous,
const char * units =
"",
unsigned significantFigures = 0)
const;
264 PString
GetAverageFrameRate(
const char * units =
"",
unsigned significantFigures = 0)
const;
265 PString
GetCurrentFrameRate(
const char * units =
"",
unsigned significantFigures = 0)
const;
273 P_DEPRECATED PString
GetRate(int64_t current, int64_t previous,
const char * units =
"",
unsigned significantFigures = 0)
const
274 {
return GetRateStr(current, previous, units, significantFigures); }
291 virtual bool IsValid()
const = 0;
293 virtual bool FromString(
const PString & str) = 0;
294 virtual PString
ToString()
const = 0;
297 virtual bool SetAuthSalt(
const PBYTEArray & key) = 0;
314 void Select(iterator & it);
328 static const PCaselessString &
ClearText();
330 virtual void PrintOn(ostream & strm)
const;
333 virtual bool Supports(
const PCaselessString & proto)
const = 0;
334 P_DECLARE_BITWISE_ENUM(KeyExchangeModes, 3, (e_NoMode, e_AllowClear, e_SecureSignalling, e_InBandKeyEchange));
335 virtual bool ChangeSessionType(PCaselessString & mediaSession, KeyExchangeModes modes)
const = 0;
339 virtual const char * GetDTLSName()
const;
341 #if OPAL_H235_6 || OPAL_H235_8
342 virtual H235SecurityCapability * CreateCapability(
const H323Capability & mediaCapability)
const;
343 virtual const char * GetOID()
const = 0;
354 struct List : PList<OpalMediaCryptoSuite>
356 List() { DisallowDeleteObjects(); }
359 const PStringArray & cryptoSuiteNames,
360 const char * prefix = NULL
364 P_REMOVE_VIRTUAL(H235SecurityCapability *,CreateCapability(
const OpalMediaFormat &,
unsigned)
const,0);
396 PDECLARE_INSTRUMENTED_READ_WRITE_MUTEX(m_instrumentedMutex,
OpalMediaTransport, 500, 100);
401 virtual void PrintOn(ostream & strm)
const;
414 const PString & localInterface,
420 virtual bool IsOpen()
const;
424 virtual void Start();
451 const PString & user,
452 const PString & pass,
453 const PNatCandidateList & candidates
461 PNatCandidateList & candidates,
471 const PIPSocketAddressAndPort * remote = NULL,
478 virtual bool GetKeyInfo(
487 #define PDECLARE_MediaReadNotifier(cls, fn) PDECLARE_NOTIFIER2(OpalMediaTransport, cls, fn, PBYTEArray)
594 #if defined(__GNUC__) && __cplusplus < 201103
615 virtual bool Write(
const void * data, PINDEX length,
SubChannels =
e_Media,
const PIPSocketAddressAndPort * = NULL,
int * = NULL);
629 virtual bool Write(
const void * data, PINDEX length,
SubChannels =
e_Media,
const PIPSocketAddressAndPort * = NULL,
int * = NULL);
651 PDECLARE_INSTRUMENTED_READ_WRITE_MUTEX(m_instrumentedMutex,
OpalMediaSession, 500, 100);
679 virtual void PrintOn(ostream & strm)
const;
688 const PString & localInterface,
694 virtual bool IsOpen()
const;
698 virtual void Start();
706 virtual bool Close();
755 const PString & groupId,
756 const PString & mediaId,
757 bool overwrite =
true
764 const PString & groupId
776 const PString & groupId
782 virtual SDPMediaDescription * CreateSDPMediaDescription();
859 P_REMOVE_VIRTUAL(
bool,
Open(
const PString &),
false);
865 P_REMOVE_VIRTUAL_VOID(SetRemoteUserPass(
const PString &,
const PString &));
888 virtual bool IsOpen()
const;
895 virtual SDPMediaDescription * CreateSDPMediaDescription();
901 PStringArray m_sdpTokens;
918 #endif // OPAL_OPAL_MEDIASESSION_H
PTime m_lastPacketNetTime
Definition: mediasession.h:137
OpalDummySession(const Init &init)
int m_resolutionX
Definition: mediasession.h:194
PString m_errorText
Definition: mediasession.h:203
unsigned m_droppedFrames
Definition: mediasession.h:153
virtual OpalMediaStream * CreateMediaStream(const OpalMediaFormat &mediaFormat, unsigned sessionID, bool isSource)
unsigned m_keyFrames
Definition: mediasession.h:152
static const PCaselessString & SessionType()
Definition: mediasession.h:876
int m_txPages
Definition: mediasession.h:190
Definition: mediasession.h:65
uint64_t m_totalBytes
Definition: mediasession.h:112
void IncrementUpdateCount(bool full)
int m_rxPages
Definition: mediasession.h:191
OpalTransportAddress m_localAddress
Definition: mediasession.h:104
unsigned m_targetBitRate
Definition: mediasession.h:139
Definition: mediasession.h:99
int m_pageHeight
Definition: mediasession.h:197
FaxCompression m_compression
Definition: mediasession.h:188
int m_averageJitter
Definition: mediasession.h:131
unsigned m_tsto
Definition: mediasession.h:161
Definition: h323caps.h:95
Definition: mediasession.h:176
int m_maximumJitter
Definition: mediasession.h:132
PString m_transportName
Definition: mediasession.h:103
bool m_errorCorrection
Definition: mediasession.h:189
virtual const PCaselessString & GetSessionType() const
PTime m_lastReportTime
Definition: mediasession.h:138
int m_videoQuality
Definition: mediasession.h:162
unsigned m_controlPacketsOut
Definition: mediasession.h:115
FaxCompression
Definition: mediasession.h:175
virtual OpalMediaTransportPtr DetachTransport()
virtual OpalTransportAddress GetLocalAddress(bool isMediaAddress=true) const
PTime m_lastKeyFrameTime
Definition: mediasession.h:154
PFACTORY_LOAD(OpalPluginCodecManager)
int m_result
Definition: mediasession.h:185
uint32_t m_rtxSSRC
Definition: mediasession.h:117
int m_imageSize
Definition: mediasession.h:193
virtual OpalTransportAddress GetRemoteAddress(bool isMediaAddress=true) const
virtual bool IsOpen() const
char m_phase
Definition: mediasession.h:186
unsigned m_totalPackets
Definition: mediasession.h:113
Definition: mediasession.h:173
Definition: mediasession.h:166
int m_roundTripTime
Definition: mediasession.h:134
PString m_stationId
Definition: mediasession.h:202
unsigned m_fullUpdateRequests
Definition: mediasession.h:155
int m_errorCorrectionRetries
Definition: mediasession.h:200
virtual void AttachTransport(const OpalMediaTransportPtr &)
int m_NACKs
Definition: mediasession.h:116
int m_totalPages
Definition: mediasession.h:192
int m_rtxDuplicates
Definition: mediasession.h:119
Definition: mediasession.h:172
int m_lateOutOfOrder
Definition: mediasession.h:125
Definition: mediasession.h:170
int m_FEC
Definition: mediasession.h:120
OpalTransportAddress m_remoteAddress
Definition: mediasession.h:105
int m_pageWidth
Definition: mediasession.h:196
int m_jitterBufferDelay
Definition: mediasession.h:133
unsigned m_controlPacketsIn
Definition: mediasession.h:114
PTimeInterval m_updateResponseTime
Definition: mediasession.h:158
int m_maxConsecutiveLost
Definition: mediasession.h:123
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
int m_packetsLost
Definition: mediasession.h:122
int m_maximumPacketTime
Definition: mediasession.h:130
float m_targetFrameRate
Definition: mediasession.h:140
int m_badRows
Definition: mediasession.h:198
Definition: mediasession.h:143
unsigned m_pictureLossRequests
Definition: mediasession.h:156
int m_mostBadRows
Definition: mediasession.h:199
PTime m_lastPacketAbsTime
Definition: mediasession.h:136
Definition: mediasession.h:171
PString m_mediaFormat
Definition: mediasession.h:70
friend ostream & operator<<(ostream &strm, FaxCompression compression)
void IncrementFrames(bool key)
int m_packetsOutOfOrder
Definition: mediasession.h:124
int m_resolutionY
Definition: mediasession.h:195
unsigned m_frameHeight
Definition: mediasession.h:160
Definition: mediasession.h:178
virtual bool SetRemoteAddress(const OpalTransportAddress &remoteAddress, bool isMediaAddress=true)
int m_averagePacketTime
Definition: mediasession.h:129
int m_minimumPacketTime
Definition: mediasession.h:128
int m_lastPacketRTP
Definition: mediasession.h:135
Definition: connection.h:415
virtual bool Open(const PString &localInterface, const OpalTransportAddress &remoteAddress)
int m_packetOverruns
Definition: mediasession.h:127
PTime m_startTime
Definition: mediasession.h:111
OpalMediaType m_mediaType
Definition: mediasession.h:69
int m_bitRate
Definition: mediasession.h:187
Definition: transports.h:151
Definition: transports.h:326
int m_rtxPackets
Definition: mediasession.h:118
PThreadIdentifier m_threadIdentifier
Definition: mediasession.h:74
int m_payloadType
Definition: mediasession.h:72
Definition: mediasession.h:179
int m_unrecovered
Definition: mediasession.h:121
unsigned m_totalFrames
Definition: mediasession.h:151
uint32_t m_SSRC
Definition: mediasession.h:71
Definition: mediasession.h:177
unsigned m_frameWidth
Definition: mediasession.h:159
PTime m_lastUpdateRequestTime
Definition: mediasession.h:157
int m_packetsTooLate
Definition: mediasession.h:126