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 Repository #### 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 TRACEENCODERREPOSITORY_H 00023 #define TRACEENCODERREPOSITORY_H 00024 00025 00026 #include "system.h" 00027 #include "synchronizable.h" 00028 #include "encoderrepositoryinterface.h" 00029 #include "traceencoderinterface.h" 00030 00031 00032 #include <multimap.h> 00033 #include <algo.h> 00034 00035 00036 namespace Coral { 00037 00038 00046 class TraceEncoderRepository : virtual public EncoderRepositoryInterface, 00047 virtual public TraceEncoderInterface 00048 { 00049 // ====== Constructor/Destructor ========================================= 00050 public: 00054 TraceEncoderRepository(); 00055 00059 ~TraceEncoderRepository(); 00060 00061 00062 // ====== Repository functionality ======================================= 00069 bool addEncoder(TraceEncoderInterface* encoder); 00070 00076 void removeEncoder(TraceEncoderInterface* encoder); 00077 00083 bool selectEncoderForTypeID(const card16 typeID); 00084 00089 inline void setAutoDelete(const bool on); 00090 00096 EncoderInterface* getCurrentEncoder() const; 00097 00103 TraceEncoderInterface* getCurrentTraceEncoder() const; 00104 00105 00106 // ====== EncoderInterface implementation ================================ 00112 const card16 getTypeID() const; 00113 00119 const char* getTypeName() const; 00120 00126 void activate(); 00127 00133 void deactivate(); 00134 00140 void reset(); 00141 00147 bool checkInterval(card64& time, bool& newRUList); 00148 00149 00155 bool prepareNextFrame(const cardinal headerSize, 00156 const cardinal maxPacketSize, 00157 const cardinal flags); 00158 00164 cardinal getNextPacket(EncoderPacket* encoderPacket); 00165 00166 00172 AbstractQoSDescription* getQoSDescription(const cardinal pktHeaderSize, 00173 const cardinal pktMaxSize, 00174 const card64 position); 00175 00181 void updateQuality(const AbstractQoSDescription* aqd); 00182 00183 00184 // ====== TraceEncoderInterface implementation =========================== 00190 double getWantedUtilization() const; 00191 00197 void setWantedUtilization(const double utilization); 00198 00204 int8 getStreamPriority() const; 00205 00211 void setStreamPriority(const int8 priority); 00212 00218 int8 getSessionPriority() const; 00219 00225 void setSessionPriority(const int8 priority); 00226 00232 double getMaxTransferDelay() const; 00233 00239 void setMaxTransferDelay(const double delay); 00240 00246 card32 getFlags() const; 00247 00253 void setFlags(const card32 flags); 00254 00260 card64 getMinWantedBandwidth() const; 00261 00267 card64 getMaxWantedBandwidth() const; 00268 00274 void setMinWantedBandwidth(const card64 bandwidth); 00275 00281 void setMaxWantedBandwidth(const card64 bandwidth); 00282 00283 00284 // ====== Private data =================================================== 00285 private: 00286 multimap<const card16,TraceEncoderInterface*> TraceEncoderRepository; 00287 TraceEncoderInterface* Encoder; 00288 bool AutoDelete; 00289 }; 00290 00291 00292 } 00293 00294 00295 #include "traceencoderrepository.icc" 00296 00297 00298 #endif