From 156528d24e17ea657f95f798a3745efa2f899ce2 Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 2 Jul 2008 12:52:22 +0000 Subject: [PATCH] JaclAlsaIOAdapter compiles and starts git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2614 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/wscript | 4 +- linux/alsa/JackAlsaIOAdapter.cpp | 7 ++-- linux/alsa/JackAlsaIOAdapter.h | 67 ++++++++++++++++++++------------ 3 files changed, 50 insertions(+), 28 deletions(-) diff --git a/common/wscript b/common/wscript index 520c47fb..8e8f1950 100644 --- a/common/wscript +++ b/common/wscript @@ -206,7 +206,9 @@ def build(bld): if bld.env()['IS_MACOSX']: process.env.append_value("LINKFLAGS", "../macosx/libportaudio.a -framework CoreAudio -framework AudioUnit -framework AudioToolbox -framework CoreServices") - + if bld.env()['IS_LINUX']: + process.env.append_value("LINKFLAGS", "-lasound") + install_files('PREFIX', 'include/jack', 'jack/*.h') # process jack.pc.in -> jack.pc diff --git a/linux/alsa/JackAlsaIOAdapter.cpp b/linux/alsa/JackAlsaIOAdapter.cpp index 8f84aa3e..f3e554c0 100644 --- a/linux/alsa/JackAlsaIOAdapter.cpp +++ b/linux/alsa/JackAlsaIOAdapter.cpp @@ -42,12 +42,13 @@ int JackAlsaIOAdapter::Close() return fAudioInterface.close(); } -bool JackAlsaIOAdapter:Execute() +bool JackAlsaIOAdapter::Execute() { - if (fAudioInterface.read()) < 0) + if (fAudioInterface.read() < 0) return false; - if (fAudioInterface.write()) < 0) + if (fAudioInterface.write() < 0) return false; + return true; } int JackAlsaIOAdapter::SetBufferSize(jack_nframes_t buffer_size) diff --git a/linux/alsa/JackAlsaIOAdapter.h b/linux/alsa/JackAlsaIOAdapter.h index 53b46800..bd0ba379 100644 --- a/linux/alsa/JackAlsaIOAdapter.h +++ b/linux/alsa/JackAlsaIOAdapter.h @@ -20,6 +20,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #ifndef __JackAlsaIOAdapter__ #define __JackAlsaIOAdapter__ +#include +#include #include #include "JackIOAdapter.h" #include "JackPlatformThread.h" @@ -45,9 +47,9 @@ namespace Jack public: - const char* fCardName; + const char* fCardName; unsigned int fFrequency; - int fBuffering; + int fBuffering; unsigned int fSoftInputs; unsigned int fSoftOutputs; @@ -85,19 +87,19 @@ namespace Jack public: - snd_pcm_t* fOutputDevice; - snd_pcm_t* fInputDevice; + snd_pcm_t* fOutputDevice; + snd_pcm_t* fInputDevice; snd_pcm_hw_params_t* fInputParams; snd_pcm_hw_params_t* fOutputParams; - snd_pcm_format_t fSampleFormat; - snd_pcm_access_t fSampleAccess; + snd_pcm_format_t fSampleFormat; + snd_pcm_access_t fSampleAccess; - unsigned int fCardInputs; - unsigned int fCardOutputs; + unsigned int fCardInputs; + unsigned int fCardOutputs; - unsigned int fChanInputs; - unsigned int fChanOutputs; + unsigned int fChanInputs; + unsigned int fChanOutputs; // interleaved mode audiocard buffers void* fInputCardBuffer; @@ -113,11 +115,11 @@ namespace Jack public: - const char* cardName() { return fCardName; } - int frequency() { return fFrequency; } - int buffering() { return fBuffering; } + const char* cardName() { return fCardName; } + int frequency() { return fFrequency; } + int buffering() { return fBuffering; } - float** inputSoftChannels() { return fInputSoftChannels; } + float** inputSoftChannels() { return fInputSoftChannels; } float** outputSoftChannels() { return fOutputSoftChannels; } AudioInterface(const AudioParam& ap = AudioParam()) : AudioParam(ap) @@ -189,6 +191,8 @@ namespace Jack fOutputSoftChannels[i][j] = 0.0; } } + + return 0; } int setAudioParams(snd_pcm_t* stream, snd_pcm_hw_params_t* params) @@ -225,6 +229,7 @@ namespace Jack err = snd_pcm_hw_params_set_periods (stream, params, 2, 0); check_error_msg(err, "number of periods not available"); + return 0; } ssize_t interleavedBufferSize(snd_pcm_hw_params_t* params) @@ -244,8 +249,11 @@ namespace Jack return bsize; } - void close() - {} + int close() + { + // TODO + return 0; + } /** * Read audio samples from the audio card. Convert samples to floats and take @@ -312,6 +320,8 @@ namespace Jack } else { check_error_msg(-10000, "unknow access mode"); } + + return 0; } @@ -389,6 +399,8 @@ namespace Jack } else { check_error_msg(-10000, "unknow access mode"); } + + return 0; } /** @@ -434,6 +446,7 @@ namespace Jack // affichage des infos liees aux streams d'entree-sortie if (fSoftInputs > 0) printHWParams(fInputParams); if (fSoftOutputs > 0) printHWParams(fOutputParams); + return 0; } void printCardInfo(snd_ctl_card_info_t* ci) @@ -469,19 +482,25 @@ namespace Jack class JackAlsaIOAdapter : public JackIOAdapterInterface, public JackRunnableInterface { - private: + private: - AudioInterface fAudioInterface; - JackThread fThread; + AudioInterface fAudioInterface; + JackThread fThread; - public: + public: - JackAlsaIOAdapter(int input, int output, jack_nframes_t buffer_size, jack_nframes_t sample_rate) + JackAlsaIOAdapter(int input, int output, jack_nframes_t buffer_size, jack_nframes_t sample_rate) :JackIOAdapterInterface(input, output, buffer_size, sample_rate) - ,fThread(this),AudioParam().frequency(sample_rate).buffering(buffer_size).inputs(input).output(output) - {} + ,fThread(this) + + { + fAudioInterface.fFrequency = sample_rate; + fAudioInterface.fBuffering = buffer_size; + fAudioInterface.fSoftInputs = input; + fAudioInterface.fSoftOutputs = output; + } - ~JackAlsaIOAdapter() + ~JackAlsaIOAdapter() {} virtual int Open();