21 #include "JackTimedDriver.h"    22 #include "JackEngineControl.h"    24 #include "JackCompilerDeps.h"    32 int JackTimedDriver::FirstCycle(jack_time_t cur_time_usec)
    34     fAnchorTimeUsec = cur_time_usec;
    35     return int((
double(fEngineControl->fBufferSize) * 1000000) / 
double(fEngineControl->fSampleRate));
    38 int JackTimedDriver::CurrentCycle(jack_time_t cur_time_usec)
    40     return int(((
double(fCycleCount) * 
double(fEngineControl->fBufferSize) * 1000000.) / 
double(fEngineControl->fSampleRate)) - (cur_time_usec - fAnchorTimeUsec));
    43 int JackTimedDriver::Start()
    46     return JackAudioDriver::Start();
    49 void JackTimedDriver::ProcessWait()
    51     jack_time_t cur_time_usec = GetMicroSeconds();
    54     if (fCycleCount++ == 0) {
    55         wait_time_usec = FirstCycle(cur_time_usec);
    57         wait_time_usec = CurrentCycle(cur_time_usec);
    60     if (wait_time_usec < 0) {
    61         NotifyXRun(cur_time_usec, 
float(cur_time_usec - fBeginDateUst));
    64         jack_error(
"JackTimedDriver::Process XRun = %ld usec", (cur_time_usec - fBeginDateUst));
    68     JackSleep(wait_time_usec);
    71 int JackWaiterDriver::ProcessNull()
    73     JackDriver::CycleTakeBeginTime();
    76     if (fEngineControl->fSyncMode) {
    83     JackDriver::CycleTakeEndTime();
    91     fRestartDriver = driver;
    96     if (!fRestartDriver) {
    97         jack_error(
"JackRestartedDriver::RestartWait driver not set");
   100     return fRestartDriver->Start();
 SERVER_EXPORT void jack_error(const char *fmt,...)
void SetRestartDriver(JackDriver *driver)