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 Decoder 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 TRACEDECODERREPOSITORY_H 00023 #define TRACEDECODERREPOSITORY_H 00024 00025 00026 #include "system.h" 00027 #include "tracedecoderinterface.h" 00028 #include "decoderrepositoryinterface.h" 00029 00030 00031 #include <multimap.h> 00032 #include <algo.h> 00033 00034 00035 namespace Coral { 00036 00037 00045 class TraceDecoderRepository : virtual public DecoderRepositoryInterface, 00046 virtual public TraceDecoderInterface 00047 { 00048 public: 00049 // ====== Constructor/Destructor ========================================= 00053 TraceDecoderRepository(); 00054 00058 ~TraceDecoderRepository(); 00059 00060 00061 // ====== Repository functionality ======================================= 00068 bool addDecoder(TraceDecoderInterface* decoder); 00069 00075 void removeDecoder(TraceDecoderInterface* decoder); 00076 00082 bool selectDecoderForTypeID(const card16 typeID); 00083 00088 inline void setAutoDelete(const bool on); 00089 00095 DecoderInterface* getCurrentDecoder() const; 00096 00102 TraceDecoderInterface* getCurrentTraceDecoder() const; 00103 00104 00105 // ====== DecoderInterface implementation ================================ 00111 const card16 getTypeID() const; 00112 00118 const char* getTypeName() const; 00119 00125 void activate(); 00126 00132 void deactivate(); 00133 00139 void reset(); 00140 00146 void getMediaInfo(MediaInfo& mediaInfo) const; 00147 00153 card8 getErrorCode() const; 00154 00160 card64 getPosition() const; 00161 00167 card64 getMaxPosition() const; 00168 00174 bool checkNextPacket(DecoderPacket* decoderPacket); 00175 00181 void handleNextPacket(const DecoderPacket* decoderPacket); 00182 00183 00184 // ====== TraceDecoderInterface implementation =========================== 00190 double getFrameRate() const; 00191 00197 double getUtilization() const; 00198 00204 card32 getFlags() const; 00205 00211 Range<card64> getBandwidth() const; 00212 00218 int8 getStreamPriority() const; 00219 00225 int8 getSessionPriority() const; 00226 00227 00228 // ====== Private data =================================================== 00229 private: 00230 multimap<const card16,TraceDecoderInterface*> TraceDecoderRepository; 00231 TraceDecoderInterface* Decoder; 00232 bool AutoDelete; 00233 }; 00234 00235 00236 } 00237 00238 00239 #include "tracedecoderrepository.icc" 00240 00241 00242 #endif