From a50961906fd08934dc6b66960ffa3de7d3f89e4a Mon Sep 17 00:00:00 2001 From: sletz Date: Fri, 22 Aug 2008 13:55:51 +0000 Subject: [PATCH] Add a fNetworkSync state in JackTransportEngine used in network. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2797 0c269be4-1314-0410-8aa9-9f06e86f4224 --- ChangeLog | 1 + common/JackTransportEngine.cpp | 10 ++++++++-- common/JackTransportEngine.h | 16 ++++++++++++++++ common/jack/types.h | 9 +++++---- macosx/JackCoreAudioAdapter.cpp | 8 ++++---- tests/jack_test.cpp | 3 +++ 6 files changed, 37 insertions(+), 10 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4e01cf92..796040ce 100644 --- a/ChangeLog +++ b/ChangeLog @@ -25,6 +25,7 @@ Florian Faber 2008-08-22 Stephane Letz * Move GetCurrentTransportFrame code from JackClient to JackTransportEngine. + * Add a fNetworkSync state in JackTransportEngine used in network. 2008-08-03 Stephane Letz diff --git a/common/JackTransportEngine.cpp b/common/JackTransportEngine.cpp index 6676d05e..ea2546ec 100644 --- a/common/JackTransportEngine.cpp +++ b/common/JackTransportEngine.cpp @@ -45,6 +45,7 @@ JackTransportEngine::JackTransportEngine(): JackAtomicArrayState rolling fSyncTimeLeft = %ld", fSyncTimeLeft); - fTransportState = JackTransportRolling; + if (fNetworkSync) { + jack_log("transport starting ==> netstarting"); + fTransportState = JackTransportNetStarting; + } else { + jack_log("transport starting ==> rolling fSyncTimeLeft = %ld", fSyncTimeLeft); + fTransportState = JackTransportRolling; + } } break; diff --git a/common/JackTransportEngine.h b/common/JackTransportEngine.h index bc36a012..81059598 100644 --- a/common/JackTransportEngine.h +++ b/common/JackTransportEngine.h @@ -101,6 +101,7 @@ class EXPORT JackTransportEngine : public JackAtomicArrayState int fSyncTimeLeft; int fTimeBaseMaster; bool fPendingPos; + bool fNetworkSync; SInt32 fWriteCounter; bool CheckAllRolling(JackClientInterface** table); @@ -126,6 +127,11 @@ class EXPORT JackTransportEngine : public JackAtomicArrayState { return fTransportState; } + + void GetState(jack_transport_state_t state) + { + fTransportState = state; + } int GetTimebaseMaster() const { @@ -174,6 +180,16 @@ class EXPORT JackTransportEngine : public JackAtomicArrayState jack_nframes_t GetCurrentFrame(); static void CopyPosition(jack_position_t* from, jack_position_t* to); + + bool GetNetworkSync() const + { + return fNetworkSync; + } + + void SetNetworkSync(bool sync) + { + fNetworkSync = sync; + } }; diff --git a/common/jack/types.h b/common/jack/types.h index 8b4584b4..6dbdef62 100644 --- a/common/jack/types.h +++ b/common/jack/types.h @@ -437,10 +437,11 @@ typedef enum JackStatus jack_status_t; typedef enum { /* the order matters for binary compatibility */ - JackTransportStopped = 0, /**< Transport halted */ - JackTransportRolling = 1, /**< Transport playing */ - JackTransportLooping = 2, /**< For OLD_TRANSPORT, now ignored */ - JackTransportStarting = 3, /**< Waiting for sync ready */ + JackTransportStopped = 0, /**< Transport halted */ + JackTransportRolling = 1, /**< Transport playing */ + JackTransportLooping = 2, /**< For OLD_TRANSPORT, now ignored */ + JackTransportStarting = 3, /**< Waiting for sync ready */ + JackTransportNetStarting = 4, /**< Waiting for sync ready on the network*/ } jack_transport_state_t; diff --git a/macosx/JackCoreAudioAdapter.cpp b/macosx/JackCoreAudioAdapter.cpp index 6645365f..ca05c392 100644 --- a/macosx/JackCoreAudioAdapter.cpp +++ b/macosx/JackCoreAudioAdapter.cpp @@ -363,8 +363,8 @@ int JackCoreAudioAdapter::SetupBuffers(int inchannels, int outchannels) fInputData->mNumberBuffers = inchannels; for (int i = 0; i < fCaptureChannels; i++) { fInputData->mBuffers[i].mNumberChannels = 1; - fInputData->mBuffers[i].mDataByteSize = fBufferSize * sizeof(float); - fInputData->mBuffers[i].mData = malloc(fBufferSize * sizeof(float)); + fInputData->mBuffers[i].mDataByteSize = fAdaptedBufferSize * sizeof(float); + fInputData->mBuffers[i].mData = malloc(fAdaptedBufferSize * sizeof(float)); } return 0; } @@ -575,10 +575,10 @@ int JackCoreAudioAdapter::Open() if (SetupChannels(true, true, fCaptureChannels, fPlaybackChannels, in_nChannels, out_nChannels, true) < 0) return -1; - if (SetupBufferSizeAndSampleRate(fBufferSize, fSampleRate) < 0) + if (SetupBufferSizeAndSampleRate(fAdaptedBufferSize, fAdaptedSampleRate) < 0) return -1; - if (OpenAUHAL(true, true, fCaptureChannels, fPlaybackChannels, in_nChannels, out_nChannels, fBufferSize, fSampleRate, true) < 0) + if (OpenAUHAL(true, true, fCaptureChannels, fPlaybackChannels, in_nChannels, out_nChannels, fAdaptedBufferSize, fAdaptedSampleRate, true) < 0) goto error; if (SetupBuffers(fCaptureChannels, fPlaybackChannels) < 0) diff --git a/tests/jack_test.cpp b/tests/jack_test.cpp index 48e8d894..6cfdf66f 100644 --- a/tests/jack_test.cpp +++ b/tests/jack_test.cpp @@ -489,6 +489,9 @@ static void display_transport_state() case JackTransportStarting: Log("Transport is starting...\n"); break; + case JackTransportNetStarting: + Log("Transport is starting with network sync...\n"); + break; } }