RTP Trace System
1.0
|
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