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 Configuration #### 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 TRACECONFIGURATION_H 00023 #define TRACECONFIGURATION_H 00024 00025 00026 #include "system.h" 00027 #include "tdtf.h" 00028 00029 00030 namespace Coral { 00031 00032 00040 struct TraceLayerConfiguration 00041 { 00042 // ====== Scalability ==================================================== 00047 double Scalability; 00048 00049 00050 // ====== Layer cost factor ============================================== 00054 double CostFactor; 00055 00056 00057 // ====== Empirical envelopes ============================================ 00061 cardinal ByterateEmpiricalEnvelopePairs; 00062 00066 cardinal FrameCountEmpiricalEnvelopePairs; 00067 00068 00069 // ====== Frame size utilization ========================================= 00073 static const card16 MaxFrameSizeUtilizationConstants = 8; 00074 00078 cardinal LayerFlags; 00079 00083 card16 FrameSizeUtilizationMaxConstants; 00084 00088 card16 FrameSizeUtilizationConstants; 00089 00093 card16 FrameSizeUtilizationType; 00094 00098 double FrameSizeUtilizationWeight; 00099 00103 double FrameSizeUtilizationConstant[MaxFrameSizeUtilizationConstants]; 00104 }; 00105 00106 00107 00115 struct TraceConfiguration 00116 { 00117 // ====== Input trace description ======================================== 00121 double FrameRate; 00122 00126 char FramePattern[256]; 00127 00131 char InputName[128]; 00132 00133 00134 // ====== Media type ===================================================== 00140 card16 MediaType; 00141 00145 card16 MediaSubtype; 00146 00147 00148 // ====== Extension layers =============================================== 00152 cardinal ExtLayers; 00153 00157 double FakeE1; 00158 00162 double FakeE2; 00163 00164 00165 // ====== Delay, interval lengths, remapping cost ======================== 00169 cardinal MaxBufferDelay; 00170 00174 card64 MinIntervalLength; 00175 00179 card64 MaxIntervalLength; 00180 00184 double RemappingCost; 00185 00186 00187 // ====== Resource/utilization list ====================================== 00191 card16 RUPoints; 00192 00196 card64 BandwidthThreshold; 00197 00201 double UtilizationThreshold; 00202 00203 00204 // ====== Frame rate utilization ========================================= 00208 static const card16 MaxFrameRateUtilizationConstants = 8; 00209 00210 00214 card16 FrameRateUtilizationMaxConstants; 00215 00219 card16 FrameRateUtilizationConstants; 00220 00224 card16 FrameRateUtilizationType; 00225 00229 double FrameRateUtilizationWeight; 00230 00234 double FrameRateUtilizationConstant[MaxFrameRateUtilizationConstants]; 00235 00236 00237 // ====== Information ==================================================== 00241 char Title[TDTFPrefix::MaxTitleLength]; 00242 00246 char Copyright[TDTFPrefix::MaxCopyrightLength]; 00247 00251 char Comment[TDTFPrefix::MaxCopyrightLength]; 00252 00256 char URL[TDTFPrefix::MaxURLLength]; 00257 00258 00259 // ====== Layer configuration ============================================ 00263 static const cardinal MaxLayers = 16; 00264 00268 TraceLayerConfiguration Layer[MaxLayers]; 00269 00270 00271 // ====== Print ========================================================== 00278 void print(ostream& os, 00279 const bool utilizationOnly = false) const; 00280 00281 00282 // ====== Load =========================================================== 00290 bool load(const char* fileName, 00291 const bool utilizationOnly = false); 00292 }; 00293 00294 00298 ostream& operator<<(ostream& os, const TraceConfiguration& config); 00299 00300 00301 } 00302 00303 00304 #endif