Source: framesizescalabilityinterface.h
|
|
|
|
// ##########################################################################
// #### ####
// #### Master Thesis Implementation ####
// #### Management of Layered Variable Bitrate Multimedia Streams over ####
// #### DiffServ with A Priori Knowledge ####
// #### ####
// #### ================================================================ ####
// #### ####
// #### ####
// #### Frame Size Scalability Interface ####
// #### ####
// #### 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 FRAMESIZESCALABILITYINTERFACE_H
#define FRAMESIZESCALABILITYINTERFACE_H
#include "system.h"
namespace Coral {
/**
* This class is an interface for frame size scalability.
* Important node: All frames sizes in this class are payload frame sizes!
*
* @short Frame Rate Scalability Interface
* @author Thomas Dreibholz (Dreibholz@bigfoot.com)
* @version 1.0
*/
class FrameSizeScalabilityInterface
{
// ====== Scalability information methods ================================
public:
/**
* Get name of the frame size scalability class.
*
* @return Frame size scalability class name.
*/
virtual const char* getFrameSizeScalabilityClass() const = 0;
/**
* Check, if frame size is scalable.
*
* @return true, if frame size is scalable; false otherwise.
*/
virtual bool isFrameSizeScalable() const = 0;
/**
* Check, if frame size is variable bitrate (frame sizes are different
* for each frame; the frame size given is the frame size necessary
* to be reserved for a given buffer delay).
*
* @return true, if frame size is variable bitrate; false otherwise.
*/
virtual bool isVariableBitrate() const = 0;
// ====== Frame size methods =============================================
/**
* Get minimum payload frame size for given buffer delay (in frame rate units).
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @return Minimum payload frame size.
*/
virtual cardinal getMinPayloadFrameSizeForDelay(
const double frameRate,
const cardinal bufferDelay) const = 0;
/**
* Get maximum payload frame size for given buffer delay (in frame rate units).
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @return Maximum payload frame size.
*/
virtual cardinal getMaxPayloadFrameSizeForDelay(
const double frameRate,
const cardinal bufferDelay) const = 0;
/**
* Get maximum number of frames for given buffer delay (in frame rate units).
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @return Maximum number of frames.
*/
virtual cardinal getMaxFrameCountForDelay(
const double frameRate,
const cardinal bufferDelay) const = 0;
/**
* Check, if given payload frame size is a valid value for given buffer delay
* (in frame rate units).
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @param frameSize Payload frame size to be checked.
* @return true, if given size is valid; false otherwise.
*/
virtual bool isValidPayloadFrameSize(
const double frameRate,
const cardinal bufferDelay,
const cardinal frameSize) const = 0;
/**
* Get nearest lower valid payload frame rate for given frame rate for given buffer delay
* (in frame rate units).
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @param frameSize Payload frame size.
* @return Valid payload frame size nearest to given size for given buffer delay.
*/
virtual cardinal getNearestValidPayloadFrameSize(
const double frameRate,
const cardinal bufferDelay,
const cardinal frameSize) const = 0;
/**
* Get next higher valid payload frame size for given buffer delay
* (in frame rate units) and payload frame size.
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @param frameSize Payload frame size.
* @return Next higher valid payload frame size for given buffer delay.
*/
virtual cardinal getNextPayloadFrameSizeForDelayAndSize(
const double frameRate,
const cardinal bufferDelay,
const cardinal frameSize) const = 0;
/**
* Get next lower valid payload frame size for given buffer delay
* (in frame rate units) and frame size.
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @param frameSize Payload frame size.
* @return Next lower valid payload frame size for given buffer delay.
*/
virtual cardinal getPrevPayloadFrameSizeForDelayAndSize(
const double frameRate,
const cardinal bufferDelay,
const cardinal frameSize) const = 0;
// ====== Scaling and utilization methods ================================
/**
* Get scale factor for given buffer delay
* (in frame rate units) and payload frame size:
* (rate - MinFrameSize) / (MaxFrameRate - MinFrameSize)
*
* @param frameRate Frame rate.
* @param frameSize Frame size.
* @return Scale factor (out of [0,1])..
*/
virtual double getPayloadFrameSizeScaleFactorForDelayAndSize(
const double frameRate,
const cardinal bufferDelay,
const cardinal frameSize) const = 0;
/**
* Get utilization for given buffer delay
* (in frame rate units) and payload frame size.
*
* @param frameRate Frame rate.
* @param frameSize Payload frame size.
* @return Utilization (out of [0,1])..
*/
virtual double getPayloadFrameSizeUtilizationForDelayAndSize(
const double frameRate,
const cardinal bufferDelay,
const cardinal frameSize) const = 0;
/**
* Get frame size utilization weight.
*
* @param frameRate Frame rate.
* @return Utilization weight.
*/
virtual double getFrameSizeUtilizationWeight(const double frameRate) const = 0;
// ====== Buffer delay methods ===========================================
/**
* Get maximum buffer delay. The *minimum* buffer delay is always 1.
*
* @param frameRate Frame rate.
* @return Maximum buffer delay.
*/
virtual cardinal getMaxBufferDelay(const double frameRate) const = 0;
/**
* Get next higher valid buffer delay for given buffer delay.
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @return Next higher valid buffer delay.
*/
virtual cardinal getNextBufferDelayForDelay(const double frameRate,
const cardinal bufferDelay) const = 0;
/**
* Get next lower valid buffer delay for given buffer delay.
*
* @param frameRate Frame rate.
* @param bufferDelay Buffer delay in frame rate units.
* @return Next lower valid buffer delay.
*/
virtual cardinal getPrevBufferDelayForDelay(const double frameRate,
const cardinal bufferDelay) const = 0;
};
}
#endif
Generated by: viper@odin on Mon Oct 16 11:49:26 2000, using kdoc 2.0a36. |