[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