00001 /*************************************************************************** 00002 RTPPacket.cc - description 00003 ------------------- 00004 begin : Mon Oct 22 2001 00005 copyright : (C) 2001 by Matthias Oppitz 00006 email : Matthias.Oppitz@gmx.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00022 #include "RTPPacket.h" 00023 00024 Register_Class(RTPPacket); 00025 00026 00027 RTPPacket::RTPPacket(const char *name) : cPacket(name) 00028 { 00029 _version = 2; 00030 _padding = 0; 00031 _extension = 0; 00032 _csrcCount = 0; 00033 _marker = 0; 00034 _payloadType = 0; 00035 _sequenceNumber = 0; 00036 _timeStamp = 0; 00037 _ssrc = 0; 00038 00039 // a standard rtp packet without csrcs and data has a length of 12 bytes 00040 setByteLength(getFixedHeaderLength()); 00041 } 00042 00043 00044 RTPPacket::RTPPacket(const RTPPacket& packet) : cPacket() 00045 { 00046 setName(packet.getName()); 00047 operator=(packet); 00048 } 00049 00050 00051 RTPPacket::~RTPPacket() 00052 { 00053 // when csrcList is implemented this 00054 // should free the memory used for it 00055 } 00056 00057 00058 RTPPacket *RTPPacket::dup() const 00059 { 00060 return new RTPPacket(*this); 00061 } 00062 00063 00064 RTPPacket& RTPPacket::operator=(const RTPPacket& packet) 00065 { 00066 cPacket::operator=(packet); 00067 _version = packet._version; 00068 _padding = packet._padding; 00069 _extension = packet._extension; 00070 _csrcCount = packet._csrcCount; 00071 _marker = packet._marker; 00072 _payloadType = packet._payloadType; 00073 _sequenceNumber = packet._sequenceNumber; 00074 _timeStamp = packet._timeStamp; 00075 _ssrc = packet._ssrc; 00076 return *this; 00077 } 00078 00079 00080 std::string RTPPacket::info() 00081 { 00082 std::stringstream out; 00083 out << "RTPPacket: payloadType=" << _payloadType << " payloadLength=" << getPayloadLength(); 00084 return out.str(); 00085 } 00086 00087 00088 void RTPPacket::dump() 00089 { 00090 ev << "RTPPacket:" << endl; 00091 ev << " payloadType = " << _payloadType << endl; 00092 ev << " sequenceNumber = " << _sequenceNumber << endl; 00093 ev << " timeStamp = " << _timeStamp << endl; 00094 ev << " payloadLength = " << getPayloadLength() << endl; 00095 } 00096 00097 00098 int RTPPacket::getMarker() 00099 { 00100 return _marker; 00101 } 00102 00103 00104 void RTPPacket::setMarker(int marker) 00105 { 00106 _marker = marker; 00107 } 00108 00109 00110 int RTPPacket::getPayloadType() 00111 { 00112 return _payloadType; 00113 } 00114 00115 00116 void RTPPacket::setPayloadType(int payloadType) 00117 { 00118 _payloadType = payloadType; 00119 } 00120 00121 00122 uint16 RTPPacket::getSequenceNumber() 00123 { 00124 return _sequenceNumber; 00125 } 00126 00127 00128 void RTPPacket::setSequenceNumber(uint16 sequenceNumber) 00129 { 00130 _sequenceNumber = sequenceNumber; 00131 } 00132 00133 00134 uint32 RTPPacket::getTimeStamp() 00135 { 00136 return _timeStamp; 00137 } 00138 00139 00140 void RTPPacket::setTimeStamp(uint32 timeStamp) 00141 { 00142 _timeStamp = timeStamp; 00143 } 00144 00145 00146 uint32 RTPPacket::getSSRC() 00147 { 00148 return _ssrc; 00149 } 00150 00151 00152 void RTPPacket::setSSRC(uint32 ssrc) 00153 { 00154 _ssrc = ssrc; 00155 } 00156 00157 int RTPPacket::getFixedHeaderLength() 00158 { 00159 return 12; 00160 } 00161 00162 int RTPPacket::getHeaderLength() 00163 { 00164 // fixed header is 12 bytes long, 00165 // add 4 bytes for every csrc identifier 00166 return(getFixedHeaderLength() + 4 * _csrcCount); 00167 } 00168 00169 00170 int RTPPacket::getPayloadLength() 00171 { 00172 return(getByteLength() - getHeaderLength()); 00173 } 00174 00175 00176