git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1718 0c269be4-1314-0410-8aa9-9f06e86f4224tags/0.69
@@ -30,7 +30,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | |||||
#include "JackPort.h" | #include "JackPort.h" | ||||
#include "JackGraphManager.h" | #include "JackGraphManager.h" | ||||
#include "JackEngine.h" | #include "JackEngine.h" | ||||
#include "JackTools.h" | |||||
#include <assert.h> | #include <assert.h> | ||||
namespace Jack | namespace Jack | ||||
@@ -50,20 +49,18 @@ int JackAudioDriver::SetBufferSize(jack_nframes_t buffer_size) | |||||
{ | { | ||||
fEngineControl->fBufferSize = buffer_size; | fEngineControl->fBufferSize = buffer_size; | ||||
fGraphManager->SetBufferSize(buffer_size); | fGraphManager->SetBufferSize(buffer_size); | ||||
float new_val = 1000000.f / fEngineControl->fSampleRate * fEngineControl->fBufferSize; // in microsec | |||||
if (JackTools::EqualFloat(2.f * fEngineControl->fPeriodUsecs, fEngineControl->fTimeOutUsecs)) // -t (timeout) was not used, see JackDriver::Open... | |||||
fEngineControl->fTimeOutUsecs = jack_time_t(2.f * new_val); | |||||
fEngineControl->fPeriodUsecs = jack_time_t(new_val); | |||||
fEngineControl->fPeriodUsecs = jack_time_t(1000000.f / fEngineControl->fSampleRate * fEngineControl->fBufferSize); // in microsec | |||||
if (!fEngineControl->fTimeOut) | |||||
fEngineControl->fTimeOutUsecs = jack_time_t(2.f * fEngineControl->fPeriodUsecs); | |||||
return 0; | return 0; | ||||
} | } | ||||
int JackAudioDriver::SetSampleRate(jack_nframes_t sample_rate) | int JackAudioDriver::SetSampleRate(jack_nframes_t sample_rate) | ||||
{ | { | ||||
fEngineControl->fSampleRate = sample_rate; | fEngineControl->fSampleRate = sample_rate; | ||||
float new_val = 1000000.f / fEngineControl->fSampleRate * fEngineControl->fBufferSize; // in microsec | |||||
if (JackTools::EqualFloat(2.f * fEngineControl->fPeriodUsecs, fEngineControl->fTimeOutUsecs)) // -t (timeout) was not used, see JackDriver::Open... | |||||
fEngineControl->fTimeOutUsecs = jack_time_t(2.f * new_val); | |||||
fEngineControl->fPeriodUsecs = jack_time_t(new_val); | |||||
fEngineControl->fPeriodUsecs = jack_time_t(1000000.f / fEngineControl->fSampleRate * fEngineControl->fBufferSize); // in microsec | |||||
if (!fEngineControl->fTimeOut) | |||||
fEngineControl->fTimeOutUsecs = jack_time_t(2.f * fEngineControl->fPeriodUsecs); | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -117,7 +117,7 @@ int JackDriver::Open(jack_nframes_t nframes, | |||||
strcpy(fPlaybackDriverName, playback_driver_name); | strcpy(fPlaybackDriverName, playback_driver_name); | ||||
fEngineControl->fPeriodUsecs = jack_time_t(1000000.f / fEngineControl->fSampleRate * fEngineControl->fBufferSize); // in microsec | fEngineControl->fPeriodUsecs = jack_time_t(1000000.f / fEngineControl->fSampleRate * fEngineControl->fBufferSize); // in microsec | ||||
if (fEngineControl->fTimeOutUsecs == 0) /* if zero [-t (timeout) was not used], use 2 period size */ | |||||
if (!fEngineControl->fTimeOut) | |||||
fEngineControl->fTimeOutUsecs = jack_time_t(2.f * fEngineControl->fPeriodUsecs); | fEngineControl->fTimeOutUsecs = jack_time_t(2.f * fEngineControl->fPeriodUsecs); | ||||
fGraphManager->SetBufferSize(nframes); | fGraphManager->SetBufferSize(nframes); | ||||
@@ -73,6 +73,7 @@ struct JackEngineControl : public JackShmMem | |||||
bool fTemporary; | bool fTemporary; | ||||
jack_time_t fPeriodUsecs; | jack_time_t fPeriodUsecs; | ||||
jack_time_t fTimeOutUsecs; | jack_time_t fTimeOutUsecs; | ||||
bool fTimeOut; | |||||
bool fRealTime; | bool fRealTime; | ||||
int32_t fPriority; | int32_t fPriority; | ||||
char fServerName[64]; | char fServerName[64]; | ||||
@@ -106,6 +107,7 @@ struct JackEngineControl : public JackShmMem | |||||
{ | { | ||||
fSyncMode = sync; | fSyncMode = sync; | ||||
fTemporary = temporary; | fTemporary = temporary; | ||||
fTimeOut = (timeout > 0); | |||||
fTimeOutUsecs = timeout * 1000; | fTimeOutUsecs = timeout * 1000; | ||||
fRealTime = rt; | fRealTime = rt; | ||||
fPriority = priority; | fPriority = priority; | ||||
@@ -42,12 +42,7 @@ namespace Jack | |||||
static void CleanupFiles(const char* server_name); | static void CleanupFiles(const char* server_name); | ||||
static int GetTmpdir(); | static int GetTmpdir(); | ||||
static void RewriteName(const char* name, char* new_name); | static void RewriteName(const char* name, char* new_name); | ||||
static bool inline EqualFloat(float a, float b) | |||||
{ | |||||
return (fabs(a - b) < 0.00001f); | |||||
} | |||||
}; | }; | ||||
} | } | ||||