[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39837] branches/bmesh/blender/intern/ audaspace/intern: copy the remaining files from trunk
Campbell Barton
ideasman42 at gmail.com
Thu Sep 1 09:51:21 CEST 2011
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. @@
More information about the Bf-blender-cvs
mailing list