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 // #### Resource Utilization Point #### 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 RESOURCEUTILIZATIONPOINT_H 00023 #define RESOURCEUTILIZATIONPOINT_H 00024 00025 00026 #include "system.h" 00027 #include "rtppacket.h" 00028 #include "bandwidthinfo.h" 00029 #include "trafficclassvalues.h" 00030 00031 00032 namespace Coral { 00033 00034 00035 class StreamDescription; 00036 00037 00045 struct LayerClassMappingPossibility 00046 { 00050 cardinal Class; 00051 00055 cardinal BufferDelay; 00056 00060 double Cost; 00061 00065 card64 Bandwidth; 00066 }; 00067 00068 00076 struct LayerClassMapping 00077 { 00081 cardinal Possibilities; 00082 00086 LayerClassMappingPossibility Possibility[TrafficClassValues::MaxValues]; 00087 }; 00088 00089 00098 class ResourceUtilizationPoint 00099 { 00100 // ====== Public data ==================================================== 00101 public: 00105 card64 Bandwidth; 00106 00110 double BandwidthCost; 00111 00115 double Utilization; 00116 00120 double FrameRate; 00121 00125 cardinal Layers; 00126 00127 00131 BandwidthInfo LayerBandwidthInfo[RTPConstants::RTPMaxQualityLayers]; 00132 00136 LayerClassMapping Mapping[RTPConstants::RTPMaxQualityLayers]; 00137 00138 00139 // ====== Operations ===================================================== 00143 void reset(); 00144 00154 static cardinal mergeResourceUtilizationLists( 00155 ResourceUtilizationPoint* destination, 00156 ResourceUtilizationPoint** listArray, 00157 const cardinal* listSizeArray, 00158 const cardinal listCount); 00159 00167 static void ResourceUtilizationPoint::sortResourceUtilizationList( 00168 ResourceUtilizationPoint* rup, 00169 const integer start, 00170 const integer end); 00171 00181 static cardinal ResourceUtilizationPoint::optimizeResourceUtilizationList( 00182 ResourceUtilizationPoint* rup, 00183 const cardinal count); 00184 00193 static cardinal grahamScanResourceUtilizationList(ResourceUtilizationPoint* rup, 00194 const cardinal count); 00195 00196 00197 // ====== Comparision operators ========================================== 00201 inline int operator==(const ResourceUtilizationPoint& rup) const; 00202 00206 inline int operator!=(const ResourceUtilizationPoint& rup) const; 00207 00208 00209 // ====== Private data =================================================== 00210 private: 00211 static inline void swapResourceUtilizationPoints(ResourceUtilizationPoint& a, 00212 ResourceUtilizationPoint& b); 00213 static inline integer ccw(const ResourceUtilizationPoint& p0, 00214 const ResourceUtilizationPoint& p1, 00215 const ResourceUtilizationPoint& p2); 00216 }; 00217 00218 00222 ostream& operator<<(ostream& os, const ResourceUtilizationPoint& rup); 00223 00224 00225 00226 } 00227 00228 00229 #include "resourceutilizationpoint.icc" 00230 00231 00232 #endif