RTP Trace System
1.0
|
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 // #### Frame Size Scalability Interface #### 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 FRAMESIZESCALABILITYINTERFACE_H 00023 #define FRAMESIZESCALABILITYINTERFACE_H 00024 00025 00026 #include "system.h" 00027 00028 00029 namespace Coral { 00030 00031 00040 class FrameSizeScalabilityInterface 00041 { 00042 // ====== Scalability information methods ================================ 00043 public: 00049 virtual const char* getFrameSizeScalabilityClass() const = 0; 00050 00056 virtual bool isFrameSizeScalable() const = 0; 00057 00065 virtual bool isVariableBitrate() const = 0; 00066 00067 00068 // ====== Frame size methods ============================================= 00076 virtual cardinal getMinPayloadFrameSizeForDelay( 00077 const double frameRate, 00078 const cardinal bufferDelay) const = 0; 00079 00087 virtual cardinal getMaxPayloadFrameSizeForDelay( 00088 const double frameRate, 00089 const cardinal bufferDelay) const = 0; 00090 00098 virtual cardinal getMaxFrameCountForDelay( 00099 const double frameRate, 00100 const cardinal bufferDelay) const = 0; 00101 00111 virtual bool isValidPayloadFrameSize( 00112 const double frameRate, 00113 const cardinal bufferDelay, 00114 const cardinal frameSize) const = 0; 00115 00125 virtual cardinal getNearestValidPayloadFrameSize( 00126 const double frameRate, 00127 const cardinal bufferDelay, 00128 const cardinal frameSize) const = 0; 00129 00139 virtual cardinal getNextPayloadFrameSizeForDelayAndSize( 00140 const double frameRate, 00141 const cardinal bufferDelay, 00142 const cardinal frameSize) const = 0; 00143 00153 virtual cardinal getPrevPayloadFrameSizeForDelayAndSize( 00154 const double frameRate, 00155 const cardinal bufferDelay, 00156 const cardinal frameSize) const = 0; 00157 00158 00159 // ====== Scaling and utilization methods ================================ 00169 virtual double getPayloadFrameSizeScaleFactorForDelayAndSize( 00170 const double frameRate, 00171 const cardinal bufferDelay, 00172 const cardinal frameSize) const = 0; 00173 00182 virtual double getPayloadFrameSizeUtilizationForDelayAndSize( 00183 const double frameRate, 00184 const cardinal bufferDelay, 00185 const cardinal frameSize) const = 0; 00186 00193 virtual double getFrameSizeUtilizationWeight(const double frameRate) const = 0; 00194 00195 00196 // ====== Buffer delay methods =========================================== 00203 virtual cardinal getMaxBufferDelay(const double frameRate) const = 0; 00204 00212 virtual cardinal getNextBufferDelayForDelay(const double frameRate, 00213 const cardinal bufferDelay) const = 0; 00214 00222 virtual cardinal getPrevBufferDelayForDelay(const double frameRate, 00223 const cardinal bufferDelay) const = 0; 00224 }; 00225 00226 00227 } 00228 00229 00230 #endif