diff options
Diffstat (limited to 'intern/audaspace/jack/AUD_JackDevice.h')
-rw-r--r-- | intern/audaspace/jack/AUD_JackDevice.h | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/intern/audaspace/jack/AUD_JackDevice.h b/intern/audaspace/jack/AUD_JackDevice.h deleted file mode 100644 index a138c4de804..00000000000 --- a/intern/audaspace/jack/AUD_JackDevice.h +++ /dev/null @@ -1,199 +0,0 @@ -/* - * 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. - */ - -/** \file audaspace/jack/AUD_JackDevice.h - * \ingroup audjack - */ - - -#ifndef __AUD_JACKDEVICE_H__ -#define __AUD_JACKDEVICE_H__ - - -#include "AUD_SoftwareDevice.h" -#include "AUD_Buffer.h" - -#include <string> - -#include <AUD_JackLibrary.h> - -typedef void (*AUD_syncFunction)(void*, int, float); - -/** - * This device plays back through JACK. - */ -class AUD_JackDevice : public AUD_SoftwareDevice -{ -private: - /** - * The output ports of jack. - */ - jack_port_t** m_ports; - - /** - * The jack client. - */ - jack_client_t* m_client; - - /** - * The output buffer. - */ - AUD_Buffer m_buffer; - - /** - * The deinterleaving buffer. - */ - AUD_Buffer m_deinterleavebuf; - - jack_ringbuffer_t** m_ringbuffers; - - /** - * Whether the device is valid. - */ - bool m_valid; - - /** - * Invalidates the jack device. - * \param data The jack device that gets invalidet by jack. - */ - static void jack_shutdown(void *data); - - /** - * Mixes the next bytes into the buffer. - * \param length The length in samples to be filled. - * \param data A pointer to the jack device. - * \return 0 what shows success. - */ - static int jack_mix(jack_nframes_t length, void *data); - - static int jack_sync(jack_transport_state_t state, jack_position_t* pos, void* data); - - /** - * Next JACK Transport state (-1 if not expected to change). - */ - jack_transport_state_t m_nextState; - - /** - * Current jack transport status. - */ - jack_transport_state_t m_state; - - /** - * Syncronisation state. - */ - int m_sync; - - /** - * External syncronisation callback function. - */ - AUD_syncFunction m_syncFunc; - - /** - * Data for the sync function. - */ - void* m_syncFuncData; - - /** - * The mixing thread. - */ - pthread_t m_mixingThread; - - /** - * Mutex for mixing. - */ - pthread_mutex_t m_mixingLock; - - /** - * Condition for mixing. - */ - pthread_cond_t m_mixingCondition; - - /** - * Mixing thread function. - * \param device The this pointer. - * \return NULL. - */ - static void* runMixingThread(void* device); - - /** - * Updates the ring buffers. - */ - void updateRingBuffers(); - - // hide copy constructor and operator= - AUD_JackDevice(const AUD_JackDevice&); - AUD_JackDevice& operator=(const AUD_JackDevice&); - -protected: - virtual void playing(bool playing); - -public: - /** - * Creates a JACK client for audio output. - * \param name The client name. - * \param specs The wanted audio specification, where only the channel count - * is important. - * \param buffersize The size of the internal buffer. - * \exception AUD_Exception Thrown if the audio device cannot be opened. - */ - AUD_JackDevice(std::string name, AUD_DeviceSpecs specs, int buffersize = AUD_DEFAULT_BUFFER_SIZE); - - /** - * Closes the JACK client. - */ - virtual ~AUD_JackDevice(); - - /** - * Starts jack transport playback. - */ - void startPlayback(); - - /** - * Stops jack transport playback. - */ - void stopPlayback(); - - /** - * Seeks jack transport playback. - * \param time The time to seek to. - */ - void seekPlayback(float time); - - /** - * Sets the sync callback for jack transport playback. - * \param sync The callback function. - * \param data The data for the function. - */ - void setSyncCallback(AUD_syncFunction sync, void* data); - - /** - * Retrieves the jack transport playback time. - * \return The current time position. - */ - float getPlaybackPosition(); - - /** - * Returns whether jack transport plays back. - * \return Whether jack transport plays back. - */ - bool doesPlayback(); -}; - -#endif //__AUD_JACKDEVICE_H__ |