Jack2 1.9.6

JackNetAdapter.h

00001 /*
00002 Copyright (C) 2008 Romain Moret at Grame
00003 
00004 This program is free software; you can redistribute it and/or modify
00005 it under the terms of the GNU General Public License as published by
00006 the Free Software Foundation; either version 2 of the License, or
00007 (at your option) any later version.
00008 
00009 This program is distributed in the hope that it will be useful,
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 GNU General Public License for more details.
00013 
00014 You should have received a copy of the GNU General Public License
00015 along with this program; if not, write to the Free Software
00016 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
00017 
00018 */
00019 
00020 #ifndef __JackNetAdapter__
00021 #define __JackNetAdapter__
00022 
00023 #include "JackAudioAdapterInterface.h"
00024 #include "JackNetInterface.h"
00025 
00026 namespace Jack
00027 {
00028 
00033     class JackNetAdapter : public JackAudioAdapterInterface, public JackNetSlaveInterface, public JackRunnableInterface
00034     {
00035     private:
00036         //jack data
00037         jack_client_t* fJackClient;
00038 
00039         //transport data
00040         int fLastTransportState;
00041         int fLastTimebaseMaster;
00042      
00043         //sample buffers
00044         sample_t** fSoftCaptureBuffer;
00045         sample_t** fSoftPlaybackBuffer;
00046 
00047         //adapter thread
00048         JackThread fThread;
00049 
00050         //transport
00051         void EncodeTransportData();
00052         void DecodeTransportData();
00053 
00054     public:
00055 
00056         JackNetAdapter ( jack_client_t* jack_client, jack_nframes_t buffer_size, jack_nframes_t sample_rate, const JSList* params );
00057         ~JackNetAdapter();
00058 
00059         int Open();
00060         int Close();
00061 
00062         int SetBufferSize ( jack_nframes_t buffer_size );
00063 
00064         bool Init();
00065         bool Execute();
00066 
00067         int Read();
00068         int Write();
00069 
00070         int Process();
00071     };
00072 }
00073 
00074 #endif