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 QoS Description #### 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 TRACEQOSDESCRIPTION_H 00023 #define TRACEQOSDESCRIPTION_H 00024 00025 00026 #include "system.h" 00027 #include "abstractqosdescription.h" 00028 #include "traceframeratescalability.h" 00029 #include "traceframesizescalability.h" 00030 00031 00032 namespace Coral { 00033 00034 00035 00043 class TraceLayerDescription : public AbstractLayerDescription, 00044 public TraceFrameSizeScalability 00045 { 00046 // ====== Reimplementations ============================================== 00047 public: 00054 const char* getFrameSizeScalabilityClass() const; 00055 }; 00056 00057 00058 00066 class TraceQoSDescription : public TraceFrameRateScalability, 00067 public AbstractQoSDescription 00068 { 00069 // ====== Initialization and update ====================================== 00070 public: 00079 void initTraceDescription(TDTFReader* traceReader, 00080 const card64 position, 00081 const card64 maxPosition, 00082 const double frameRate); 00083 00089 void updateDescription(const cardinal pktHeaderSize, 00090 const cardinal pktMaxSize); 00091 00092 00093 // ====== Layer methods ================================================== 00099 cardinal getLayers() const; 00100 00106 AbstractLayerDescription* getLayer(const cardinal layer) const; 00107 00108 00109 // ====== Reimplementations ============================================== 00116 const char* getFrameRateScalabilityClass() const; 00117 00123 cardinal getPrecomputedResourceUtilizationList( 00124 ResourceUtilizationPoint* rup, 00125 const card64 bwThreshold, 00126 const double utThreshold, 00127 const cardinal maxPoints) const; 00128 00134 double calculateUtilizationForLayerBandwidths( 00135 const double frameRate, 00136 const cardinal layers, 00137 const card64* bandwidth) const; 00138 00139 00140 // ====== Constants ====================================================== 00144 static const cardinal MaxLayers = 16; 00145 00146 00147 // ====== Protected data ================================================= 00148 protected: 00149 void doSelectIteration( 00150 bool* select, 00151 const card64 bwThreshold, 00152 const double utThreshold, 00153 double* utilizationCache, 00154 card64* bandwidthCache, 00155 const cardinal maxPoints, 00156 const cardinal maxCachePoints, 00157 const cardinal start, 00158 const cardinal end, 00159 const card64 startBandwidth, 00160 const card64 endBandwidth, 00161 const cardinal level, 00162 const cardinal maxLevel, 00163 cardinal& count) const; 00164 00165 00166 TDTFReader* TraceReader; 00167 card64 Position; 00168 card64 MaxPosition; 00169 double FrameRate; 00170 TraceLayerDescription Layer[MaxLayers]; 00171 }; 00172 00173 00174 } 00175 00176 00177 #endif