Browse Source

Correct fPeriodUsecs computation in JackAudioDriver::SetBufferSize and JackAudioDriver::SetSampleRate(2)

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1718 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/0.69
sletz 17 years ago
parent
commit
d07f62bc74
4 changed files with 10 additions and 16 deletions
  1. +6
    -9
      common/JackAudioDriver.cpp
  2. +1
    -1
      common/JackDriver.cpp
  3. +2
    -0
      common/JackEngineControl.h
  4. +1
    -6
      common/JackTools.h

+ 6
- 9
common/JackAudioDriver.cpp View File

@@ -30,7 +30,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#include "JackPort.h"
#include "JackGraphManager.h"
#include "JackEngine.h"
#include "JackTools.h"
#include <assert.h>

namespace Jack
@@ -50,20 +49,18 @@ int JackAudioDriver::SetBufferSize(jack_nframes_t buffer_size)
{
fEngineControl->fBufferSize = 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;
}

int JackAudioDriver::SetSampleRate(jack_nframes_t 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;
}



+ 1
- 1
common/JackDriver.cpp View File

@@ -117,7 +117,7 @@ int JackDriver::Open(jack_nframes_t nframes,
strcpy(fPlaybackDriverName, playback_driver_name);

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);

fGraphManager->SetBufferSize(nframes);


+ 2
- 0
common/JackEngineControl.h View File

@@ -73,6 +73,7 @@ struct JackEngineControl : public JackShmMem
bool fTemporary;
jack_time_t fPeriodUsecs;
jack_time_t fTimeOutUsecs;
bool fTimeOut;
bool fRealTime;
int32_t fPriority;
char fServerName[64];
@@ -106,6 +107,7 @@ struct JackEngineControl : public JackShmMem
{
fSyncMode = sync;
fTemporary = temporary;
fTimeOut = (timeout > 0);
fTimeOutUsecs = timeout * 1000;
fRealTime = rt;
fPriority = priority;


+ 1
- 6
common/JackTools.h View File

@@ -42,12 +42,7 @@ namespace Jack
static void CleanupFiles(const char* server_name);
static int GetTmpdir();
static void RewriteName(const char* name, char* new_name);
static bool inline EqualFloat(float a, float b)
{
return (fabs(a - b) < 0.00001f);
}

};
}



Loading…
Cancel
Save