/* Copyright (C) 2008 Grame This program 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. 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. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "JackNetAdapter.h" #include "JackTools.h" #include #include #include JackNetAdapter::JackNetAdapter ( jack_nframes_t buffer_size, jack_nframes_t sample_rate, const JSList* params ) {} JackNetAdapter::~JackNetAdapter() {} int JackNetAdapter::Open() { return 0; } int JackNetAdapter::Close() { return 0; } int JackNetAdapter::SetBufferSize ( jack_nframes_t buffer_size ) { return 0; } bool JackNetAdapter::Init() { return true; } bool JackNetAdapter::Execute() { return true; } #ifdef __cplusplus extern "C" { #endif #include "driver_interface.h" using namespace Jack; EXPORT jack_driver_desc_t* jack_get_descriptor() { jack_driver_desc_t *desc; jack_driver_param_desc_t * params; unsigned int i; desc = ( jack_driver_desc_t* ) calloc ( 1, sizeof ( jack_driver_desc_t ) ); strcpy ( desc->name, "net-adapter" ); desc->nparams = 2; params = ( jack_driver_param_desc_t* ) calloc ( desc->nparams, sizeof ( jack_driver_param_desc_t ) ); // TODO desc->params = params; return desc; } EXPORT int jack_internal_initialize ( jack_client_t* jack_client, const JSList* params ) { jack_log ( "Loading netadapter" ); Jack::JackAudioAdapter* adapter; jack_nframes_t buffer_size = jack_get_buffer_size ( jack_client ); jack_nframes_t sample_rate = jack_get_sample_rate ( jack_client ); adapter = new Jack::JackAudioAdapter ( jack_client, new Jack::JackNetAdapter ( buffer_size, sample_rate, params ) ); assert ( adapter ); if ( adapter->Open() == 0 ) { return 0; } else { delete adapter; return 1; } } EXPORT int jack_initialize ( jack_client_t* jack_client, const char* load_init ) { JSList* params = NULL; jack_driver_desc_t *desc = jack_get_descriptor(); JackArgParser parser ( load_init ); if ( parser.GetArgc() > 0 ) { if ( parser.ParseParams ( desc, ¶ms ) != 0 ) jack_error ( "Internal client : JackArgParser::ParseParams error." ); } return jack_internal_initialize ( jack_client, params ); } EXPORT void jack_finish ( void* arg ) { Jack::JackAudioAdapter* adapter = static_cast ( arg ); if ( adapter ) { jack_log ( "Unloading netadapter" ); adapter->Close(); delete adapter; } } #ifdef __cplusplus } #endif