RTPPacket.cc

Go to the documentation of this file.
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