3D Audio GSoC:
[blender.git] / intern / audaspace / intern / AUD_SinusReader.h
index cb060dd8a43dc84f98d950bb058672a313f2e97d..9becbbd135ab4bb299d1d4e6833673f3e9dfb3c4 100644 (file)
@@ -1,41 +1,43 @@
 /*
  * $Id$
  *
- * ***** BEGIN LGPL LICENSE BLOCK *****
+ * ***** BEGIN GPL LICENSE BLOCK *****
  *
- * Copyright 2009 Jörg Hermann Müller
+ * Copyright 2009-2011 Jörg Hermann Müller
  *
  * This file is part of AudaSpace.
  *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
+ * Audaspace is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version.
  *
  * AudaSpace is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU Lesser General Public License for more details.
+ * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace.  If not, see <http://www.gnu.org/licenses/>.
+ * You should have received a copy of the GNU General Public License
+ * along with Audaspace; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  *
- * ***** END LGPL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 
+/** \file audaspace/intern/AUD_SinusReader.h
+ *  \ingroup audaspaceintern
+ */
+
+
 #ifndef AUD_SINUSREADER
 #define AUD_SINUSREADER
 
 #include "AUD_IReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
 
 /**
  * This class is used for sine tone playback.
- * The output format is in the 16 bit format and stereo, the sample rate can be
- * specified.
- * As the two channels both play the same the output could also be mono, but
- * in most cases this will result in having to resample for output, so stereo
- * sound is created directly.
+ * The sample rate can be specified, the signal is mono.
  */
 class AUD_SinusReader : public AUD_IReader
 {
@@ -43,22 +45,21 @@ private:
        /**
         * The frequency of the sine wave.
         */
-       double m_frequency;
+       const float m_frequency;
 
        /**
         * The current position in samples.
         */
        int m_position;
 
-       /**
-        * The playback buffer.
-        */
-       AUD_Buffer* m_buffer;
-
        /**
         * The sample rate for the output.
         */
-       AUD_SampleRate m_sampleRate;
+       const AUD_SampleRate m_sampleRate;
+
+       // hide copy constructor and operator=
+       AUD_SinusReader(const AUD_SinusReader&);
+       AUD_SinusReader& operator=(const AUD_SinusReader&);
 
 public:
        /**
@@ -66,21 +67,14 @@ public:
         * \param frequency The frequency of the sine wave.
         * \param sampleRate The output sample rate.
         */
-       AUD_SinusReader(double frequency, AUD_SampleRate sampleRate);
-
-       /**
-        * Destroys the reader.
-        */
-       virtual ~AUD_SinusReader();
+       AUD_SinusReader(float frequency, AUD_SampleRate sampleRate);
 
-       virtual bool isSeekable();
+       virtual bool isSeekable() const;
        virtual void seek(int position);
-       virtual int getLength();
-       virtual int getPosition();
-       virtual AUD_Specs getSpecs();
-       virtual AUD_ReaderType getType();
-       virtual bool notify(AUD_Message &message);
-       virtual void read(int & length, sample_t* & buffer);
+       virtual int getLength() const;
+       virtual int getPosition() const;
+       virtual AUD_Specs getSpecs() const;
+       virtual void read(int& length, bool& eos, sample_t* buffer);
 };
 
 #endif //AUD_SINUSREADER