The FreeBoB project was renamed to FFADO in 2007. All users should use the FFADO backend by now (2019). Backend name to be removed: "freebob" Alternative backend to use: "firewire" Please check the jackd manpage for details about "firewire" backend. This commit is part of legacy cleanup. closes issue #365.tags/v1.9.13
| @@ -513,25 +513,6 @@ endif | |||
| # | |||
| #include $(BUILD_SHARED_LIBRARY) | |||
| ## LIBFREEBOB required | |||
| ## ======================================================== | |||
| ## driver - freebob | |||
| ## ======================================================== | |||
| #include $(CLEAR_VARS) | |||
| # | |||
| #LOCAL_SRC_FILES := ../linux/freebob/JackFreebobDriver.cpp | |||
| ##'HAVE_CONFIG_H','SERVER_SIDE', 'HAVE_PPOLL', 'HAVE_TIMERFD | |||
| #LOCAL_CFLAGS := $(common_cflags) -DSERVER_SIDE | |||
| #LOCAL_CPPFLAGS := $(common_cppflags) | |||
| #LOCAL_LDFLAGS := $(common_ldflags) $(JACK_STL_LDFLAGS) | |||
| #LOCAL_C_INCLUDES := $(common_c_includes) | |||
| #LOCAL_SHARED_LIBRARIES := libc libdl libcutils libjackserver | |||
| #LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/jack | |||
| #LOCAL_MODULE_TAGS := eng optional | |||
| #LOCAL_MODULE := jack_freebob | |||
| # | |||
| #include $(BUILD_SHARED_LIBRARY) | |||
| ## LIBFFADO required | |||
| ## ======================================================== | |||
| ## driver - firewire | |||
| @@ -583,7 +583,6 @@ INPUT = @SRCDIR@/common \ | |||
| @SRCDIR@/linux/alsa \ | |||
| @SRCDIR@/linux/alsarawmidi \ | |||
| @SRCDIR@/linux/firewire \ | |||
| @SRCDIR@/linux/freebob \ | |||
| @SRCDIR@/windows \ | |||
| @SRCDIR@/windows/portaudio \ | |||
| @SRCDIR@/windows/winmme \ | |||
| @@ -659,7 +659,7 @@ int JackFFADODriver::Detach() | |||
| ffado_driver_t* driver = (ffado_driver_t*)fDriver; | |||
| jack_log("JackFFADODriver::Detach"); | |||
| // finish the libfreebob streaming | |||
| // finish the libffado streaming | |||
| ffado_streaming_finish(driver->dev); | |||
| driver->dev = NULL; | |||
| @@ -1,95 +0,0 @@ | |||
| /* | |||
| Copyright (C) 2001 Paul Davis | |||
| Copyright (C) 2004 Grame | |||
| Copyright (C) 2007 Pieter Palmers | |||
| 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. | |||
| */ | |||
| #ifndef __JackFreebobDriver__ | |||
| #define __JackFreebobDriver__ | |||
| #include "JackAudioDriver.h" | |||
| #include "JackThreadedDriver.h" | |||
| #include "JackTime.h" | |||
| #include "freebob_driver.h" | |||
| namespace Jack | |||
| { | |||
| /*! | |||
| \brief The FreeBoB driver. | |||
| */ | |||
| class JackFreebobDriver : public JackAudioDriver | |||
| { | |||
| private: | |||
| // enable verbose messages | |||
| int g_verbose; | |||
| jack_driver_t* fDriver; | |||
| int freebob_driver_attach (freebob_driver_t *driver); | |||
| int freebob_driver_detach (freebob_driver_t *driver); | |||
| int freebob_driver_read (freebob_driver_t * driver, jack_nframes_t nframes); | |||
| int freebob_driver_write (freebob_driver_t * driver, jack_nframes_t nframes); | |||
| jack_nframes_t freebob_driver_wait (freebob_driver_t *driver, | |||
| int extra_fd, int *status, | |||
| float *delayed_usecs); | |||
| int freebob_driver_start (freebob_driver_t *driver); | |||
| int freebob_driver_stop (freebob_driver_t *driver); | |||
| int freebob_driver_restart (freebob_driver_t *driver); | |||
| freebob_driver_t *freebob_driver_new (char *name, freebob_jack_settings_t *params); | |||
| void freebob_driver_delete (freebob_driver_t *driver); | |||
| #ifdef FREEBOB_DRIVER_WITH_MIDI | |||
| freebob_driver_midi_handle_t *freebob_driver_midi_init(freebob_driver_t *driver); | |||
| void freebob_driver_midi_finish (freebob_driver_midi_handle_t *m); | |||
| int freebob_driver_midi_start (freebob_driver_midi_handle_t *m); | |||
| int freebob_driver_midi_stop (freebob_driver_midi_handle_t *m); | |||
| #endif | |||
| void jack_driver_init (jack_driver_t *driver); | |||
| void jack_driver_nt_init (jack_driver_nt_t * driver); | |||
| public: | |||
| JackFreebobDriver(const char* name, const char* alias, JackLockedEngine* engine, JackSynchro* table) | |||
| :JackAudioDriver(name, alias, engine, table) | |||
| {} | |||
| virtual ~JackFreebobDriver() | |||
| {} | |||
| int Open(freebob_jack_settings_t *cmlparams); | |||
| int Close(); | |||
| int Attach(); | |||
| int Detach(); | |||
| int Start(); | |||
| int Stop(); | |||
| int Read(); | |||
| int Write(); | |||
| int SetBufferSize(jack_nframes_t nframes); | |||
| }; | |||
| } // end of namespace | |||
| #endif | |||
| @@ -1,245 +0,0 @@ | |||
| /* freebob_driver.h | |||
| * | |||
| * FreeBob Backend for Jack | |||
| * FreeBob = Firewire (pro-)audio for linux | |||
| * | |||
| * adapted for jackmp | |||
| * | |||
| * http://freebob.sf.net | |||
| * http://jackit.sf.net | |||
| * | |||
| * Copyright (C) 2005,2006,2007 Pieter Palmers <pieterpalmers@users.sourceforge.net> | |||
| * | |||
| * 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. | |||
| */ | |||
| /* | |||
| * Main Jack driver entry routines | |||
| * | |||
| */ | |||
| #ifndef __JACK_FREEBOB_DRIVER_H__ | |||
| #define __JACK_FREEBOB_DRIVER_H__ | |||
| // #define FREEBOB_DRIVER_WITH_MIDI | |||
| // #define DEBUG_ENABLED | |||
| #include <libfreebob/freebob.h> | |||
| #include <libfreebob/freebob_streaming.h> | |||
| #include <string.h> | |||
| #include <stdlib.h> | |||
| #include <errno.h> | |||
| #include <stdio.h> | |||
| #include <poll.h> | |||
| #include <sys/time.h> | |||
| #include <netinet/in.h> | |||
| #include <endian.h> | |||
| #include <pthread.h> | |||
| #include <semaphore.h> | |||
| #include <driver.h> | |||
| #include <types.h> | |||
| #ifdef FREEBOB_DRIVER_WITH_MIDI | |||
| #include <JackPosixThread.h> | |||
| #include <alsa/asoundlib.h> | |||
| #endif | |||
| // debug print control flags | |||
| #define DEBUG_LEVEL_BUFFERS (1<<0) | |||
| #define DEBUG_LEVEL_HANDLERS (1<<1) | |||
| #define DEBUG_LEVEL_XRUN_RECOVERY (1<<2) | |||
| #define DEBUG_LEVEL_WAIT (1<<3) | |||
| #define DEBUG_LEVEL_RUN_CYCLE (1<<8) | |||
| #define DEBUG_LEVEL_PACKETCOUNTER (1<<16) | |||
| #define DEBUG_LEVEL_STARTUP (1<<17) | |||
| #define DEBUG_LEVEL_THREADS (1<<18) | |||
| #ifdef DEBUG_ENABLED | |||
| // default debug level | |||
| #define DEBUG_LEVEL ( DEBUG_LEVEL_RUN_CYCLE | \ | |||
| (DEBUG_LEVEL_XRUN_RECOVERY)| DEBUG_LEVEL_STARTUP | DEBUG_LEVEL_WAIT | DEBUG_LEVEL_PACKETCOUNTER) | |||
| #warning Building debug build! | |||
| #define printMessage(format, args...) jack_error( "FreeBoB MSG: %s:%d (%s): " format, __FILE__, __LINE__, __FUNCTION__, ##args ) | |||
| #define printError(format, args...) jack_error( "FreeBoB ERR: %s:%d (%s): " format, __FILE__, __LINE__, __FUNCTION__, ##args ) | |||
| /* #define printEnter() jack_error( "FBDRV ENTERS: %s (%s)", __FUNCTION__, __FILE__) | |||
| #define printExit() jack_error( "FBDRV EXITS: %s (%s)", __FUNCTION__, __FILE__)*/ | |||
| #define printEnter() | |||
| #define printExit() | |||
| #define debugError(format, args...) jack_error( "FREEBOB ERR: %s:%d (%s): " format, __FILE__, __LINE__, __FUNCTION__, ##args ) | |||
| #define debugPrint(Level, format, args...) if(DEBUG_LEVEL & (Level)) jack_error("DEBUG %s:%d (%s) :" format, __FILE__, __LINE__, __FUNCTION__, ##args ); | |||
| #define debugPrintShort(Level, format, args...) if(DEBUG_LEVEL & (Level)) jack_error( format,##args ); | |||
| #define debugPrintWithTimeStamp(Level, format, args...) if(DEBUG_LEVEL & (Level)) jack_error( "%16lu: "format, debugGetCurrentUTime(),##args ); | |||
| #define SEGFAULT int *test=NULL; *test=1; | |||
| #else | |||
| #define DEBUG_LEVEL | |||
| #define printMessage(format, args...) if(g_verbose) \ | |||
| jack_error("FreeBoB MSG: " format, ##args ) | |||
| #define printError(format, args...) jack_error("FreeBoB ERR: " format, ##args ) | |||
| #define printEnter() | |||
| #define printExit() | |||
| #define debugError(format, args...) | |||
| #define debugPrint(Level, format, args...) | |||
| #define debugPrintShort(Level, format, args...) | |||
| #define debugPrintWithTimeStamp(Level, format, args...) | |||
| #endif | |||
| // thread priority setup | |||
| #define FREEBOB_RT_PRIORITY_PACKETIZER_RELATIVE 5 | |||
| #ifdef FREEBOB_DRIVER_WITH_MIDI | |||
| #define ALSA_SEQ_BUFF_SIZE 1024 | |||
| #define MIDI_TRANSMIT_BUFFER_SIZE 1024 | |||
| #define MIDI_THREAD_SLEEP_TIME_USECS 100 | |||
| // midi priority should be higher than the audio priority in order to | |||
| // make sure events are not only delivered on period boundarys | |||
| // but I think it should be smaller than the packetizer thread in order not | |||
| // to lose any packets | |||
| #define FREEBOB_RT_PRIORITY_MIDI_RELATIVE 4 | |||
| #endif | |||
| typedef struct _freebob_driver freebob_driver_t; | |||
| /* | |||
| * Jack Driver command line parameters | |||
| */ | |||
| typedef struct _freebob_jack_settings freebob_jack_settings_t; | |||
| struct _freebob_jack_settings | |||
| { | |||
| int period_size_set; | |||
| jack_nframes_t period_size; | |||
| int sample_rate_set; | |||
| int sample_rate; | |||
| int buffer_size_set; | |||
| jack_nframes_t buffer_size; | |||
| int port_set; | |||
| int port; | |||
| int node_id_set; | |||
| int node_id; | |||
| int playback_ports; | |||
| int capture_ports; | |||
| jack_nframes_t capture_frame_latency; | |||
| jack_nframes_t playback_frame_latency; | |||
| freebob_handle_t fb_handle; | |||
| }; | |||
| #ifdef FREEBOB_DRIVER_WITH_MIDI | |||
| typedef struct | |||
| { | |||
| int stream_nr; | |||
| int seq_port_nr; | |||
| snd_midi_event_t *parser; | |||
| snd_seq_t *seq_handle; | |||
| } | |||
| freebob_midi_port_t; | |||
| typedef struct _freebob_driver_midi_handle | |||
| { | |||
| freebob_device_t *dev; | |||
| freebob_driver_t *driver; | |||
| snd_seq_t *seq_handle; | |||
| pthread_t queue_thread; | |||
| pthread_t dequeue_thread; | |||
| int queue_thread_realtime; | |||
| int queue_thread_priority; | |||
| int nb_input_ports; | |||
| int nb_output_ports; | |||
| freebob_midi_port_t **input_ports; | |||
| freebob_midi_port_t **output_ports; | |||
| freebob_midi_port_t **input_stream_port_map; | |||
| int *output_port_stream_map; | |||
| } | |||
| freebob_driver_midi_handle_t; | |||
| #endif | |||
| /* | |||
| * JACK driver structure | |||
| */ | |||
| struct _freebob_driver | |||
| { | |||
| JACK_DRIVER_NT_DECL | |||
| jack_nframes_t sample_rate; | |||
| jack_nframes_t period_size; | |||
| unsigned long wait_time; | |||
| jack_time_t wait_last; | |||
| jack_time_t wait_next; | |||
| int wait_late; | |||
| jack_client_t *client; | |||
| int xrun_detected; | |||
| int xrun_count; | |||
| int process_count; | |||
| /* settings from the command line */ | |||
| freebob_jack_settings_t settings; | |||
| /* the freebob virtual device */ | |||
| freebob_device_t *dev; | |||
| JSList *capture_ports; | |||
| JSList *playback_ports; | |||
| JSList *monitor_ports; | |||
| unsigned long playback_nchannels; | |||
| unsigned long capture_nchannels; | |||
| unsigned long playback_nchannels_audio; | |||
| unsigned long capture_nchannels_audio; | |||
| jack_nframes_t playback_frame_latency; | |||
| jack_nframes_t capture_frame_latency; | |||
| freebob_device_info_t device_info; | |||
| freebob_options_t device_options; | |||
| #ifdef FREEBOB_DRIVER_WITH_MIDI | |||
| freebob_driver_midi_handle_t *midi_handle; | |||
| #endif | |||
| }; | |||
| #endif /* __JACK_FREEBOB_DRIVER_H__ */ | |||
| @@ -1625,9 +1625,6 @@ | |||
| 4B05A0640DF72BC000840F4C /* usx2y.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = usx2y.c; path = ../linux/alsa/usx2y.c; sourceTree = SOURCE_ROOT; }; | |||
| 4B05A0650DF72BC000840F4C /* usx2y.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = usx2y.h; path = ../linux/alsa/usx2y.h; sourceTree = SOURCE_ROOT; }; | |||
| 4B05A07D0DF72BC000840F4C /* driver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = driver.h; path = ../linux/driver.h; sourceTree = SOURCE_ROOT; }; | |||
| 4B05A0830DF72BC000840F4C /* freebob_driver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = freebob_driver.h; path = ../linux/freebob/freebob_driver.h; sourceTree = SOURCE_ROOT; }; | |||
| 4B05A0840DF72BC000840F4C /* JackFreebobDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = JackFreebobDriver.cpp; path = ../linux/freebob/JackFreebobDriver.cpp; sourceTree = SOURCE_ROOT; }; | |||
| 4B05A0850DF72BC000840F4C /* JackFreebobDriver.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = JackFreebobDriver.h; path = ../linux/freebob/JackFreebobDriver.h; sourceTree = SOURCE_ROOT; }; | |||
| 4B0A28E60D52073D002EFF74 /* jack_thread_wait */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
| 4B0A28EC0D520852002EFF74 /* tw.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tw.c; path = "../example-clients/tw.c"; sourceTree = SOURCE_ROOT; }; | |||
| 4B0A292D0D52108E002EFF74 /* jack_thread_wait */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jack_thread_wait; sourceTree = BUILT_PRODUCTS_DIR; }; | |||
| @@ -2908,7 +2905,6 @@ | |||
| 4B349837133A6B6F00D130AB /* firewire */, | |||
| 4B349825133A6AF500D130AB /* alsarawmidi */, | |||
| 4B05A04C0DF72BC000840F4C /* alsa */, | |||
| 4B05A0820DF72BC000840F4C /* freebob */, | |||
| ); | |||
| name = Linux; | |||
| sourceTree = "<group>"; | |||
| @@ -2945,17 +2941,6 @@ | |||
| path = ../linux/alsa; | |||
| sourceTree = SOURCE_ROOT; | |||
| }; | |||
| 4B05A0820DF72BC000840F4C /* freebob */ = { | |||
| isa = PBXGroup; | |||
| children = ( | |||
| 4B05A0830DF72BC000840F4C /* freebob_driver.h */, | |||
| 4B05A0840DF72BC000840F4C /* JackFreebobDriver.cpp */, | |||
| 4B05A0850DF72BC000840F4C /* JackFreebobDriver.h */, | |||
| ); | |||
| name = freebob; | |||
| path = ../linux/freebob; | |||
| sourceTree = SOURCE_ROOT; | |||
| }; | |||
| 4B05A08A0DF72BF600840F4C /* Windows */ = { | |||
| isa = PBXGroup; | |||
| children = ( | |||
| @@ -41,7 +41,7 @@ For the latest JACK information please consult the web site: | |||
| \fB\-d, \-\-driver \fIbackend\fR [\fIbackend\-parameters\fR ] | |||
| .br | |||
| Select the audio interface backend. The current list of supported | |||
| backends is: \fBalsa\fR, \fBcoreaudio\fR, \fBdummy\fR, \fBfreebob\fR, | |||
| backends is: \fBalsa\fR, \fBcoreaudio\fR, \fBdummy\fR, | |||
| \fBfirewire\fR, \fBoss\fR \fBsun\fR and \fBportaudio\fR. They are | |||
| not all available on all platforms. All \fIbackend\-parameters\fR are optional. | |||
| @@ -257,7 +257,7 @@ containing at least \fB\-\-nperiods\fR, but the playback latency does | |||
| not increase. | |||
| For USB audio devices it is recommended to use \fB\-n 3\fR. Firewire | |||
| devices supported by FFADO (formerly Freebob) are configured with | |||
| devices supported by FFADO (formerly FreeBoB) are configured with | |||
| \fB\-n 3\fR by default. | |||
| .TP | |||
| @@ -809,8 +809,6 @@ Print usage message for the parameters specific to each backend. | |||
| .br | |||
| \fBjackd \-d firewire \-\-help\fR | |||
| .br | |||
| \fBjackd \-d freebob \-\-help\fR | |||
| .br | |||
| \fBjackd \-d oss \-\-help\fR | |||
| .br | |||
| \fBjackd \-d sun \-\-help\fR | |||
| @@ -100,12 +100,6 @@ def options(opt): | |||
| firewire.check_cfg( | |||
| package='libffado >= 1.999.17', | |||
| args='--cflags --libs') | |||
| freebob = opt.add_auto_option( | |||
| 'freebob', | |||
| help='Enable FreeBob driver') | |||
| freebob.check_cfg( | |||
| package='libfreebob >= 1.0.0', | |||
| args='--cflags --libs') | |||
| iio = opt.add_auto_option( | |||
| 'iio', | |||
| help='Enable IIO driver', | |||
| @@ -602,10 +596,6 @@ def build_drivers(bld): | |||
| 'linux/firewire/JackFFADOMidiSendQueue.cpp' | |||
| ] | |||
| freebob_src = [ | |||
| 'linux/freebob/JackFreebobDriver.cpp' | |||
| ] | |||
| iio_driver_src = [ | |||
| 'linux/iio/JackIIODriver.cpp' | |||
| ] | |||
| @@ -668,13 +658,6 @@ def build_drivers(bld): | |||
| source = alsarawmidi_src, | |||
| use = ['ALSA']) | |||
| if bld.env['BUILD_DRIVER_FREEBOB']: | |||
| create_driver_obj( | |||
| bld, | |||
| target = 'freebob', | |||
| source = freebob_src, | |||
| use = ['LIBFREEBOB']) | |||
| if bld.env['BUILD_DRIVER_FFADO']: | |||
| create_driver_obj( | |||
| bld, | |||