|
|
// ########################################################################## // #### #### // #### Master Thesis Implementation #### // #### Management of Layered Variable Bitrate Multimedia Streams over #### // #### DiffServ with A Priori Knowledge #### // #### #### // #### ================================================================ #### // #### #### // #### #### // #### Trace Array #### // #### #### // #### 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 TRACEARRAY_H #define TRACEARRAY_H #include "system.h" #include "traceconfiguration.h" namespace Coral { /** * This is an array of layer traces. * * @short Trace Array * @author Thomas Dreibholz (Dreibholz@bigfoot.com) * @version 1.0 */ class TraceArray { // ====== Constructor/Destructor ========================================= public: /** * Constructor. * * @param config TraceConfiguration object with configuration of the trace. */ TraceArray(const TraceConfiguration& config); /** * Destructor. */ virtual ~TraceArray(); // ====== Initialize ===================================================== /** * Initialize trace array. * * @param maxLayers Maximum number of layers. * @param maxFrames Maximum number of frames. */ void init(const cardinal maxLayers, const cardinal maxFrames); // ====== Calculations =================================================== /** * Calculate empirical envelope. * * @param layer Layer number to calculate empirical envelope for. * @param start Start position. * @param end End position. * @param traceStart Trace start position. * @param traceEnd Trace end position. * @param ee Initialized EmpiricalEnvelope to write sums into. * @param frameCount true, to calculate empirical envelope for frame count; false for byterate. */ void calculateEmpiricalEnvelope(const cardinal layer, const cardinal start, const cardinal end, const cardinal traceStart, const cardinal traceEnd, EmpiricalEnvelope* ee, const bool frameCount = false) const; /** * Calculate optimal intervals refering to given configuration. * * @param costArray Array to store costs into. * @param lengthArray Array to store lengths into. * @param minLength Minimum length. * @param maxLength Maximum length. */ void calculateOptimalIntervals( double* costArray, cardinal* lengthArray, const cardinal minLength, const cardinal maxLength) const; /** * Calculate traffic cost for an interval. * * @param position Position. * @param length Length. * @return Cost. */ inline double TraceArray::calculateTrafficCost( const cardinal position, const cardinal length) const; // ====== Frame rate decrement =========================================== /** * Decrease frame rate to next lower setting. * * @return TraceArray containing next lower frame rate setting or NULL, if current setting is lowest. */ virtual TraceArray* decreaseFrameRate() const; // ====== Public data ==================================================== public: cardinal Layers; cardinal Frames; cardinal MaxLayers; cardinal MaxFrames; double FrameRate; struct Trace { cardinal Frames; FrameDescription Frame[0]; }** LayerTrace; // ====== Empirical envelope initialization ============================== /** * Initialize EmpiricalEnvelope. * * @param buffer Buffer for empirical envelope. * @param eePairs Number of D-BIND pairs. * @param frameCount true, if empirical envelope is for frame count; false for byterate. * @return Required size. */ EmpiricalEnvelope* TraceArray::initEmpiricalEnvelope( char* buffer, const cardinal eePairs, const bool frameCount = false) const; // ====== Protected data ================================================= protected: TraceConfiguration Config; // ====== Private data =================================================== private: cardinal calculateEmpiricalEnvelopePoint(const cardinal layer, const cardinal start, const cardinal end, const cardinal traceStart, const cardinal traceEnd, const cardinal delay, const bool frameCount = false) const; }; /** * Output operator. */ ostream& operator<<(ostream& os, const TraceArray& traceArray); } #include "tracearray.icc" #endif
Generated by: viper@odin on Mon Oct 16 11:49:26 2000, using kdoc 2.0a36. |