summaryrefslogtreecommitdiffstats
path: root/audiofile_artsplugin/audiofilePlayObjectI.h
diff options
context:
space:
mode:
Diffstat (limited to 'audiofile_artsplugin/audiofilePlayObjectI.h')
-rw-r--r--audiofile_artsplugin/audiofilePlayObjectI.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/audiofile_artsplugin/audiofilePlayObjectI.h b/audiofile_artsplugin/audiofilePlayObjectI.h
new file mode 100644
index 00000000..3d0246a3
--- /dev/null
+++ b/audiofile_artsplugin/audiofilePlayObjectI.h
@@ -0,0 +1,95 @@
+// audiofilePlayObject
+//
+// Copyright (C) 2001 Neil Stevens <neil@qualityassistant.com>
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// THE AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+// AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// Except as contained in this notice, the name(s) of the author(s) shall not be
+// used in advertising or otherwise to promote the sale, use or other dealings
+// in this Software without prior written authorization from the author(s).
+
+#ifndef AUDIOFILEPLAYOBJECTI_H
+#define AUDIOFILEPLAYOBJECTI_H
+
+#include "audiofilearts.h"
+#include <stdsynthmodule.h>
+
+#include <string>
+
+namespace Arts
+{
+ class Resampler;
+ class AudioFilePlayObjectRefiller;
+}
+
+extern "C"
+{
+#include <audiofile.h>
+}
+
+using namespace Arts;
+using namespace std; // violation of Kyoto protocol against namespace pollution
+
+class audiofilePlayObjectI : public audiofilePlayObject_skel, public StdSynthModule
+{
+public:
+ audiofilePlayObjectI();
+ ~audiofilePlayObjectI();
+
+ bool loadMedia(const string &);
+ string description();
+ string mediaName();
+ poCapabilities capabilities();
+ poState state();
+ void play();
+ void pause();
+ void halt();
+ poTime currentTime();
+ poTime overallTime();
+ void seek(const poTime &);
+ void calculateBlock(unsigned long samples);
+
+ // functions demanded by the linker
+ AutoSuspendState autoSuspend();
+ void start();
+ void stop();
+ void streamInit();
+ void streamStart();
+ void streamEnd();
+
+ // PitchablePlayObject:
+ float speed();
+ void speed(float newSpeed);
+
+private:
+ bool sanityCheck(void) { return fh != AF_NULL_FILEHANDLE; };
+
+ AFfilehandle fh;
+
+ int channels, frameSize, sampleWidth;
+ float samplingRate;
+
+ poState myState;
+ std::string filename;
+
+ float _speed;
+ Arts::Resampler * resampler;
+ AudioFilePlayObjectRefiller * refiller;
+};
+
+#endif