diff options
author | Stephane Letz <letz@grame.fr> | 2011-11-04 14:47:54 +0100 |
---|---|---|
committer | Stephane Letz <letz@grame.fr> | 2011-11-04 14:47:54 +0100 |
commit | 734e45092474d2f77933dc2075bfec799b731c37 (patch) | |
tree | 9954307ae45def8d493a0eebb7648924938c792e /common/JackTimedDriver.cpp | |
parent | 2b7864ad5ebee559b459c6450ca1965b5906abbb (diff) | |
download | jack2-734e45092474d2f77933dc2075bfec799b731c37.tar.gz |
NetJack2 code cleanup.
Diffstat (limited to 'common/JackTimedDriver.cpp')
-rw-r--r-- | common/JackTimedDriver.cpp | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/common/JackTimedDriver.cpp b/common/JackTimedDriver.cpp index 68b98b6f..2a6dec89 100644 --- a/common/JackTimedDriver.cpp +++ b/common/JackTimedDriver.cpp @@ -29,58 +29,61 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. namespace Jack { -int JackTimedDriver::FirstCycle(jack_time_t cur_time) +int JackTimedDriver::FirstCycle(jack_time_t cur_time_usec) { - fAnchorTime = cur_time; + fAnchorTimeUsec = cur_time_usec; return int((double(fEngineControl->fBufferSize) * 1000000) / double(fEngineControl->fSampleRate)); } - -int JackTimedDriver::CurrentCycle(jack_time_t cur_time) + +int JackTimedDriver::CurrentCycle(jack_time_t cur_time_usec) +{ + return int(((double(fCycleCount) * double(fEngineControl->fBufferSize) * 1000000.) / double(fEngineControl->fSampleRate)) - (cur_time_usec - fAnchorTimeUsec)); +} + +int JackTimedDriver::Start() { - return int((double(fCycleCount) * double(fEngineControl->fBufferSize) * 1000000.) / double(fEngineControl->fSampleRate)) - (cur_time - fAnchorTime); + fCycleCount = 0; + return JackAudioDriver::Start(); } -int JackTimedDriver::ProcessAux() +void JackTimedDriver::ProcessWait() { - jack_time_t cur_time = GetMicroSeconds(); - int wait_time; - + jack_time_t cur_time_usec = GetMicroSeconds(); + int wait_time_usec; + if (fCycleCount++ == 0) { - wait_time = FirstCycle(cur_time); + wait_time_usec = FirstCycle(cur_time_usec); } else { - wait_time = CurrentCycle(cur_time); + wait_time_usec = CurrentCycle(cur_time_usec); } - - if (wait_time < 0) { - NotifyXRun(cur_time, float(cur_time -fBeginDateUst)); + + if (wait_time_usec < 0) { + NotifyXRun(cur_time_usec, float(cur_time_usec - fBeginDateUst)); fCycleCount = 0; - wait_time = 0; + wait_time_usec = 0; + jack_error("JackTimedDriver::Process XRun = %ld usec", (cur_time_usec - fBeginDateUst)); } - - //jack_log("JackTimedDriver::Process wait_time = %d", wait_time); - JackSleep(wait_time); - return 0; -} -int JackTimedDriver::Process() -{ - JackDriver::CycleTakeBeginTime(); - JackAudioDriver::Process(); - - return ProcessAux(); + //jack_log("JackTimedDriver::Process wait_time = %d", wait_time_usec); + JackSleep(wait_time_usec); } -int JackTimedDriver::ProcessNull() +int JackWaiterDriver::ProcessNull() { JackDriver::CycleTakeBeginTime(); - + + // Graph processing without Read/Write if (fEngineControl->fSyncMode) { - ProcessGraphSyncMaster(); + ProcessGraphSync(); } else { - ProcessGraphAsyncMaster(); + ProcessGraphAsync(); } - - return ProcessAux(); + + // Keep end cycle time + JackDriver::CycleTakeEndTime(); + + ProcessWait(); + return 0; } } // end of namespace |