Source: traceqosdescription.h


Annotated List
Files
Globals
Hierarchy
Index
// ##########################################################################
// ####                                                                  ####
// ####                    Master Thesis Implementation                  ####
// ####  Management of Layered Variable Bitrate Multimedia Streams over  ####
// ####                  DiffServ with A Priori Knowledge                ####
// ####                                                                  ####
// #### ================================================================ ####
// ####                                                                  ####
// ####                                                                  ####
// #### Trace QoS Description                                            ####
// ####                                                                  ####
// #### Version 1.00  --  October 10, 2000                               ####
// ####                                                                  ####
// #### Copyright (C) 2000 Thomas Dreibholz                              ####
// #### University of Bonn, Department of Computer Science IV            ####
// #### EMail: Dreibholz@bigfoot.com                                     ####
// #### WWW:   http://www.bigfoot.com/~dreibholz/diplom/index.html       ####
// ####                                                                  ####
// ##########################################################################


#ifndef TRACEQOSDESCRIPTION_H
#define TRACEQOSDESCRIPTION_H


#include "system.h"
#include "abstractqosdescription.h"
#include "traceframeratescalability.h"
#include "traceframesizescalability.h"


namespace Coral {



/**
  * This is the QoS description of a trace layer.
  *
  * @short Trace Layer QoS Description
  * @author  Thomas Dreibholz (Dreibholz@bigfoot.com)
  * @version 1.0
*/
class TraceLayerDescription : public AbstractLayerDescription,
                              public TraceFrameSizeScalability
{
   // ====== Reimplementations ==============================================
   public:
   /**
     * Reimplementation of GenericVariableBitrateFrameSizeScalability's getFrameSizeScalabilityClass().
     *
     * @see GenericVariableBitrateFrameSizeScalability#getFrameSizeScalabilityClass
     * @see FrameSizeScalabilityInterface#getFrameSizeScalabilityClass
     */
   const char* getFrameSizeScalabilityClass() const;
};



/**
  * This is the QoS description of a trace stream.
  *
  * @short   Trace QoS Description
  * @author  Thomas Dreibholz (Dreibholz@bigfoot.com)
  * @version 1.0
*/
class TraceQoSDescription : public TraceFrameRateScalability,
                            public AbstractQoSDescription
{
   // ====== Initialization and update ======================================
   public:
   /**
     * Initialize description.
     *
     * @param traceReader TDTFReader.
     * @param position RTP Position.
     * @param position Maximum RTP Position.
     * @param frameRate Frame rate.
     */
   void initTraceDescription(TDTFReader*  traceReader,
                             const card64 position,
                             const card64 maxPosition,
                             const double frameRate);

   /**
     * Implementation of AbstractQoSDescription's updateDescription().
     *
     * @see AbstractQoSDescription#updateDescription
     */
   void updateDescription(const cardinal pktHeaderSize,
                          const cardinal pktMaxSize);


   // ====== Layer methods ==================================================
   /**
     * Implementation of AbstractQoSDescription's getLayers().
     *
     * @see AbstractQoSDescription#getLayers
     */
   cardinal getLayers() const;

   /**
     * Implementation of AbstractQoSDescription's getLayer().
     *
     * @see AbstractQoSDescription#getLayer
     */
   AbstractLayerDescription* getLayer(const cardinal layer) const;


   // ====== Reimplementations ==============================================
   /**
     * Reimplementation of GenericFrameRateScalability's getFrameRateScalabilityClass().
     *
     * @see GenericFrameRateScalability#getFrameRateScalabilityClass
     * @see FrameRateScalabilityInterface#getFrameRateScalabilityClass
     */
   const char* getFrameRateScalabilityClass() const;

   /**
     * Implementation of AbstractQoSDescription's getPrecomputedResourceUtilizationList().
     *
     * @see AbstractQoSDescription#getPrecomputedResourceUtilizationList
     */
   cardinal getPrecomputedResourceUtilizationList(
                       ResourceUtilizationPoint* rup,
                       const cardinal            bwThreshold,
                       const double              utThreshold,
                       const cardinal            maxPoints) const;

   /**
     * Implementation of AbstractQoSDescription's calculateUtilizationForLayerBandwidths().
     *
     * @see AbstractQoSDescription#calculateUtilizationForLayerBandwidths
     */
   double calculateUtilizationForLayerBandwidths(
                     const double    frameRate,
                     const cardinal  layers,
                     const cardinal* bandwidth) const;


   // ====== Protected data =================================================
   protected:
   void doSelectIteration(
           bool*          select,
           const cardinal bwThreshold,
           const double   utThreshold,
           double*        utilizationCache,
           cardinal*      bandwidthCache,
           const cardinal maxPoints,
           const cardinal maxCachePoints,
           const cardinal start,
           const cardinal end,
           const cardinal startBandwidth,
           const cardinal endBandwidth,
           const cardinal level,
           const cardinal maxLevel,
           cardinal&      count) const;


   static const cardinal MaxLayers = 9;


   TDTFReader*           TraceReader;
   card64                Position;
   card64                MaxPosition;
   double                FrameRate;
   TraceLayerDescription Layer[MaxLayers];
};


}


#endif

Generated by: viper@odin on Mon Oct 16 11:49:26 2000, using kdoc 2.0a36.