RTP Trace System  1.0
resourceutilizationpoint.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines