JackAudioDriver.h

00001 /*
00002 Copyright (C) 2001 Paul Davis 
00003 Copyright (C) 2004-2008 Grame
00004 
00005 This program is free software; you can redistribute it and/or modify
00006 it under the terms of the GNU General Public License as published by
00007 the Free Software Foundation; either version 2 of the License, or
00008 (at your option) any later version.
00009 
00010 This program is distributed in the hope that it will be useful,
00011 but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013 GNU General Public License for more details.
00014 
00015 You should have received a copy of the GNU General Public License
00016 along with this program; if not, write to the Free Software
00017 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00018 
00019 */
00020 
00021 #ifndef __JackAudioDriver__
00022 #define __JackAudioDriver__
00023 
00024 #include "JackDriver.h"
00025 
00026 namespace Jack
00027 {
00028 
00033 class EXPORT JackAudioDriver : public JackDriver
00034 {
00035 
00036     protected:
00037 
00038         int fCaptureChannels;
00039         int fPlaybackChannels;
00040 
00041         // static tables since the actual number of ports may be changed by the real driver
00042         // thus dynamic allocation is more difficult to handle
00043         jack_port_id_t fCapturePortList[PORT_NUM];
00044         jack_port_id_t fPlaybackPortList[PORT_NUM];
00045         jack_port_id_t fMonitorPortList[PORT_NUM];
00046 
00047         bool fWithMonitorPorts;
00048 
00049         jack_default_audio_sample_t* GetInputBuffer(int port_index);
00050         jack_default_audio_sample_t* GetOutputBuffer(int port_index);
00051         jack_default_audio_sample_t* GetMonitorBuffer(int port_index);
00052 
00053     private:
00054 
00055         int ProcessAsync();
00056         int ProcessSync();
00057 
00058     public:
00059 
00060         JackAudioDriver(const char* name, JackEngine* engine, JackSynchro** table);
00061         virtual ~JackAudioDriver();
00062 
00063         virtual int Process();
00064 
00065         virtual int Open(jack_nframes_t nframes,
00066                          jack_nframes_t samplerate,
00067                          int capturing,
00068                          int playing,
00069                          int inchannels,
00070                          int outchannels,
00071                          bool monitor,
00072                          const char* capture_driver_name,
00073                          const char* playback_driver_name,
00074                          jack_nframes_t capture_latency,
00075                          jack_nframes_t playback_latency);
00076 
00077         virtual int Attach();
00078         virtual int Detach();
00079         virtual int Write();
00080 
00081                 virtual int SetBufferSize(jack_nframes_t buffer_size);          
00082                 virtual int SetSampleRate(jack_nframes_t sample_rate);
00083 
00084         virtual void NotifyXRun(jack_time_t callback_usecs); // XRun notification sent by the driver
00085 
00086 };
00087 
00088 } // end of namespace
00089 
00090 #endif

Generated on Thu Feb 14 11:16:01 2008 for Jackdmp by  doxygen 1.5.1