Source: resourceutilizationpoint.h
|
|
|
|
// ##########################################################################
// #### ####
// #### Master Thesis Implementation ####
// #### Management of Layered Variable Bitrate Multimedia Streams over ####
// #### DiffServ with A Priori Knowledge ####
// #### ####
// #### ================================================================ ####
// #### ####
// #### ####
// #### Resource Utilization Point ####
// #### ####
// #### 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 RESOURCEUTILIZATIONPOINT_H
#define RESOURCEUTILIZATIONPOINT_H
#include "system.h"
#include "rtppacket.h"
#include "bandwidthinfo.h"
namespace Coral {
/**
* This class is a resource/utilization point used for the bandwidth mapping
* algorithm.
*
* @short Resource Utilization Point
* @author Thomas Dreibholz (Dreibholz@bigfoot.com)
* @version 1.0
*/
class ResourceUtilizationPoint
{
// ====== Public data ====================================================
public:
/**
* Total bandwidth.
*/
cardinal Bandwidth;
/**
* Total utilization.
*/
double Utilization;
/**
* Total Cost.
*/
double Cost;
/**
* Task ID.
*/
cardinal TaskID;
/**
* Frame rate.
*/
double FrameRate;
/**
* Number of layers.
*/
cardinal Layers;
/**
* Array of layers' bandwidth requirements.
*/
BandwidthInfo LayerBandwidthInfo[RTPConstants::RTPMaxQualityLayers];
// ====== Operations =====================================================
/**
* Reset.
*/
void reset();
/**
* Merge resource/utilization lists.
*
* @param destination Destination list.
* @param listArray Array of lists to merge.
* @param listSizeArray Array of list sizes.
* @param listCount Number of lists.
* @return Number of points in destination list.
*/
static cardinal mergeResourceUtilizationLists(
ResourceUtilizationPoint* destination,
ResourceUtilizationPoint** listArray,
const cardinal* listSizeArray,
const cardinal listCount);
/**
* Sort resource/utilization list by utilization.
*
* @param rup List.
* @param start First point number.
* @param end Last point number.
*/
static void ResourceUtilizationPoint::sortResourceUtilizationList(
ResourceUtilizationPoint* rup,
const integer start,
const integer end);
/**
* Compute convex hull on resource/utilization list using Graham Scan
* algorithm.
*
* @param rup List.
* @param start First point number.
* @param end Last point number.
*/
static cardinal grahamScanResourceUtilizationList(ResourceUtilizationPoint* rup,
const cardinal count);
// ====== Comparision operators ==========================================
/**
* Operator "==".
*/
inline int operator==(const ResourceUtilizationPoint& rup) const;
/**
* Operator "!=".
*/
inline int operator!=(const ResourceUtilizationPoint& rup) const;
// ====== Private data ===================================================
private:
static inline void swapResourceUtilizationPoints(ResourceUtilizationPoint& a,
ResourceUtilizationPoint& b);
static inline integer ccw(const ResourceUtilizationPoint& p0,
const ResourceUtilizationPoint& p1,
const ResourceUtilizationPoint& p2);
};
/**
* Output operator.
*/
ostream& operator<<(ostream& os, const ResourceUtilizationPoint& rup);
}
#include "resourceutilizationpoint.icc"
#endif
Generated by: viper@odin on Mon Oct 16 11:49:26 2000, using kdoc 2.0a36. |