RTP Trace System  1.0
traceencoder.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                    Master Thesis Implementation                  ####
00004 // ####  Management of Layered Variable Bitrate Multimedia Streams over  ####
00005 // ####                  DiffServ with A Priori Knowledge                ####
00006 // ####                                                                  ####
00007 // #### ================================================================ ####
00008 // ####                                                                  ####
00009 // ####                                                                  ####
00010 // #### Trace Encoder                                                    ####
00011 // ####                                                                  ####
00012 // #### Version 1.00  --  February 19, 2001                              ####
00013 // ####                                                                  ####
00014 // #### Copyright (C) 2000/2001 Thomas Dreibholz                         ####
00015 // #### University of Bonn, Department of Computer Science IV            ####
00016 // #### EMail: dreibh@iem.uni-due.de                                     ####
00017 // #### WWW:   https://www.uni-due.de/~be0001/diplom/index.html          ####
00018 // ####                                                                  ####
00019 // ##########################################################################
00020 
00021 
00022 #ifndef TRACEENCODER_H
00023 #define TRACEENCDOER_H
00024 
00025 
00026 #include "system.h"
00027 #include "traceencoderinterface.h"
00028 #include "tdtfmediareader.h"
00029 #include "abstractqosdescription.h"
00030 #include "rtppacket.h"
00031 
00032 
00033 namespace Coral {
00034 
00035 
00043 class TraceEncoder : public TraceEncoderInterface
00044 {
00045    // ====== Constructor/Destructor =========================================
00046    public:
00052    TraceEncoder(TDTFMediaReader* audioReader);
00053    
00057    ~TraceEncoder();
00058 
00059    // ====== EncoderInterface implementation ================================
00065    const card16 getTypeID() const;
00066    
00072    const char* getTypeName() const;
00073    
00079    void activate();
00080 
00086    void deactivate();
00087 
00093    void reset();
00094 
00100    bool checkInterval(card64& time, bool& newRUList);
00101 
00107    bool prepareNextFrame(const cardinal headerSize,
00108                          const cardinal maxPacketSize,
00109                          const cardinal flags);
00110 
00116    cardinal getNextPacket(EncoderPacket* encoderPacket);
00117 
00123    AbstractQoSDescription* getQoSDescription(const cardinal pktHeaderSize,
00124                                              const cardinal pktMaxSize,
00125                                              const card64   offset);
00126 
00132    void updateQuality(const AbstractQoSDescription* aqd);
00133 
00134 
00135    // ====== TraceEncoderInterface implementation ===========================
00141    double getFrameRate() const;
00142 
00148    void setFrameRate(const double frameRate);
00149 
00155    double getWantedUtilization() const;
00156 
00162    void setWantedUtilization(const double utilization);
00163 
00169    int8 getStreamPriority() const;
00170 
00176    void setStreamPriority(const int8 priority);
00177 
00183    int8 getSessionPriority() const;
00184 
00190    void setSessionPriority(const int8 priority);
00191 
00197    double getMaxTransferDelay() const;
00198 
00204    void setMaxTransferDelay(const double delay);
00205 
00211    card32 getFlags() const;
00212 
00218    void setFlags(const card32 flags);
00219 
00225    card64 getMinWantedBandwidth() const;
00226 
00232    card64 getMaxWantedBandwidth() const;
00233 
00239    void setMinWantedBandwidth(const card64 bandwidth);
00240 
00246    void setMaxWantedBandwidth(const card64 bandwidth);
00247 
00248 
00249    // ====== Public data ====================================================
00250    double   CurrentUtilization;
00251    card64   CurrentBandwidth;
00252 
00253 
00254    // ====== Private data ===================================================
00255    private:
00256    TDTFMediaReader* Source;
00257 
00258    double   ManagerFrameRate;
00259    double   ManagerScaleFactor[RTPConstants::RTPMaxQualityLayers];
00260    cardinal ManagerFrameSizeLimit[RTPConstants::RTPMaxQualityLayers];
00261 
00262    double   MaxTransferDelay;
00263    card64   MinWantedBandwidth;
00264    card64   MaxWantedBandwidth;
00265    double   WantedUtilization;
00266 
00267    double   FrameFrameRate;
00268    double   FrameUtilization;
00269    card64   FramePosition;
00270    card64   FrameMaxPosition;
00271    card64   FrameBandwidth;
00272    card32   FrameFlags;
00273    card32   Flags;
00274 
00275    cardinal FrameSize[RTPConstants::RTPMaxQualityLayers];
00276    cardinal Offset[RTPConstants::RTPMaxQualityLayers];
00277    cardinal FrameID[RTPConstants::RTPMaxQualityLayers];
00278 
00279    cardinal Layers;
00280    cardinal SendError;
00281    card8    ErrorCode;
00282    int8     StreamPriority;
00283    int8     SessionPriority;
00284    bool     Scaled;
00285    bool     Paused;
00286 };
00287 
00288 
00289 }
00290 
00291 
00292 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines