RTP Audio System  2.0.0
spectrumanalyzer.h
Go to the documentation of this file.
00001 // ##########################################################################
00002 // ####                                                                  ####
00003 // ####                      RTP Audio Server Project                    ####
00004 // ####                    ============================                  ####
00005 // ####                                                                  ####
00006 // #### Spectrum Analyzer                                                ####
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: spectrumanalyzer.h 1286 2011-12-18 13:43:16Z dreibh $
00032 
00033 
00034 #ifndef SPECTRUMANALYZER_H
00035 #define SPECTRUMANALYZER_H
00036 
00037 
00038 #include "tdsystem.h"
00039 #include "audiowriterinterface.h"
00040 #include "synchronizable.h"
00041 #include "fft.h"
00042 
00043 
00051 class SpectrumAnalyzer : virtual public AudioWriterInterface,
00052                          public Synchronizable
00053 {
00054    // ====== Constructor/Destructor =========================================
00055    public:
00059    SpectrumAnalyzer();
00060 
00064    ~SpectrumAnalyzer();
00065 
00066 
00067    // ====== AudioQualityInterface implementation ===========================
00073    card16 getSamplingRate() const;
00074 
00080    card8 getBits() const;
00081 
00087    card8 getChannels() const;
00088 
00089 
00095    card16 getByteOrder() const;
00096 
00097 
00103    cardinal getBytesPerSecond() const;
00104 
00110    cardinal getBitsPerSample() const;
00111 
00112 
00118    card16 setSamplingRate(const card16 samplingRate);
00119 
00125    card8 setBits(const card8 bits);
00126 
00132    card8 setChannels(const card8 channels);
00133 
00134 
00140    card16 setByteOrder(const card16 byteOrder);
00141 
00142 
00143    // ====== AudioInterface implementation ==================================
00149    bool ready() const;
00150 
00156    void sync();
00157 
00163    bool write(const void* data, const size_t length);
00164 
00165 
00166    // ====== Spectrum analyzer functions ====================================
00175    bool getSpectrum(cardinal* left, cardinal* right, const cardinal bars);
00176 
00177 
00178    // ====== Internal data ==================================================
00179    private:
00180    void doFourierTransformation(card16* data, cardinal* output, cardinal bars);
00181 
00182 
00183    static const cardinal      FFTPoints = 256;
00184    FastFourierTransformation* FFT;
00185    cardinal                   InputBufferPos;
00186    char                       InputBuffer[4 * FFTPoints];
00187 
00188 
00189    card16                     AudioSamplingRate;
00190    card8                      AudioBits;
00191    card8                      AudioChannels;
00192    card16                     AudioByteOrder;
00193 };
00194 
00195 
00196 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines