RTP Audio System
2.0.0
|
00001 // ########################################################################## 00002 // #### #### 00003 // #### RTP Audio Server Project #### 00004 // #### ============================ #### 00005 // #### #### 00006 // #### RTP Receiver #### 00007 // #### #### 00008 // #### Copyright (C) 1999-2012 by Thomas Dreibholz #### 00009 // #### #### 00010 // #### Contact: #### 00011 // #### EMail: dreibh@iem.uni-due.de #### 00012 // #### WWW: https://www.nntb.no/~dreibh/rtpaudio #### 00013 // #### #### 00014 // #### ---------------------------------------------------------------- #### 00015 // #### #### 00016 // #### This program is free software: you can redistribute it and/or #### 00017 // #### modify it under the terms of the GNU General Public License as #### 00018 // #### published by the Free Software Foundation, either version 3 of #### 00019 // #### the License, or (at your option) any later version. #### 00020 // #### #### 00021 // #### This program is distributed in the hope that it will be useful, #### 00022 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of #### 00023 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #### 00024 // #### GNU General Public License for more details. #### 00025 // #### #### 00026 // #### You should have received a copy of the GNU General Public #### 00027 // #### License along with this program. If not, see #### 00028 // #### <http://www.gnu.org/licenses/>. #### 00029 // #### #### 00030 // ########################################################################## 00031 // $Id: rtpreceiver.h 1286 2011-12-18 13:43:16Z dreibh $ 00032 00033 00034 #ifndef RTPRECEIVER_H 00035 #define RTPRECEIVER_H 00036 00037 00038 #include "tdsystem.h" 00039 #include "thread.h" 00040 #include "tdsocket.h" 00041 #include "rtppacket.h" 00042 #include "decoderinterface.h" 00043 #include "sourcestateinfo.h" 00044 #include "internetflow.h" 00045 00046 00054 class RTPReceiver : public Thread 00055 { 00056 // ====== Constructor/Destructor ========================================= 00057 public: 00064 RTPReceiver(); 00065 00075 RTPReceiver(DecoderInterface* decoder, 00076 Socket* receiverSocket); 00077 00081 ~RTPReceiver(); 00082 00083 00084 // ====== Initialize ===================================================== 00094 void init(DecoderInterface* decoder, 00095 Socket* receiverSocket); 00096 00097 00098 // ====== Status functions =============================================== 00105 inline card64 getPosition(); 00106 00113 inline card64 getMaxPosition(); 00114 00121 inline card64 getBytesReceived(const cardinal layer); 00122 00129 inline card64 getPacketsReceived(const cardinal layer); 00130 00136 inline void resetBytesReceived(const cardinal layer); 00137 00143 inline void resetPacketsReceived(const cardinal layer); 00144 00150 inline cardinal getLayers(); 00151 00158 inline InternetFlow getInternetFlow(const cardinal layer = 0); 00159 00163 inline SourceStateInfo getSSI(const cardinal layer = 0); 00164 00165 00170 friend class RTCPSender; 00171 00172 00173 // ====== Protected data ================================================= 00174 protected: 00175 cardinal Layers; 00176 InternetFlow Flow[RTPConstants::RTPMaxQualityLayers]; 00177 SourceStateInfo SSI[RTPConstants::RTPMaxQualityLayers]; 00178 card64 BytesReceived[RTPConstants::RTPMaxQualityLayers]; 00179 card64 PacketsReceived[RTPConstants::RTPMaxQualityLayers]; 00180 00181 00182 // ====== Private data =================================================== 00183 private: 00184 void run(); 00185 00186 00187 DecoderInterface* Decoder; 00188 Socket* ReceiverSocket; 00189 }; 00190 00191 00192 #include "rtpreceiver.icc" 00193 00194 00195 #endif