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, | |||