summaryrefslogtreecommitdiff
path: root/common/JackTimedDriver.cpp
diff options
context:
space:
mode:
authorStephane Letz <letz@grame.fr>2011-11-04 14:47:54 +0100
committerStephane Letz <letz@grame.fr>2011-11-04 14:47:54 +0100
commit734e45092474d2f77933dc2075bfec799b731c37 (patch)
tree9954307ae45def8d493a0eebb7648924938c792e /common/JackTimedDriver.cpp
parent2b7864ad5ebee559b459c6450ca1965b5906abbb (diff)
downloadjack2-734e45092474d2f77933dc2075bfec799b731c37.tar.gz
NetJack2 code cleanup.
Diffstat (limited to 'common/JackTimedDriver.cpp')
-rw-r--r--common/JackTimedDriver.cpp67
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