From 3ee6e1f1fd06ca39fba3b8e5a589968274541d78 Mon Sep 17 00:00:00 2001 From: sletz Date: Fri, 13 Mar 2009 14:28:52 +0000 Subject: [PATCH] Adapter -g parameter allows to change ringbuffer size. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3431 0c269be4-1314-0410-8aa9-9f06e86f4224 --- common/JackAudioAdapterInterface.cpp | 10 +++++++--- common/JackNetAdapter.cpp | 7 ++++--- linux/alsa/JackAlsaAdapter.cpp | 7 ++++--- macosx/coreaudio/JackCoreAudioAdapter.cpp | 7 ++++--- solaris/oss/JackOSSAdapter.cpp | 7 ++++--- windows/portaudio/JackPortAudioAdapter.cpp | 7 ++++--- 6 files changed, 27 insertions(+), 18 deletions(-) diff --git a/common/JackAudioAdapterInterface.cpp b/common/JackAudioAdapterInterface.cpp index bedf5ecb..477a7dd1 100644 --- a/common/JackAudioAdapterInterface.cpp +++ b/common/JackAudioAdapterInterface.cpp @@ -185,10 +185,11 @@ namespace Jack fCaptureRingBuffer = new JackResampler*[fCaptureChannels]; fPlaybackRingBuffer = new JackResampler*[fPlaybackChannels]; - if (fAdaptative) { + if (fAdaptative) { jack_info("Ringbuffer automatic adaptative mode size = %d frames", fRingbufferCurSize); } else { - fRingbufferCurSize = DEFAULT_RB_SIZE; + if (fRingbufferCurSize > DEFAULT_RB_SIZE) + fRingbufferCurSize = DEFAULT_RB_SIZE; jack_info("Fixed ringbuffer size = %d frames", fRingbufferCurSize); } @@ -246,7 +247,10 @@ namespace Jack // Reset all ringbuffers in case of failure if (failure) { jack_error("JackAudioAdapterInterface::PushAndPull ringbuffer failure... reset"); - GrowRingBufferSize(); + if (fAdaptative) { + GrowRingBufferSize(); + jack_info("Ringbuffer size = %d frames", fRingbufferCurSize); + } ResetRingBuffers(); return -1; } else { diff --git a/common/JackNetAdapter.cpp b/common/JackNetAdapter.cpp index 21314c18..9945ed96 100644 --- a/common/JackNetAdapter.cpp +++ b/common/JackNetAdapter.cpp @@ -96,6 +96,7 @@ namespace Jack fQuality = param->value.ui; break; case 'g': + fRingbufferCurSize = param->value.ui; fAdaptative = false; break; } @@ -468,10 +469,10 @@ extern "C" i++; strcpy(desc->params[i].name, "ring-buffer"); desc->params[i].character = 'g'; - desc->params[i].type = JackDriverParamBool; - desc->params[i].value.i = false; + desc->params[i].type = JackDriverParamInt; + desc->params[i].value.ui = 32768; strcpy(desc->params[i].short_desc, "Fixed ringbuffer size"); - strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (false = automatic adaptative)"); + strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (if not set => automatic adaptative)"); i++; strcpy ( desc->params[i].name, "auto-connect" ); diff --git a/linux/alsa/JackAlsaAdapter.cpp b/linux/alsa/JackAlsaAdapter.cpp index 57c24d4e..a046e1f2 100644 --- a/linux/alsa/JackAlsaAdapter.cpp +++ b/linux/alsa/JackAlsaAdapter.cpp @@ -77,6 +77,7 @@ namespace Jack fQuality = param->value.ui; break; case 'g': + fRingbufferCurSize = param->value.ui; fAdaptative = false; break; } @@ -284,10 +285,10 @@ extern "C" i++; strcpy(desc->params[i].name, "ring-buffer"); desc->params[i].character = 'g'; - desc->params[i].type = JackDriverParamBool; - desc->params[i].value.i = false; + desc->params[i].type = JackDriverParamInt; + desc->params[i].value.ui = 32768; strcpy(desc->params[i].short_desc, "Fixed ringbuffer size"); - strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (false = automatic adaptative)"); + strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (if not set => automatic adaptative)"); return desc; } diff --git a/macosx/coreaudio/JackCoreAudioAdapter.cpp b/macosx/coreaudio/JackCoreAudioAdapter.cpp index 8bf7aa67..a0222cab 100644 --- a/macosx/coreaudio/JackCoreAudioAdapter.cpp +++ b/macosx/coreaudio/JackCoreAudioAdapter.cpp @@ -378,6 +378,7 @@ JackCoreAudioAdapter::JackCoreAudioAdapter(jack_nframes_t buffer_size, jack_nfra break; case 'g': + fRingbufferCurSize = param->value.ui; fAdaptative = false; break; } @@ -1079,10 +1080,10 @@ extern "C" i++; strcpy(desc->params[i].name, "ring-buffer"); desc->params[i].character = 'g'; - desc->params[i].type = JackDriverParamBool; - desc->params[i].value.i = false; + desc->params[i].type = JackDriverParamInt; + desc->params[i].value.ui = 32768; strcpy(desc->params[i].short_desc, "Fixed ringbuffer size"); - strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (false = automatic adaptative)"); + strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (if not set => automatic adaptative)"); return desc; } diff --git a/solaris/oss/JackOSSAdapter.cpp b/solaris/oss/JackOSSAdapter.cpp index 04dcbb1b..7bdfec96 100644 --- a/solaris/oss/JackOSSAdapter.cpp +++ b/solaris/oss/JackOSSAdapter.cpp @@ -183,6 +183,7 @@ JackOSSAdapter::JackOSSAdapter(jack_nframes_t buffer_size, jack_nframes_t sample break; case 'g': + fRingbufferCurSize = param->value.ui; fAdaptative = false; break; @@ -748,10 +749,10 @@ extern "C" i++; strcpy(desc->params[i].name, "ring-buffer"); desc->params[i].character = 'g'; - desc->params[i].type = JackDriverParamBool; - desc->params[i].value.i = false; + desc->params[i].type = JackDriverParamInt; + desc->params[i].value.ui = 32768; strcpy(desc->params[i].short_desc, "Fixed ringbuffer size"); - strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (false = automatic adaptative)"); + strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (if not set => automatic adaptative)"); return desc; } diff --git a/windows/portaudio/JackPortAudioAdapter.cpp b/windows/portaudio/JackPortAudioAdapter.cpp index 400b8d98..0f5e161b 100644 --- a/windows/portaudio/JackPortAudioAdapter.cpp +++ b/windows/portaudio/JackPortAudioAdapter.cpp @@ -97,6 +97,7 @@ namespace Jack fQuality = param->value.ui; break; case 'g': + fRingbufferCurSize = param->value.ui; fAdaptative = false; break; } @@ -297,10 +298,10 @@ extern "C" i++; strcpy(desc->params[i].name, "ring-buffer"); desc->params[i].character = 'g'; - desc->params[i].type = JackDriverParamBool; - desc->params[i].value.i = false; + desc->params[i].type = JackDriverParamInt; + desc->params[i].value.ui = 32768; strcpy(desc->params[i].short_desc, "Fixed ringbuffer size"); - strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (false = automatic adaptative)"); + strcpy(desc->params[i].long_desc, "Fixed ringbuffer size (if not set => automatic adaptative)"); return desc; }