RTP Audio System
2.0.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 // #### Copyright (C) 1999-2012 by Thomas Dreibholz #### 00013 // #### #### 00014 // #### Contact: #### 00015 // #### EMail: dreibh@iem.uni-due.de #### 00016 // #### WWW: https://www.nntb.no/~dreibh/rtpaudio #### 00017 // #### #### 00018 // #### ---------------------------------------------------------------- #### 00019 // #### #### 00020 // #### This program is free software: you can redistribute it and/or #### 00021 // #### modify it under the terms of the GNU General Public License as #### 00022 // #### published by the Free Software Foundation, either version 3 of #### 00023 // #### the License, or (at your option) any later version. #### 00024 // #### #### 00025 // #### This program is distributed in the hope that it will be useful, #### 00026 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of #### 00027 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #### 00028 // #### GNU General Public License for more details. #### 00029 // #### #### 00030 // #### You should have received a copy of the GNU General Public #### 00031 // #### License along with this program. If not, see #### 00032 // #### <http://www.gnu.org/licenses/>. #### 00033 // #### #### 00034 // ########################################################################## 00035 // $Id: framesizescalabilityinterface.h 1308 2011-12-22 07:43:26Z dreibh $ 00036 00037 00038 #ifndef FRAMESIZESCALABILITYINTERFACE_H 00039 #define FRAMESIZESCALABILITYINTERFACE_H 00040 00041 00042 #include "tdsystem.h" 00043 00044 00053 class FrameSizeScalabilityInterface 00054 { 00055 // ====== Scalability information methods ================================ 00056 public: 00062 virtual const char* getFrameSizeScalabilityClass() const = 0; 00063 00069 virtual bool isFrameSizeScalable() const = 0; 00070 00078 virtual bool isVariableBitrate() const = 0; 00079 00080 00081 // ====== Frame size methods ============================================= 00089 virtual cardinal getMinPayloadFrameSizeForDelay( 00090 const double frameRate, 00091 const cardinal bufferDelay) const = 0; 00092 00100 virtual cardinal getMaxPayloadFrameSizeForDelay( 00101 const double frameRate, 00102 const cardinal bufferDelay) const = 0; 00103 00111 virtual cardinal getMaxFrameCountForDelay( 00112 const double frameRate, 00113 const cardinal bufferDelay) const = 0; 00114 00124 virtual bool isValidPayloadFrameSize( 00125 const double frameRate, 00126 const cardinal bufferDelay, 00127 const cardinal frameSize) const = 0; 00128 00138 virtual cardinal getNearestValidPayloadFrameSize( 00139 const double frameRate, 00140 const cardinal bufferDelay, 00141 const cardinal frameSize) const = 0; 00142 00152 virtual cardinal getNextPayloadFrameSizeForDelayAndSize( 00153 const double frameRate, 00154 const cardinal bufferDelay, 00155 const cardinal frameSize) const = 0; 00156 00166 virtual cardinal getPrevPayloadFrameSizeForDelayAndSize( 00167 const double frameRate, 00168 const cardinal bufferDelay, 00169 const cardinal frameSize) const = 0; 00170 00171 00172 // ====== Scaling and utilization methods ================================ 00182 virtual double getPayloadFrameSizeScaleFactorForDelayAndSize( 00183 const double frameRate, 00184 const cardinal bufferDelay, 00185 const cardinal frameSize) const = 0; 00186 00195 virtual double getPayloadFrameSizeUtilizationForDelayAndSize( 00196 const double frameRate, 00197 const cardinal bufferDelay, 00198 const cardinal frameSize) const = 0; 00199 00206 virtual double getFrameSizeUtilizationWeight(const double frameRate) const = 0; 00207 00208 00209 // ====== Buffer delay methods =========================================== 00216 virtual cardinal getMaxBufferDelay(const double frameRate) const = 0; 00217 00225 virtual cardinal getNextBufferDelayForDelay(const double frameRate, 00226 const cardinal bufferDelay) const = 0; 00227 00235 virtual cardinal getPrevBufferDelayForDelay(const double frameRate, 00236 const cardinal bufferDelay) const = 0; 00237 }; 00238 00239 00240 #endif