Jack2 1.9.6
|
00001 /* 00002 Copyright (C) 2001-2005 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 __JackDriverLoader__ 00022 #define __JackDriverLoader__ 00023 00024 #include "driver_interface.h" 00025 #include "JackControlAPI.h" 00026 #include "JackPlatformPlug.h" 00027 #include "JackSystemDeps.h" 00028 00029 namespace Jack 00030 { 00031 class JackDriverClientInterface; 00032 class JackLockedEngine; 00033 }; 00034 00035 typedef jack_driver_desc_t * (*JackDriverDescFunction) (); 00036 typedef Jack::JackDriverClientInterface* (*driverInitialize) (Jack::JackLockedEngine*, Jack::JackSynchro*, const JSList*); 00037 00038 class JackDriverInfo 00039 { 00040 00041 private: 00042 00043 driverInitialize fInitialize; 00044 DRIVER_HANDLE fHandle; 00045 Jack::JackDriverClientInterface* fBackend; 00046 00047 public: 00048 00049 JackDriverInfo():fInitialize(NULL),fHandle(NULL) 00050 {} 00051 ~JackDriverInfo() 00052 { 00053 if (fHandle) 00054 UnloadDriverModule(fHandle); 00055 } 00056 00057 Jack::JackDriverClientInterface* Open(jack_driver_desc_t* driver_desc, Jack::JackLockedEngine*, Jack::JackSynchro*, const JSList*); 00058 00059 Jack::JackDriverClientInterface* GetBackend() 00060 { 00061 return fBackend; 00062 } 00063 00064 }; 00065 00066 jack_driver_desc_t * jack_find_driver_descriptor (JSList * drivers, const char * name); 00067 00068 JSList * jack_drivers_load (JSList * drivers); 00069 JSList * jack_internals_load (JSList * internals); 00070 00071 SERVER_EXPORT int jackctl_parse_driver_params (jackctl_driver * driver_ptr, int argc, char* argv[]); 00072 SERVER_EXPORT void jack_free_driver_params(JSList * param_ptr); 00073 SERVER_EXPORT void jack_print_driver_options(jack_driver_desc_t* desc, FILE* file); 00074 00075 #endif 00076