Revision: 39837
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39837
Author:   campbellbarton
Date:     2011-09-01 07:51:20 +0000 (Thu, 01 Sep 2011)
Log Message:
-----------
copy the remaining files from trunk

Added Paths:
-----------
    branches/bmesh/blender/intern/audaspace/intern/AUD_IHandle.h
    branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleFactory.h
    branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp
    branches/bmesh/blender/intern/audaspace/intern/AUD_SequencerEntry.cpp
    branches/bmesh/blender/intern/audaspace/intern/AUD_SequencerHandle.cpp

Copied: branches/bmesh/blender/intern/audaspace/intern/AUD_IHandle.h (from rev 
39836, trunk/blender/intern/audaspace/intern/AUD_IHandle.h)
===================================================================
--- branches/bmesh/blender/intern/audaspace/intern/AUD_IHandle.h                
                (rev 0)
+++ branches/bmesh/blender/intern/audaspace/intern/AUD_IHandle.h        
2011-09-01 07:51:20 UTC (rev 39837)
@@ -0,0 +1,181 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * 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 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 General Public License for more details.
+ *
+ * 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 GPL LICENSE BLOCK *****
+ */
+
+/** \file audaspace/intern/AUD_IHandle.h
+ *  \ingroup audaspaceintern
+ */
+
+#ifndef AUD_IHANDLE
+#define AUD_IHANDLE
+
+//#include "AUD_Space.h"
+//#include "AUD_Reference.h"
+
+typedef void (*stopCallback)(void*);
+
+/**
+ * This class represents a playback handles for specific devices.
+ */
+class AUD_IHandle
+{
+public:
+       /**
+        * Destroys the handle.
+        */
+       virtual ~AUD_IHandle() {}
+
+       /**
+        * Pauses a played back sound.
+        * \return
+        *        - true if the sound has been paused.
+        *        - false if the sound isn't playing back or the handle is 
invalid.
+        */
+       virtual bool pause()=0;
+
+       /**
+        * Resumes a paused sound.
+        * \return
+        *        - true if the sound has been resumed.
+        *        - false if the sound isn't paused or the handle is invalid.
+        */
+       virtual bool resume()=0;
+
+       /**
+        * Stops a played back or paused sound. The handle is definitely invalid
+        * afterwards.
+        * \return
+        *        - true if the sound has been stopped.
+        *        - false if the handle is invalid.
+        */
+       virtual bool stop()=0;
+
+       /**
+        * Gets the behaviour of the device for a played back sound when the 
sound
+        * doesn't return any more samples.
+        * \return
+        *        - true if the source will be paused when it's end is reached
+        *        - false if the handle won't kept or is invalid.
+        */
+       virtual bool getKeep()=0;
+
+       /**
+        * Sets the behaviour of the device for a played back sound when the 
sound
+        * doesn't return any more samples.
+        * \param keep True when the source should be paused and not deleted.
+        * \return
+        *        - true if the behaviour has been changed.
+        *        - false if the handle is invalid.
+        */
+       virtual bool setKeep(bool keep)=0;
+
+       /**
+        * Seeks in a played back sound.
+        * \param position The new position from where to play back, in seconds.
+        * \return
+        *        - true if the handle is valid.
+        *        - false if the handle is invalid.
+        * \warning Whether the seek works or not depends on the sound source.
+        */
+       virtual bool seek(float position)=0;
+
+       /**
+        * Retrieves the current playback position of a sound.
+        * \return The playback position in seconds, or 0.0 if the handle is
+        *         invalid.
+        */
+       virtual float getPosition()=0;
+
+       /**
+        * Returns the status of a played back sound.
+        * \return
+        *        - AUD_STATUS_INVALID if the sound has stopped or the handle is
+        *.         invalid
+        *        - AUD_STATUS_PLAYING if the sound is currently played back.
+        *        - AUD_STATUS_PAUSED if the sound is currently paused.
+        * \see AUD_Status
+        */
+       virtual AUD_Status getStatus()=0;
+
+       /**
+        * Retrieves the volume of a playing sound.
+        * \return The volume.
+        */
+       virtual float getVolume()=0;
+
+       /**
+        * Sets the volume of a playing sound.
+        * \param volume The volume.
+        * \return
+        *        - true if the handle is valid.
+        *        - false if the handle is invalid.
+        */
+       virtual bool setVolume(float volume)=0;
+
+       /**
+        * Retrieves the pitch of a playing sound.
+        * \return The pitch.
+        */
+       virtual float getPitch()=0;
+
+       /**
+        * Sets the pitch of a playing sound.
+        * \param pitch The pitch.
+        * \return
+        *        - true if the handle is valid.
+        *        - false if the handle is invalid.
+        */
+       virtual bool setPitch(float pitch)=0;
+
+       /**
+        * Retrieves the loop count of a playing sound.
+        * A negative value indicates infinity.
+        * \return The remaining loop count.
+        */
+       virtual int getLoopCount()=0;
+
+       /**
+        * Sets the loop count of a playing sound.
+        * A negative value indicates infinity.
+        * \param count The new loop count.
+        * \return
+        *        - true if the handle is valid.
+        *        - false if the handle is invalid.
+        */
+       virtual bool setLoopCount(int count)=0;
+
+       /**
+        * Sets the callback function that's called when the end of a playing 
sound
+        * is reached.
+        * \param callback The callback function.
+        * \param data The data that should be passed to the callback function.
+        * \return
+        *        - true if the handle is valid.
+        *        - false if the handle is invalid.
+        */
+       virtual bool setStopCallback(stopCallback callback = 0, void* data = 
0)=0;
+};
+
+#endif //AUD_IHandle

Copied: branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleFactory.h 
(from rev 39836, trunk/blender/intern/audaspace/intern/AUD_JOSResampleFactory.h)
===================================================================
--- branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleFactory.h     
                        (rev 0)
+++ branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleFactory.h     
2011-09-01 07:51:20 UTC (rev 39837)
@@ -0,0 +1,58 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * 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 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 General Public License for more details.
+ *
+ * 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 GPL LICENSE BLOCK *****
+ */
+
+/** \file audaspace/intern/AUD_JOSResampleFactory.h
+ *  \ingroup audaspaceintern
+ */
+
+
+#ifndef AUD_JOSRESAMPLEFACTORY
+#define AUD_JOSRESAMPLEFACTORY
+
+#include "AUD_MixerFactory.h"
+
+/**
+ * This factory creates a resampling reader that does Julius O. Smith's 
resampling algorithm.
+ */
+class AUD_JOSResampleFactory : public AUD_MixerFactory
+{
+private:
+       // hide copy constructor and operator=
+       AUD_JOSResampleFactory(const AUD_JOSResampleFactory&);
+       AUD_JOSResampleFactory& operator=(const AUD_JOSResampleFactory&);
+
+public:
+       /**
+        * Creates a new factory.
+        * \param factory The input factory.
+        * \param specs The target specifications.
+        */
+       AUD_JOSResampleFactory(AUD_Reference<AUD_IFactory> factory, 
AUD_DeviceSpecs specs);
+
+       virtual AUD_Reference<AUD_IReader> createReader();
+};
+
+#endif //AUD_JOSRESAMPLEFACTORY

Copied: 
branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp (from 
rev 39836, trunk/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp)
===================================================================
--- branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp    
                        (rev 0)
+++ branches/bmesh/blender/intern/audaspace/intern/AUD_JOSResampleReader.cpp    
2011-09-01 07:51:20 UTC (rev 39837)
@@ -0,0 +1,420 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * 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 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 General Public License for more details.
+ *
+ * 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 GPL LICENSE BLOCK *****
+ */
+
+/** \file audaspace/intern/AUD_JOSResampleReader.cpp
+ *  \ingroup audaspaceintern
+ */
+
+#include "AUD_JOSResampleReader.h"
+
+#include "AUD_JOSResampleReaderCoeff.cpp"
+
+#include <cmath>
+#include <cstring>
+#include <iostream>
+
+/* MSVC does not have lrint */
+#ifdef _MSC_VER
+#ifdef _M_X64
+#include <emmintrin.h>
+static inline int lrint(double d)
+{
+               return _mm_cvtsd_si32(_mm_load_sd(&d));
+}
+#else
+static inline int lrint(double d)
+{
+       int i;
+
+       _asm{
+               fld d
+               fistp i
+       };
+
+       return i;
+}
+#endif
+#endif
+
+#define CC m_channels + channel
+
+#define AUD_RATE_MAX 256
+#define SHIFT_BITS 12
+#define double_to_fp(x) (lrint(x * double(1 << SHIFT_BITS)))
+#define int_to_fp(x) (x << SHIFT_BITS)
+#define fp_to_int(x) (x >> SHIFT_BITS)
+#define fp_to_double(x) (x * 1.0/(1 << SHIFT_BITS))
+#define fp_rest(x) (x & ((1 << SHIFT_BITS) - 1))
+#define fp_rest_to_double(x) fp_to_double(fp_rest(x))
+
+AUD_JOSResampleReader::AUD_JOSResampleReader(AUD_Reference<AUD_IReader> 
reader, AUD_Specs specs) :
+       AUD_ResampleReader(reader, specs.rate),
+       m_channels(AUD_CHANNELS_INVALID),
+       m_n(0),
+       m_P(0),
+       m_cache_valid(0),
+       m_last_factor(0)
+{
+}
+
+void AUD_JOSResampleReader::reset()
+{
+       m_cache_valid = 0;
+       m_n = 0;
+       m_P = 0;
+       m_last_factor = 0;
+}
+
+void AUD_JOSResampleReader::updateBuffer(int size, double factor, int 
samplesize)
+{
+       unsigned int len;
+       double num_samples = double(m_len) / double(m_L);

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to