RTP Audio System  2.0.0
rtpreceiver.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines