RTP Trace System  1.0
traceqosdescription.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 // #### 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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines