From 18b2dbea5299c79140ce7f3ba93d90a70f41cd3a Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 2 Jul 2008 12:47:17 +0000 Subject: [PATCH] Add buffer size callback git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2584 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/JackCallbackNetIOAdapter.cpp | 10 ++++++++++ common/JackCallbackNetIOAdapter.h | 3 ++- common/JackIOAdapter.h | 7 ++++++- common/JackNetIOAdapter.h | 2 +- windows/JackPortAudioIOAdapter.cpp | 7 +++++++ windows/JackPortAudioIOAdapter.h | 2 ++ 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/common/JackCallbackNetIOAdapter.cpp b/common/JackCallbackNetIOAdapter.cpp index 09815c53..374b67db 100644 --- a/common/JackCallbackNetIOAdapter.cpp +++ b/common/JackCallbackNetIOAdapter.cpp @@ -68,6 +68,13 @@ int JackCallbackNetIOAdapter::Process(jack_nframes_t frames, void* arg) return 0; } +int JackCallbackNetIOAdapter::BufferSize(jack_nframes_t nframes, void *arg) +{ + JackCallbackNetIOAdapter* adapter = static_cast(arg); + adapter->fIOAdapter->SetBufferSize(nframes); + return 0; +} + JackCallbackNetIOAdapter::JackCallbackNetIOAdapter(jack_client_t* jack_client, JackIOAdapterInterface* audio_io, int input, @@ -87,6 +94,9 @@ JackCallbackNetIOAdapter::JackCallbackNetIOAdapter(jack_client_t* jack_client, if (jack_set_process_callback(fJackClient, Process, this) < 0) goto fail; + + if (jack_set_buffer_size_callback(fJackClient, BufferSize, this) < 0) + goto fail; if (jack_activate(fJackClient) < 0) goto fail; diff --git a/common/JackCallbackNetIOAdapter.h b/common/JackCallbackNetIOAdapter.h index ea22bde3..1cd3953c 100644 --- a/common/JackCallbackNetIOAdapter.h +++ b/common/JackCallbackNetIOAdapter.h @@ -35,6 +35,7 @@ namespace Jack jack_ringbuffer_t* fPlaybackRingBuffer; static int Process(jack_nframes_t, void* arg); + static int BufferSize(jack_nframes_t nframes, void *arg); public: @@ -43,7 +44,7 @@ namespace Jack int input, int output); ~JackCallbackNetIOAdapter(); - + }; } diff --git a/common/JackIOAdapter.h b/common/JackIOAdapter.h index e69da0ef..211e194a 100644 --- a/common/JackIOAdapter.h +++ b/common/JackIOAdapter.h @@ -56,11 +56,16 @@ namespace Jack fCaptureRingBuffer = input; fPlaybackRingBuffer = output; } - + bool IsRunning() {return fRunning;} virtual int Open() = 0; virtual int Close() = 0; + + virtual void SetBufferSize(int buffer_size) + { + fBufferSize = buffer_size; + } }; } diff --git a/common/JackNetIOAdapter.h b/common/JackNetIOAdapter.h index 644271af..a4f8a0e5 100644 --- a/common/JackNetIOAdapter.h +++ b/common/JackNetIOAdapter.h @@ -49,7 +49,7 @@ namespace Jack int input, int output); virtual ~JackNetIOAdapter(); - + int Open(); int Close(); diff --git a/windows/JackPortAudioIOAdapter.cpp b/windows/JackPortAudioIOAdapter.cpp index 04990f4a..268bccf0 100644 --- a/windows/JackPortAudioIOAdapter.cpp +++ b/windows/JackPortAudioIOAdapter.cpp @@ -143,4 +143,11 @@ int JackPortAudioIOAdapter::Close() return 0; } +void JackPortAudioIOAdapter::SetBufferSize(int buffer_size) +{ + JackIOAdapterInterface::SetBufferSize(buffer_size); + Close(); + Open(); +} + } // namespace \ No newline at end of file diff --git a/windows/JackPortAudioIOAdapter.h b/windows/JackPortAudioIOAdapter.h index ea7e16e1..35fa2be6 100644 --- a/windows/JackPortAudioIOAdapter.h +++ b/windows/JackPortAudioIOAdapter.h @@ -52,6 +52,8 @@ namespace Jack int Open(); int Close(); + void SetBufferSize(int buffer_size); + }; }