30 #ifndef OPAL_RTP_RTP_H
31 #define OPAL_RTP_RTP_H
39 #include <ptclib/url.h>
61 void PrintOn(ostream &)
const;
110 virtual void PrintOn(ostream &)
const;
228 const PTimeInterval & delay
240 PUInt16b burst_duration;
241 PUInt16b gap_duration;
242 PUInt16b round_trip_delay;
243 PUInt16b end_system_delay;
256 PUInt16b jb_absolute;
305 const PString & cname,
306 const PString & toolName,
307 bool endPacket =
true
372 unsigned & maxBitRate,
418 unsigned sequenceNumber
423 unsigned & sequenceNumber
436 unsigned sequenceNumber
442 unsigned & sequenceNumber
459 unsigned & maxBitRate
481 virtual PBoolean SetSize(PINDEX sz) {
return PBYTEArray::SetSize(sz); }
492 void PrintOn(ostream &)
const;
510 void PrintOn(ostream &)
const;
529 void PrintOn(ostream &)
const;
545 RTP_DataFrame(PINDEX payloadSize = 0, PINDEX bufferSize = 0);
546 RTP_DataFrame(
const BYTE * data, PINDEX len,
bool dynamic =
true);
603 bool GetMarker()
const {
return (theArray[1]&0x80) != 0; }
607 void SetPadding(
bool v) {
if (v) theArray[0] |= 0x20;
else theArray[0] &= 0xdf; }
685 bool SetPayload(
const BYTE * data, PINDEX sz);
690 virtual void PrintOn(ostream & strm)
const;
782 virtual PBoolean SetSize(PINDEX sz) {
return PBYTEArray::SetSize(sz); }
813 const PString & attributes = PString::Empty()
818 const PString & attributes = PString::Empty()
822 virtual void PrintOn(ostream & strm)
const;
824 virtual Comparison Compare(
const PObject & other)
const;
827 bool ParseSDP(
const PString & param);
828 void OutputSDP(ostream & strm)
const;
849 friend std::ostream &
operator<<(std::ostream & strm,
const RTP_TRACE_SRC & src)
851 return strm << src.m_src <<
" (0x" << std::hex << src.m_src << std::dec <<
')';
859 #endif // OPAL_RTP_RTP_H
PUInt32b ssrc
Definition: rtp.h:178
PUInt32b requestSSRC
Definition: rtp.h:427
void SetLostPackets(int packets)
RTP_SyncSourceId m_ssrc
Definition: rtp.h:532
void AddReceiverReferenceTimeReport(RTP_SyncSourceId ssrc, const PTime &ntp)
void AddFIR(RTP_SyncSourceId syncSourceOut, RTP_SyncSourceId syncSourceIn, unsigned sequenceNumber)
void Copy(const RTP_DataFrame &other)
PUInt16b packetID
Definition: rtp.h:338
struct RTP_ControlFrame::FbNACK::Field fld[1]
BYTE fraction
Definition: rtp.h:156
BYTE bitRate[3]
Definition: rtp.h:448
unsigned totalLost
Definition: rtp.h:515
TransportLayerFbTypes
Definition: rtp.h:328
bool SetPaddingSize(PINDEX sz)
virtual PObject * Clone() const
Definition: rtp.h:688
bool SetPacketSize(PINDEX size)
BYTE type_specific
Definition: rtp.h:201
unsigned int GetLengthTotal() const
Definition: rtp.h:285
PUInt64b ntp_ts
Definition: rtp.h:179
bool SetPayloadSize(PINDEX sz)
void AddPLI(RTP_SyncSourceId syncSourceOut, RTP_SyncSourceId syncSourceIn)
PINDEX GetPaddingSize() const
Definition: rtp.h:610
unsigned m_sessionID
Session ID we sent packet on, unused on rx RTCP.
Definition: rtp.h:86
unsigned GetVersion() const
Definition: rtp.h:598
bool AdjustHeaderSize(PINDEX newSize)
bool ParseReceiverReport(RTP_SyncSourceId &ssrc, const ReceiverReport *&rr, unsigned &count)
void AddApplDefined(const ApplDefinedInfo &info)
PUInt32b jitter
Definition: rtp.h:159
void AddNACK(RTP_SyncSourceId syncSourceOut, RTP_SyncSourceId syncSourceIn, const LostPacketMask &lostPackets)
PTimeInterval delay
Definition: rtp.h:519
RTP_ReceiverReport(const RTP_ControlFrame::ReceiverReport &report, uint64_t ntpPassThru)
int GetLostPackets() const
PayloadTypes GetPayloadType() const
Definition: rtp.h:613
void SetReceivedTime(const PTime &when)
Definition: rtp.h:743
unsigned m_subType
Definition: rtp.h:466
PUInt32b psent
Definition: rtp.h:181
void SetTimestamp(RTP_Timestamp t)
Definition: rtp.h:620
PUInt32b requestSSRC
Definition: rtp.h:359
RTP_TransportWideCongestionControl()
BYTE length
Definition: rtp.h:278
MetaData m_metaData
Definition: rtp.h:775
RTP_SyncSourceId sourceIdentifier
Definition: rtp.h:513
POrdinalToString items
Definition: rtp.h:65
void SetContribSource(PINDEX idx, RTP_SyncSourceId src)
bool SetPacketSize(PINDEX sz)
PUInt32b ssrc
Definition: rtp.h:155
bool ParseTSTO(RTP_SyncSourceId &senderSSRC, RTP_SyncSourceId &targetSSRC, unsigned &tradeOff, unsigned &sequenceNumber)
bool ParseApplDefined(ApplDefinedInfo &info)
PINDEX m_payloadSize
Definition: rtp.h:478
bool GetMarker() const
Definition: rtp.h:603
PArray< RTP_SourceDescription > RTP_SourceDescriptionArray
Definition: rtp.h:68
P_DEPRECATED void SetBundleId(const PString &id)
Definition: rtp.h:767
bool ParseSenderReport(RTP_SenderReport &txReport, const ReceiverReport *&rr, unsigned &count)
BYTE numSSRC
Definition: rtp.h:447
bool StartNewPacket(PayloadTypes pt)
RTP_ControlFrame(PINDEX compoundSize=2048)
RTP_SyncSourceId m_SSRC
SSRC we sent packet with, unused on rx RTCP.
Definition: rtp.h:87
bool SetPayloadSize(PINDEX sz)
PINDEX GetContribSrcCount() const
Definition: rtp.h:625
std::vector< RTP_SyncSourceId > RTP_SyncSourceArray
Definition: rtp.h:47
bool GetPadding() const
Definition: rtp.h:606
friend ostream & operator<<(ostream &strm, const LostPacketMask &mask)
static const unsigned MaxHeaderExtensionIdTwoByte
Definition: rtp.h:655
bool ParseFIR(RTP_SyncSourceId &senderSSRC, RTP_SyncSourceId &targetSSRC, unsigned &sequenceNumber)
PTime m_lastTimestamp
Definition: rtp.h:533
PUInt16b length
Definition: rtp.h:202
unsigned GetVersion() const
Definition: rtp.h:115
RTP_DelayLastReceiverReport(const RTP_ControlFrame::DelayLastReceiverReport::Receiver &dlrr)
bool ParsePLI(RTP_SyncSourceId &senderSSRC, RTP_SyncSourceId &targetSSRC)
void SetLipSyncId(const PString &id)
Definition: rtp.h:763
unsigned m_rtcpSequenceNumber
RTCP sequence number, note, lower 8 bits only are significant.
Definition: rtp.h:95
RTP_DataFrame(PINDEX payloadSize=0, PINDEX bufferSize=0)
void StartSourceDescription(RTP_SyncSourceId src)
PUInt64b ntp
Definition: rtp.h:206
void AddTWCC(RTP_SyncSourceId syncSourceOut, const RTP_TransportWideCongestionControl &info)
uint16_t RTP_SequenceNumber
Definition: rtp.h:45
RTP_SyncSourceId sourceIdentifier
Definition: rtp.h:64
PUInt32b rtp_ts
Definition: rtp.h:180
uint64_t ntpPassThrough
Definition: rtp.h:496
PINDEX GetExtensionSizeDWORDs() const
unsigned lastSequenceNumber
Definition: rtp.h:516
PayloadTypes
Definition: rtp.h:556
unsigned GetDiscontinuity() const
Definition: rtp.h:749
PINDEX m_compoundOffset
Definition: rtp.h:477
unsigned GetCount() const
Definition: rtp.h:117
RTP_SequenceNumber GetSequenceNumber() const
Definition: rtp.h:616
void SetSyncSource(RTP_SyncSourceId s)
Definition: rtp.h:623
bool SetHeaderExtension(unsigned id, PINDEX length, const BYTE *data, HeaderExtensionType type)
unsigned octetsSent
Definition: rtp.h:500
struct RTP_ControlFrame::SourceDescription::Item item[1]
bool ParseTWCC(RTP_SyncSourceId &senderSSRC, RTP_TransportWideCongestionControl &info)
PUInt32b lsr
Definition: rtp.h:160
void SetSequenceNumber(RTP_SequenceNumber n)
Definition: rtp.h:617
PUInt32b feedbackSSRC[1]
Definition: rtp.h:449
BYTE type
Definition: rtp.h:277
PayloadTypes
Definition: rtp.h:122
struct RTP_ControlFrame::DelayLastReceiverReport::Receiver m_receiver[1]
unsigned jitter
Definition: rtp.h:517
BYTE bt
Definition: rtp.h:200
void SetAbsoluteTime(const PTime &t)
Definition: rtp.h:734
PINDEX GetPayloadSize() const
Definition: rtp.h:683
BYTE sequenceNumber
Definition: rtp.h:413
PTimeInterval m_delay
Definition: rtp.h:534
BYTE * GetHeaderExtension(unsigned &id, PINDEX &length, int idx=-1) const
PUInt32b dlsr
Definition: rtp.h:161
PUInt32b osent
Definition: rtp.h:182
bool ParseTMMB(RTP_SyncSourceId &senderSSRC, RTP_SyncSourceId &targetSSRC, unsigned &maxBitRate, unsigned &overhead)
static const unsigned MaxHeaderExtensionIdOneByte
Definition: rtp.h:654
unsigned GetFbType() const
Definition: rtp.h:322
BYTE sequenceNumber
Definition: rtp.h:428
PUInt16b bitmask
Definition: rtp.h:339
ReceiverReport * AddReceiverReport(RTP_SyncSourceId ssrc, unsigned receivers)
BYTE * GetPayloadPtr() const
Definition: rtp.h:686
RTP_SyncSourceId GetContribSource(PINDEX idx) const
void SetTransmitTime(const PTime &when)
Definition: rtp.h:738
uint8_t referenceTime[3]
Definition: rtp.h:379
bool ParseGoodbye(RTP_SyncSourceId &ssrc, RTP_SyncSourceArray &csrc, PString &msg)
PUInt16b baseSN
Definition: rtp.h:377
void AddSourceDescription(RTP_SyncSourceId ssrc, const PString &cname, const PString &toolName, bool endPacket=true)
void AddTMMB(RTP_SyncSourceId syncSourceOut, RTP_SyncSourceId syncSourceIn, unsigned maxBitRate, unsigned overhead, bool notify)
PUInt32b requestSSRC
Definition: rtp.h:412
PUInt32b bitRateAndOverhead
Definition: rtp.h:360
PINDEX GetPacketSize() const
Definition: rtp.h:148
RTP_SyncSourceId GetSenderSyncSource() const
Definition: rtp.h:120
PTime realTimestamp
Definition: rtp.h:497
PLIST(H323LogicalChannelList, H323Channel)
FbHeader * AddFeedback(PayloadTypes pt, unsigned type, PINDEX fciSize)
bool ParseSourceDescriptions(RTP_SourceDescriptionArray &descriptions)
const PString & GetLipSyncId() const
Definition: rtp.h:758
RTP_SyncSourceId sourceIdentifier
Definition: rtp.h:495
PayloadTypes GetPayloadType() const
Definition: rtp.h:136
PINDEX GetHeaderSize() const
Definition: rtp.h:629
HeaderExtensionType
Extension header types.
Definition: rtp.h:647
BYTE reserver[2]
Definition: rtp.h:429
BYTE * GetPaddingPtr() const
Definition: rtp.h:608
ApplDefinedInfo(const char *type=NULL, unsigned subType=0, RTP_SyncSourceId ssrc=0, const BYTE *data=NULL, PINDEX size=0)
PINDEX GetPacketSize() const
DescriptionTypes
Definition: rtp.h:261
ostream & operator<<(ostream &strm, OpalSilenceDetector::Mode mode)
void AddIFR(RTP_SyncSourceId syncSourceIn)
char m_type[5]
Definition: rtp.h:465
bool SetPayload(const BYTE *data, PINDEX sz)
RTP_SourceDescription(RTP_SyncSourceId src)
Definition: rtp.h:59
void SetDiscontinuity(unsigned lost)
Definition: rtp.h:753
void SetExtension(bool ext)
void SetMetaData(const MetaData &metaData)
Definition: rtp.h:725
PBYTEArray m_data
Definition: rtp.h:468
bool ParseNACK(RTP_SyncSourceId &senderSSRC, RTP_SyncSourceId &targetSSRC, LostPacketMask &lostPackets)
uint32_t RTP_Timestamp
Definition: rtp.h:44
void SetPayloadType(PayloadTypes pt)
BYTE * GetPayloadPtr() const
void SetPadding(bool v)
Definition: rtp.h:607
unsigned packetsSent
Definition: rtp.h:499
Item * GetNextItem()
Definition: rtp.h:287
PUInt16b statusCount
Definition: rtp.h:378
void SetPayloadType(PayloadTypes t)
PacketMap m_packets
Info of each packet that was sent.
Definition: rtp.h:94
RTP_Timestamp GetTimestamp() const
Definition: rtp.h:619
bool SetExtensionSizeDWORDs(PINDEX sz)
P_DEPRECATED const PString & GetBundleId() const
Definition: rtp.h:766
void CopyHeader(const RTP_DataFrame &other)
void AddSourceDescriptionItem(unsigned type, const PString &data)
BYTE lost[3]
Definition: rtp.h:157
DelayLastReceiverReport::Receiver * AddDelayLastReceiverReport(RTP_SyncSourceId ssrc, unsigned receivers)
const Item * GetNextItem() const
Definition: rtp.h:286
void SetAbsoluteTime()
Definition: rtp.h:733
bool ParseREMB(RTP_SyncSourceId &senderSSRC, RTP_SyncSourceArray &targetSSRCs, unsigned &maxBitRate)
unsigned fractionLost
Definition: rtp.h:514
RTP_Timestamp rtpTimestamp
Definition: rtp.h:498
void SetCount(unsigned count)
PINDEX GetPayloadSize() const
Definition: rtp.h:139
uint8_t rtcpSN
Definition: rtp.h:380
PINDEX m_headerSize
Definition: rtp.h:772
RTP_SyncSourceId m_SSRC
Definition: rtp.h:467
uint32_t RTP_SyncSourceId
Definition: rtp.h:46
PTime lastTimestamp
Definition: rtp.h:518
const MetaData & GetMetaData() const
Definition: rtp.h:721
PINDEX m_packetSize
Definition: rtp.h:476
PINDEX m_paddingSize
Definition: rtp.h:774
PTimeInterval m_timestamp
Time relative to an arbitrary moment in time.
Definition: rtp.h:85
void SetTransmitTimeNTP(uint64_t ntp)
Definition: rtp.h:739
BYTE tradeOff
Definition: rtp.h:430
std::map< unsigned, Info > PacketMap
Definition: rtp.h:93
static const unsigned MaxHeaderExtensionId
Definition: rtp.h:653
PUInt32b src
Definition: rtp.h:275
ReceiverReport * AddSenderReport(RTP_SyncSourceId ssrc, const PTime &ntp, RTP_Timestamp ts, unsigned packets, uint64_t octets, unsigned receivers)
void AddREMB(RTP_SyncSourceId syncSourceOut, RTP_SyncSourceId syncSourceIn, unsigned maxBitRate)
PUInt32b last_seq
Definition: rtp.h:158
PUInt32b ssrc
Definition: rtp.h:215
PINDEX m_payloadSize
Definition: rtp.h:773
void AddTSTO(RTP_SyncSourceId syncSourceOut, RTP_SyncSourceId syncSourceIn, unsigned tradeOff, unsigned sequenceNumber)
void AddFeedback(PayloadTypes pt, unsigned type, FB *&data)
Definition: rtp.h:325
RTP_SyncSourceId GetSyncSource() const
Definition: rtp.h:622
PayloadSpecificFbTypes
Definition: rtp.h:391
PUInt32b dlrr
Definition: rtp.h:217
PTime GetAbsoluteTime() const
Definition: rtp.h:729
Info(const PTimeInterval &ts=0, unsigned id=0, RTP_SyncSourceId ssrc=0)
Definition: rtp.h:79
bool GetExtension() const
Definition: rtp.h:600
PUInt32b lrr
Definition: rtp.h:216