00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00043 #ifndef CCXX_RTP_QUEUEBASE_H_
00044 #define CCXX_RTP_QUEUEBASE_H_
00045
00046 #include <commoncpp/pointer.h>
00047 #include <ccrtp/rtppkt.h>
00048 #include <ccrtp/sources.h>
00049
00050 NAMESPACE_COMMONCPP
00051
00068 class __EXPORT AppDataUnit
00069 {
00070 public:
00071 AppDataUnit(const IncomingRTPPkt& packet, const SyncSource& src);
00072
00073 inline ~AppDataUnit()
00074 { }
00075
00079 AppDataUnit(const AppDataUnit& src);
00080
00087 AppDataUnit&
00088 operator=(const AppDataUnit& source);
00089
00093 inline PayloadType
00094 getType() const
00095 { return datablock->getPayloadType(); }
00096
00104 inline const uint8* const
00105 getData() const
00106 { return datablock->getPayload(); }
00107
00111 size_t
00112 getSize() const
00113 { return datablock->getPayloadSize(); }
00114
00118 inline const SyncSource&
00119 getSource() const
00120 { return *source; }
00121
00127 inline bool
00128 isMarked() const
00129 { return datablock->isMarked(); }
00130
00134 inline uint16
00135 getSeqNum() const
00136 { return datablock->getSeqNum(); }
00137
00141 inline uint8
00142 getContributorsCount() const
00143 { return (uint8)datablock->getCSRCsCount(); }
00144
00150 inline const uint32*
00151 getContributorsID() const
00152 { return datablock->getCSRCs(); }
00153
00154 private:
00155 Pointer<const IncomingRTPPkt> datablock;
00156 const SyncSource* source;
00157 };
00158
00166 class __EXPORT RTPQueueBase
00167 {
00168 public:
00176 inline bool
00177 setPayloadFormat(const PayloadFormat& pf)
00178 {
00179 currentPayloadType = pf.getPayloadType();
00180 currentRTPClockRate = pf.getRTPClockRate();
00181 return true;
00182 }
00183
00184 inline uint32 getLocalSSRC() const
00185 { return localSSRC; }
00186
00195 inline uint32 getCurrentRTPClockRate() const
00196 { return currentRTPClockRate; }
00197
00198 inline PayloadType getCurrentPayloadType() const
00199 { return currentPayloadType; }
00200
00201 inline timeval getInitialTime() const
00202 { return initialTime; }
00203
00204 protected:
00209 RTPQueueBase(uint32 *ssrc = NULL);
00210
00211 inline void setLocalSSRC(uint32 ssrc)
00212 { localSSRC = ssrc; localSSRCNetwork = htonl(ssrc); }
00213
00214 inline uint32 getLocalSSRCNetwork() const
00215 { return localSSRCNetwork; }
00216
00217 virtual
00218 ~RTPQueueBase()
00219 { }
00220
00227 inline virtual size_t
00228 dispatchBYE(const std::string&)
00229 { return 0; }
00230
00231 inline virtual void
00232 renewLocalSSRC()
00233 { }
00234
00235 private:
00236
00237 uint32 localSSRC;
00238
00239 uint32 localSSRCNetwork;
00240
00241 uint32 currentRTPClockRate;
00242
00243
00244 PayloadType currentPayloadType;
00245
00246 timeval initialTime;
00247 };
00248
00254 class __EXPORT OutgoingDataQueueBase:
00255 public virtual RTPQueueBase
00256 {
00257 public:
00258 inline size_t
00259 getDefaultMaxSendSegmentSize()
00260 { return defaultMaxSendSegmentSize;}
00261
00268 inline void
00269 setMaxSendSegmentSize(size_t size)
00270 { maxSendSegmentSize = size; }
00271
00272 inline size_t
00273 getMaxSendSegmentSize()
00274 { return maxSendSegmentSize; }
00275
00276 protected:
00277 OutgoingDataQueueBase();
00278
00279 inline virtual
00280 ~OutgoingDataQueueBase()
00281 { }
00282
00283 private:
00284 static const size_t defaultMaxSendSegmentSize;
00285
00286 size_t maxSendSegmentSize;
00287 };
00288
00294 class __EXPORT IncomingDataQueueBase:
00295 public virtual RTPQueueBase
00296 {
00297 public:
00298 inline size_t getDefaultMaxRecvPacketSize() const
00299 { return defaultMaxRecvPacketSize; }
00300
00301 inline size_t
00302 getMaxRecvPacketSize() const
00303 { return maxRecvPacketSize; }
00304
00315 inline void
00316 setMaxRecvPacketSize(size_t maxsize)
00317 { maxRecvPacketSize = maxsize; }
00318
00319 protected:
00320 IncomingDataQueueBase()
00321 { setMaxRecvPacketSize(getDefaultMaxRecvPacketSize()); }
00322
00323 inline virtual
00324 ~IncomingDataQueueBase()
00325 { }
00326
00327 private:
00328 static const size_t defaultMaxRecvPacketSize;
00329
00330 size_t maxRecvPacketSize;
00331 };
00332
00334
00335 END_NAMESPACE
00336
00337 #endif //CCXX_RTP_QUEUEBASE_H_
00338