Browse Source

Add jack_flush_adapter API.

git-svn-id: http://subversion.jackaudio.org/jack/jack2/branches/libjacknet@3953 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.9.8
sletz 15 years ago
parent
commit
52993cd859
7 changed files with 42 additions and 9 deletions
  1. +5
    -4
      common/JackAudioAdapterInterface.h
  2. +18
    -1
      common/JackNetAPI.cpp
  3. +3
    -1
      common/JackNetInterface.cpp
  4. +1
    -0
      common/JackResampler.cpp
  5. +3
    -0
      common/jack/net.h
  6. +1
    -0
      common/ringbuffer.c
  7. +11
    -3
      macosx/iphone/main_slave.mm

+ 5
- 4
common/JackAudioAdapterInterface.h View File

@@ -102,7 +102,7 @@ namespace Jack
public:

JackAudioAdapterInterface ( jack_nframes_t buffer_size, jack_nframes_t sample_rate ):
JackAudioAdapterInterface ( jack_nframes_t buffer_size, jack_nframes_t sample_rate, jack_nframes_t ring_buffer_size = DEFAULT_ADAPTATIVE_SIZE):
fCaptureChannels ( 0 ),
fPlaybackChannels ( 0 ),
fHostBufferSize ( buffer_size ),
@@ -112,7 +112,7 @@ namespace Jack
fPIControler(sample_rate / sample_rate, 256),
fCaptureRingBuffer(NULL), fPlaybackRingBuffer(NULL),
fQuality(0),
fRingbufferCurSize(DEFAULT_ADAPTATIVE_SIZE),
fRingbufferCurSize(ring_buffer_size),
fPullAndPushTime(0),
fRunning(false),
fAdaptative(true)
@@ -120,7 +120,8 @@ namespace Jack
JackAudioAdapterInterface ( jack_nframes_t host_buffer_size,
jack_nframes_t host_sample_rate,
jack_nframes_t adapted_buffer_size,
jack_nframes_t adapted_sample_rate ) :
jack_nframes_t adapted_sample_rate,
jack_nframes_t ring_buffer_size = DEFAULT_ADAPTATIVE_SIZE ) :
fCaptureChannels ( 0 ),
fPlaybackChannels ( 0 ),
fHostBufferSize ( host_buffer_size ),
@@ -129,7 +130,7 @@ namespace Jack
fAdaptedSampleRate ( adapted_sample_rate ),
fPIControler(host_sample_rate / host_sample_rate, 256),
fQuality(0),
fRingbufferCurSize(DEFAULT_ADAPTATIVE_SIZE),
fRingbufferCurSize(ring_buffer_size),
fPullAndPushTime(0),
fRunning(false),
fAdaptative(true)


+ 18
- 1
common/JackNetAPI.cpp View File

@@ -111,6 +111,7 @@ extern "C"
jack_nframes_t adapted_buffer_size,
jack_nframes_t adapted_sample_rate);
SERVER_EXPORT int jack_destroy_adapter(jack_adapter_t* adapter);
SERVER_EXPORT void jack_flush_adapter(jack_adapter_t* adapter);

SERVER_EXPORT int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
SERVER_EXPORT int jack_adapter_pull_and_push(jack_adapter_t* adapter, float** input, float** output, unsigned int frames);
@@ -485,7 +486,7 @@ struct JackNetExtSlave : public JackNetSlaveInterface, public JackRunnableInterf
return 0;
}
int Restart()
int Restart()
{
// If shutdown cb is set, then call it
if (fShutdownCallback)
@@ -782,6 +783,16 @@ struct JackNetAdapter : public JackAudioAdapterInterface {
{
Destroy();
}
int Flush()
{
for (int i = 0; i < fCaptureChannels; i++ ) {
fCaptureRingBuffer[i]->Reset(fRingbufferCurSize);
}
for (int i = 0; i < fPlaybackChannels; i++ ) {
fPlaybackRingBuffer[i]->Reset(fRingbufferCurSize);
}
}
};

@@ -894,6 +905,12 @@ SERVER_EXPORT int jack_destroy_adapter(jack_adapter_t* adapter)
return 0;
}

SERVER_EXPORT void jack_flush_adapter(jack_adapter_t* adapter)
{
JackNetAdapter* slave = (JackNetAdapter*)adapter;
slave->Flush();
}

SERVER_EXPORT int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames)
{
JackNetAdapter* slave = (JackNetAdapter*)adapter;


+ 3
- 1
common/JackNetInterface.cpp View File

@@ -436,13 +436,15 @@ namespace Jack
// - this mode will skip the two first cycles, thus it lets time for data to be processed and queued on the socket rx buffer
//the slow mode is the safest mode because it wait twice the bandwidth relative time (send/return + process)
/*
if (fCycleOffset < CYCLE_OFFSET_SLOW) {
return 0;
} else {
rx_bytes = Recv ( rx_head->fPacketSize, 0 );
}
*/
//rx_bytes = Recv ( rx_head->fPacketSize, 0 );
rx_bytes = Recv ( rx_head->fPacketSize, 0 );
if (fCycleOffset != fLastfCycleOffset)
jack_info("Warning : '%s' runs in slow network mode, but data received too late (%d cycle(s) offset)", fParams.fName, fCycleOffset);


+ 1
- 0
common/JackResampler.cpp View File

@@ -39,6 +39,7 @@ JackResampler::~JackResampler()
void JackResampler::Reset(unsigned int new_size)
{
fRingBufferSize = new_size;
jack_ringbuffer_reset(fRingBuffer);
jack_ringbuffer_reset_size(fRingBuffer, sizeof(float) * fRingBufferSize);
jack_ringbuffer_read_advance(fRingBuffer, (sizeof(float) * fRingBufferSize / 2));
}


+ 3
- 0
common/jack/net.h View File

@@ -268,6 +268,9 @@ jack_adapter_t* jack_create_adapter(int input, int output,
*/
int jack_destroy_adapter(jack_adapter_t* adapter);


void jack_flush_adapter(jack_adapter_t* adapter);

/**
* Push input to and pull output from ringbuffer
*


+ 1
- 0
common/ringbuffer.c View File

@@ -126,6 +126,7 @@ jack_ringbuffer_reset (jack_ringbuffer_t * rb)
{
rb->read_ptr = 0;
rb->write_ptr = 0;
memset(rb->buf, 0, rb->size);
}

/* Reset the read and write pointers to zero. This is not thread


+ 11
- 3
macosx/iphone/main_slave.mm View File

@@ -14,13 +14,12 @@
#define NUM_INPUT 0
#define NUM_OUTPUT 2

jack_net_slave_t* net;
jack_adapter_t* adapter;
jack_net_slave_t* net = NULL;
jack_adapter_t* adapter = NULL;

int buffer_size;
int sample_rate;


static int net_process(jack_nframes_t buffer_size,
int audio_input,
float** audio_input_buffer,
@@ -46,6 +45,13 @@ static int net_process(jack_nframes_t buffer_size,
return 0;
}

static void net_shutdown(void *arg)
{
if (adapter)
jack_flush_adapter(adapter);
}


static void SlaveAudioCallback(int frames, float** inputs, float** outputs, void* arg)
{
jack_adapter_push_and_pull(adapter, inputs, outputs, frames);
@@ -80,6 +86,8 @@ int main(int argc, char *argv[]) {
jack_set_net_slave_process_callback(net, net_process, NULL);
jack_set_net_slave_shutdown_callback(net, net_shutdown, NULL);
if (jack_net_slave_activate(net) != 0) {
return -1;
}


Loading…
Cancel
Save