Browse Source

Cleanup, documentation.

tags/v1.9.10
Stephane Letz 12 years ago
parent
commit
3797644104
4 changed files with 46 additions and 9 deletions
  1. +18
    -2
      common/JackAudioDriver.cpp
  2. +13
    -0
      common/JackAudioDriver.h
  3. +11
    -7
      common/JackDriver.h
  4. +4
    -0
      common/JackMidiDriver.h

+ 18
- 2
common/JackAudioDriver.cpp View File

@@ -203,7 +203,7 @@ int JackAudioDriver::Process()
} }


/* /*
The driver ASYNC mode: output buffers computed at the *previous cycle* are used, the server does not
The driver "asynchronous" mode: output buffers computed at the *previous cycle* are used, the server does not
synchronize to the end of client graph execution. synchronize to the end of client graph execution.
*/ */


@@ -239,6 +239,10 @@ void JackAudioDriver::ProcessGraphAsync()
} }
} }


/*
Used when the driver works in master mode.
*/

void JackAudioDriver::ProcessGraphAsyncMaster() void JackAudioDriver::ProcessGraphAsyncMaster()
{ {
// fBeginDateUst is set in the "low level" layer, fEndDateUst is from previous cycle // fBeginDateUst is set in the "low level" layer, fEndDateUst is from previous cycle
@@ -261,6 +265,10 @@ void JackAudioDriver::ProcessGraphAsyncMaster()
// Does not wait on graph execution end // Does not wait on graph execution end
} }


/*
Used when the driver works in slave mode.
*/

void JackAudioDriver::ProcessGraphAsyncSlave() void JackAudioDriver::ProcessGraphAsyncSlave()
{ {
if (ResumeRefNum() < 0) { if (ResumeRefNum() < 0) {
@@ -269,7 +277,7 @@ void JackAudioDriver::ProcessGraphAsyncSlave()
} }


/* /*
The driver SYNC mode: the server does synchronize to the end of client graph execution,
The driver "synchronous" mode: the server does synchronize to the end of client graph execution,
if graph process succeed, output buffers computed at the *current cycle* are used. if graph process succeed, output buffers computed at the *current cycle* are used.
*/ */


@@ -305,6 +313,10 @@ void JackAudioDriver::ProcessGraphSync()
} }
} }


/*
Used when the driver works in master mode.
*/

void JackAudioDriver::ProcessGraphSyncMaster() void JackAudioDriver::ProcessGraphSyncMaster()
{ {
// fBeginDateUst is set in the "low level" layer, fEndDateUst is from previous cycle // fBeginDateUst is set in the "low level" layer, fEndDateUst is from previous cycle
@@ -332,6 +344,10 @@ void JackAudioDriver::ProcessGraphSyncMaster()
} }
} }


/*
Used when the driver works in slave mode.
*/

void JackAudioDriver::ProcessGraphSyncSlave() void JackAudioDriver::ProcessGraphSyncSlave()
{ {
if (ResumeRefNum() < 0) { if (ResumeRefNum() < 0) {


+ 13
- 0
common/JackAudioDriver.h View File

@@ -28,6 +28,15 @@ namespace Jack


/*! /*!
\brief The base class for audio drivers: drivers with audio ports. \brief The base class for audio drivers: drivers with audio ports.

A concrete derived class will have to be defined with a real audio driver API,
either callback based one (like CoreAudio, PortAudio..) ones or blocking ones (like ALSA).

Most of the generic audio handing code is part of this class :
- concrete callback basedd derived subclasses typically have to Open/Close the underlying audio API,
setup the audio callback and implement the Read/Write methods
- concrete blocking based derived subclasses typically have to Open/Close the underlying audio API,
implement the Read/Write methods and "wraps" the driver with the JackThreadDriver class.
*/ */


class SERVER_EXPORT JackAudioDriver : public JackDriver class SERVER_EXPORT JackAudioDriver : public JackDriver
@@ -69,6 +78,10 @@ class SERVER_EXPORT JackAudioDriver : public JackDriver
jack_nframes_t capture_latency, jack_nframes_t capture_latency,
jack_nframes_t playback_latency); jack_nframes_t playback_latency);


/*
To be called by the underlying driver audio callback, or possibly by a RT thread (using JackThreadedDriver decorator)
when a blocking read/write underlying API is used (like ALSA)
*/
virtual int Process(); virtual int Process();


virtual int Attach(); virtual int Attach();


+ 11
- 7
common/JackDriver.h View File

@@ -95,9 +95,11 @@ class SERVER_EXPORT JackDriverInterface
virtual int ProcessRead() = 0; virtual int ProcessRead() = 0;
virtual int ProcessWrite() = 0; virtual int ProcessWrite() = 0;


// For "slave" driver in "synchronous" mode
virtual int ProcessReadSync() = 0; virtual int ProcessReadSync() = 0;
virtual int ProcessWriteSync() = 0; virtual int ProcessWriteSync() = 0;


// For "slave" driver in "asynchronous" mode
virtual int ProcessReadAsync() = 0; virtual int ProcessReadAsync() = 0;
virtual int ProcessWriteAsync() = 0; virtual int ProcessWriteAsync() = 0;


@@ -231,15 +233,17 @@ class SERVER_EXPORT JackDriver : public JackDriverClientInterface
int ProcessReadSlaves(); int ProcessReadSlaves();
int ProcessWriteSlaves(); int ProcessWriteSlaves();


// For "slave" driver
int ProcessRead();
int ProcessWrite();
// For "slave" driver with typically decompose a given cycle in separated Read and Write parts.
virtual int ProcessRead();
virtual int ProcessWrite();


int ProcessReadSync();
int ProcessWriteSync();
// For "slave" driver in "synchronous" mode
virtual int ProcessReadSync();
virtual int ProcessWriteSync();


int ProcessReadAsync();
int ProcessWriteAsync();
// For "slave" driver in "asynchronous" mode
virtual int ProcessReadAsync();
virtual int ProcessWriteAsync();


virtual bool IsFixedBufferSize(); virtual bool IsFixedBufferSize();
virtual int SetBufferSize(jack_nframes_t buffer_size); virtual int SetBufferSize(jack_nframes_t buffer_size);


+ 4
- 0
common/JackMidiDriver.h View File

@@ -30,6 +30,10 @@ namespace Jack


/*! /*!
\brief The base class for MIDI drivers: drivers with MIDI ports. \brief The base class for MIDI drivers: drivers with MIDI ports.

A concrete derived class will have to be defined with a real MIDI driver API,
either callback based one (like CoreMIDI..) ones or blocking ones (like ALSA MIDI).

*/ */


class SERVER_EXPORT JackMidiDriver : public JackDriver class SERVER_EXPORT JackMidiDriver : public JackDriver


Loading…
Cancel
Save