RTP Audio System  2.0.0
framesizescalabilityinterface.h
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines