RTP Audio System  2.0.0
audioqualityinterface.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                      RTP Audio Server Project                    ####
00004 // ####                    ============================                  ####
00005 // ####                                                                  ####
00006 // #### Audio Quality Interface                                          ####
00007 // ####                                                                  ####
00008 // ####           Copyright (C) 1999-2012 by Thomas Dreibholz            ####
00009 // ####                                                                  ####
00010 // #### Contact:                                                         ####
00011 // ####    EMail: dreibh@iem.uni-due.de                                  ####
00012 // ####    WWW:   https://www.nntb.no/~dreibh/rtpaudio                ####
00013 // ####                                                                  ####
00014 // #### ---------------------------------------------------------------- ####
00015 // ####                                                                  ####
00016 // #### This program is free software: you can redistribute it and/or    ####
00017 // #### modify it under the terms of the GNU General Public License as   ####
00018 // #### published by the Free Software Foundation, either version 3 of   ####
00019 // #### the License, or (at your option) any later version.              ####
00020 // ####                                                                  ####
00021 // #### This program is distributed in the hope that it will be useful,  ####
00022 // #### but WITHOUT ANY WARRANTY; without even the implied warranty of   ####
00023 // #### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    ####
00024 // #### GNU General Public License for more details.                     ####
00025 // ####                                                                  ####
00026 // #### You should have received a copy of the GNU General Public        ####
00027 // #### License along with this program.  If not, see                    ####
00028 // #### <http://www.gnu.org/licenses/>.                                  ####
00029 // ####                                                                  ####
00030 // ##########################################################################
00031 // $Id: audioqualityinterface.h 1290 2011-12-19 11:09:27Z dreibh $
00032 
00033 
00034 #ifndef AUDIOQUALITYINTERFACE_H
00035 #define AUDIOQUALITYINTERFACE_H
00036 
00037 
00038 #include "tdsystem.h"
00039 
00040 
00048 class AudioQualityInterface
00049 {
00050    // ====== Getting values =================================================
00051    public:
00057    virtual card16 getSamplingRate() const = 0;
00058 
00064    virtual card8 getBits() const = 0;
00065 
00071    virtual card8 getChannels() const = 0;
00072 
00073 
00079    virtual card16 getByteOrder() const = 0;
00080 
00081 
00082    // ====== Calculating bandwidth settings =================================
00088    virtual cardinal getBytesPerSecond() const = 0;
00089 
00095    virtual cardinal getBitsPerSample() const = 0;
00096 
00097 
00098    // ====== Comparision operators ==========================================
00102    inline int operator==(const AudioQualityInterface& quality) const;
00103 
00107    inline int operator!=(const AudioQualityInterface& quality) const;
00108 
00113    inline int operator<=(const AudioQualityInterface& quality) const;
00114 
00119    inline int operator<(const AudioQualityInterface& quality) const;
00120 
00125    inline int operator>=(const AudioQualityInterface& quality) const;
00126 
00131    inline int operator>(const AudioQualityInterface& quality) const;
00132 };
00133 
00134 
00143 class AdjustableAudioQualityInterface : virtual public AudioQualityInterface
00144 {
00145    public:
00152    virtual card16 setSamplingRate(const card16 samplingRate) = 0;
00153 
00160    virtual card8 setBits(const card8 bits) = 0;
00161 
00168    virtual card8 setChannels(const card8 channels) = 0;
00169 
00170 
00177    virtual card16 setByteOrder(const card16 byteOrder) = 0;
00178 
00179 
00185    inline void setQuality(const AudioQualityInterface& quality);
00186 };
00187 
00188 
00189 #include "audioqualityinterface.icc"
00190 
00191 
00192 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines