diff options
Diffstat (limited to 'src/uscxml/plugins/invoker/audio/OpenALPlayer.h')
-rw-r--r-- | src/uscxml/plugins/invoker/audio/OpenALPlayer.h | 125 |
1 files changed, 0 insertions, 125 deletions
diff --git a/src/uscxml/plugins/invoker/audio/OpenALPlayer.h b/src/uscxml/plugins/invoker/audio/OpenALPlayer.h deleted file mode 100644 index db883a0..0000000 --- a/src/uscxml/plugins/invoker/audio/OpenALPlayer.h +++ /dev/null @@ -1,125 +0,0 @@ -/** - * @file - * @author 2012-2013 Stefan Radomski (stefan.radomski@cs.tu-darmstadt.de) - * @copyright Simplified BSD - * - * @cond - * This program is free software: you can redistribute it and/or modify - * it under the terms of the FreeBSD license as published by the FreeBSD - * project. - * - * This program 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. - * - * You should have received a copy of the FreeBSD license along with this - * program. If not, see <http://www.opensource.org/licenses/bsd-license>. - * @endcond - */ - -#ifndef OPENALPLAYER_H_3PORVJDU -#define OPENALPLAYER_H_3PORVJDU - -#include <iostream> -#include <string.h> -#include <stdlib.h> -#include <sstream> -#include <uscxml/concurrency/tinythread.h> - -#include <al.h> -#include <alc.h> - -// sometimes the stream drops if this is less than 5000 bytes -#define ALPLAY_NR_AUDIO_BUFFERS 3 -#define ALPLAY_AUDIO_BUFFER_SIZE 2048 -//#define ALPLAYER_FORMAT_MONO16 0x1101 - -class OpenALPlayer; - -class OpenALPlayerCallback { -public: - virtual ~OpenALPlayerCallback() {} - /* - * Returning an OpenALPlayerCallback is a hack to be able to provide a typemap for SWIG. - * We cannot use SWIG directors with byte arrays otherwise. Posted to swig-ML already. - */ - virtual OpenALPlayerCallback* getSamples(char* buffer, int size, OpenALPlayer* player) = 0; -}; - -class OpenALPlayer { -private: - ALCcontext* _context; - - ALuint _alId; - ALfloat _position[3]; - ALfloat _velocity[3]; - ALfloat _direction[3]; - ALfloat _pitch; - ALfloat _gain; - ALfloat _referenceDistance; - ALboolean _isLooping; - - // OpenAL is not really thread safe - static tthread::recursive_mutex _alMutex; - - ALenum _format; - ALsizei _freq; - int _msForBuffer; - int _initialSleep; - int _bufferSleep; - int _repollSleep; - - int _bufferSize; - int _nrBuffers; - ALuint* _bufferIds; - char** _buffers; - OpenALPlayerCallback* _audioCallback; - void* _userData; - - tthread::thread* _thread; - bool _isStarted; - bool _isInitialized; - - void updateBuffers(); - void init(); - - // static wrapper as an entry point for pthreads - static void updateBuffersWrapper(void *obj); - - // get the index in _buffers for a buffer ID - int inline bufferIndex(int bufferId); - -public: - OpenALPlayer(ALCcontext*, OpenALPlayerCallback*, ALenum, ALsizei); - virtual ~OpenALPlayer(); - - unsigned int isPlaying(); - static void checkOpenALError(int line); - - ALfloat* getPosition(); - void setPosition(ALfloat[3]); - ALfloat* getVelocity(); - void setVelocity(ALfloat[3]); - ALfloat* getDirection(); - void setDirection(ALfloat[3]); - - void setBufferSize(int bufferSize); - int getBufferSize(); - void setNrBuffers(int nrBuffers); - int getNrBuffers(); - - // callback interface for pull - OpenALPlayerCallback* getCallback(); - void setCallback(OpenALPlayerCallback* callback); - - // stream interface for push - int write(char* buffer, int size, int* repollAt, bool blocking = false); - - void* getUserData(); - void setUserData(void* userData); - - void start(); - void stop(); -}; - -#endif /* end of include guard: OPENALPLAYER_H_3PORVJDU */ |