Blender V2.61 - r43446

AUD_CallbackIIRFilterReader.h

Go to the documentation of this file.
00001 /*
00002  * ***** BEGIN GPL LICENSE BLOCK *****
00003  *
00004  * Copyright 2009-2011 Jörg Hermann Müller
00005  *
00006  * This file is part of AudaSpace.
00007  *
00008  * Audaspace is free software; you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation; either version 2 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * AudaSpace is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with Audaspace; if not, write to the Free Software Foundation,
00020  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00021  *
00022  * ***** END GPL LICENSE BLOCK *****
00023  */
00024 
00030 #ifndef AUD_CALLBACKIIRFILTERREADER
00031 #define AUD_CALLBACKIIRFILTERREADER
00032 
00033 #include "AUD_BaseIIRFilterReader.h"
00034 #include "AUD_Buffer.h"
00035 
00036 class AUD_CallbackIIRFilterReader;
00037 
00038 typedef sample_t (*doFilterIIR)(AUD_CallbackIIRFilterReader*, void*);
00039 typedef void (*endFilterIIR)(void*);
00040 
00045 class AUD_CallbackIIRFilterReader : public AUD_BaseIIRFilterReader
00046 {
00047 private:
00051     const doFilterIIR m_filter;
00052 
00056     const endFilterIIR m_endFilter;
00057 
00061     void* m_data;
00062 
00063     // hide copy constructor and operator=
00064     AUD_CallbackIIRFilterReader(const AUD_CallbackIIRFilterReader&);
00065     AUD_CallbackIIRFilterReader& operator=(const AUD_CallbackIIRFilterReader&);
00066 
00067 public:
00077     AUD_CallbackIIRFilterReader(AUD_Reference<AUD_IReader> reader, int in, int out,
00078                                 doFilterIIR doFilter,
00079                                 endFilterIIR endFilter = 0,
00080                                 void* data = 0);
00081 
00082     virtual ~AUD_CallbackIIRFilterReader();
00083 
00084     virtual sample_t filter();
00085 };
00086 
00087 #endif //AUD_CALLBACKIIRFILTERREADER