RTP Trace System
1.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### RTP Receiver #### 00007 // #### #### 00008 // #### Version 1.00 -- February 16, 2001 #### 00009 // #### #### 00010 // #### Copyright (C) 1999 Thomas Dreibholz #### 00011 // #### 2000 Universität Bonn, Abt. IV #### 00012 // #### 2001 EMail: dreibh@iem.uni-due.de #### 00013 // #### WWW: https://www.uni-due.de/~be0001 #### 00014 // #### #### 00015 // ########################################################################## 00016 00017 00018 #ifndef RTPRECEIVER_H 00019 #define RTPRECEIVER_H 00020 00021 00022 #include "system.h" 00023 #include "thread.h" 00024 #include "socket.h" 00025 #include "rtppacket.h" 00026 #include "decoderinterface.h" 00027 #include "sourcestateinfo.h" 00028 #include "internetflow.h" 00029 #ifdef USE_TRANSPORTINFO 00030 #include "transportinfo.h" 00031 #endif 00032 00033 00034 namespace Coral { 00035 00036 00044 class RTPReceiver : public Thread 00045 { 00046 // ====== Constructor/Destructor ========================================= 00047 public: 00054 RTPReceiver(); 00055 00065 RTPReceiver(DecoderInterface* decoder, 00066 Socket* receiverSocket); 00067 00071 ~RTPReceiver(); 00072 00073 00074 // ====== Initialize ===================================================== 00084 void init(DecoderInterface* decoder, 00085 Socket* receiverSocket); 00086 00087 00088 // ====== Status functions =============================================== 00089 #ifdef USE_TRANSPORTINFO 00090 00097 inline void getTransportInfo(TransportInfo& transportInfo, 00098 const bool calculateLevels) const; 00099 #endif 00100 00107 inline card64 getPosition() const; 00108 00115 inline card64 getMaxPosition() const; 00116 00123 inline card64 getBytesReceived(const cardinal layer) const; 00124 00131 inline card64 getPacketsReceived(const cardinal layer) const; 00132 00138 inline void resetBytesReceived(const cardinal layer); 00139 00145 inline void resetPacketsReceived(const cardinal layer); 00146 00152 inline cardinal getLayers() const; 00153 00160 inline InternetFlow getInternetFlow(const cardinal layer = 0) const; 00161 00165 inline SourceStateInfo getSSI(const cardinal layer = 0) const; 00166 00167 00172 friend class RTCPSender; 00173 00174 00175 // ====== Protected data ================================================= 00176 protected: 00177 cardinal Layers; 00178 InternetFlow Flow[RTPConstants::RTPMaxQualityLayers]; 00179 SourceStateInfo SSI[RTPConstants::RTPMaxQualityLayers]; 00180 card64 BytesReceived[RTPConstants::RTPMaxQualityLayers]; 00181 card64 PacketsReceived[RTPConstants::RTPMaxQualityLayers]; 00182 00183 00184 // ====== Private data =================================================== 00185 private: 00186 void run(); 00187 00188 00189 DecoderInterface* Decoder; 00190 Socket* ReceiverSocket; 00191 }; 00192 00193 00194 } 00195 00196 00197 #include "rtpreceiver.icc" 00198 00199 00200 #endif