Changeset 3953

Show
Ignore:
Timestamp:
03/10/10 12:04:47 (5 months ago)
Author:
sletz
Message:

Add jack_flush_adapter API.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • jack2/branches/libjacknet/common/jack/net.h

    r3952 r3953  
    269269int jack_destroy_adapter(jack_adapter_t* adapter); 
    270270 
     271 
     272void jack_flush_adapter(jack_adapter_t* adapter); 
     273 
    271274/** 
    272275 * Push input to and pull output from ringbuffer 
  • jack2/branches/libjacknet/common/JackAudioAdapterInterface.h

    r3924 r3953  
    103103    public: 
    104104 
    105          JackAudioAdapterInterface ( jack_nframes_t buffer_size, jack_nframes_t sample_rate ): 
     105         JackAudioAdapterInterface ( jack_nframes_t buffer_size, jack_nframes_t sample_rate, jack_nframes_t ring_buffer_size = DEFAULT_ADAPTATIVE_SIZE): 
    106106            fCaptureChannels ( 0 ), 
    107107            fPlaybackChannels ( 0 ), 
     
    113113            fCaptureRingBuffer(NULL), fPlaybackRingBuffer(NULL), 
    114114            fQuality(0), 
    115             fRingbufferCurSize(DEFAULT_ADAPTATIVE_SIZE), 
     115            fRingbufferCurSize(ring_buffer_size), 
    116116            fPullAndPushTime(0), 
    117117            fRunning(false), 
     
    121121                                    jack_nframes_t host_sample_rate, 
    122122                                    jack_nframes_t adapted_buffer_size, 
    123                                     jack_nframes_t adapted_sample_rate ) : 
     123                                    jack_nframes_t adapted_sample_rate, 
     124                                    jack_nframes_t ring_buffer_size = DEFAULT_ADAPTATIVE_SIZE ) : 
    124125                fCaptureChannels ( 0 ), 
    125126                fPlaybackChannels ( 0 ), 
     
    130131                fPIControler(host_sample_rate / host_sample_rate, 256), 
    131132                fQuality(0), 
    132                 fRingbufferCurSize(DEFAULT_ADAPTATIVE_SIZE), 
     133                fRingbufferCurSize(ring_buffer_size), 
    133134                fPullAndPushTime(0), 
    134135                fRunning(false), 
  • jack2/branches/libjacknet/common/JackNetAPI.cpp

    r3952 r3953  
    112112                                                    jack_nframes_t adapted_sample_rate); 
    113113    SERVER_EXPORT int jack_destroy_adapter(jack_adapter_t* adapter); 
     114    SERVER_EXPORT void jack_flush_adapter(jack_adapter_t* adapter); 
    114115 
    115116    SERVER_EXPORT int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames); 
     
    486487    } 
    487488     
    488     int Restart() 
     489    int Restart() 
    489490    { 
    490491        // If shutdown cb is set, then call it 
     
    783784        Destroy(); 
    784785    } 
     786     
     787    int Flush() 
     788    { 
     789        for (int i = 0; i < fCaptureChannels; i++ ) { 
     790            fCaptureRingBuffer[i]->Reset(fRingbufferCurSize); 
     791        } 
     792        for (int i = 0; i < fPlaybackChannels; i++ ) { 
     793            fPlaybackRingBuffer[i]->Reset(fRingbufferCurSize); 
     794        } 
     795    } 
    785796      
    786797}; 
     
    895906} 
    896907 
     908SERVER_EXPORT void jack_flush_adapter(jack_adapter_t* adapter) 
     909{ 
     910    JackNetAdapter* slave = (JackNetAdapter*)adapter; 
     911    slave->Flush(); 
     912} 
     913 
    897914SERVER_EXPORT int jack_adapter_push_and_pull(jack_adapter_t* adapter, float** input, float** output, unsigned int frames) 
    898915{ 
  • jack2/branches/libjacknet/common/JackNetInterface.cpp

    r3952 r3953  
    437437                //the slow mode is the safest mode because it wait twice the bandwidth relative time (send/return + process) 
    438438                 
     439                /* 
    439440                if (fCycleOffset < CYCLE_OFFSET_SLOW) { 
    440441                    return 0; 
     
    442443                    rx_bytes = Recv ( rx_head->fPacketSize, 0 ); 
    443444                } 
    444                  
    445                 //rx_bytes = Recv ( rx_head->fPacketSize, 0 ); 
     445                */ 
     446                 
     447                rx_bytes = Recv ( rx_head->fPacketSize, 0 ); 
    446448                 
    447449                if (fCycleOffset != fLastfCycleOffset) 
  • jack2/branches/libjacknet/common/JackResampler.cpp

    r3921 r3953  
    4040{ 
    4141    fRingBufferSize = new_size; 
     42    jack_ringbuffer_reset(fRingBuffer); 
    4243    jack_ringbuffer_reset_size(fRingBuffer, sizeof(float) * fRingBufferSize); 
    4344    jack_ringbuffer_read_advance(fRingBuffer, (sizeof(float) * fRingBufferSize / 2)); 
  • jack2/branches/libjacknet/common/ringbuffer.c

    r3900 r3953  
    127127        rb->read_ptr = 0; 
    128128        rb->write_ptr = 0; 
     129    memset(rb->buf, 0, rb->size); 
    129130} 
    130131 
  • jack2/branches/libjacknet/macosx/iphone/main_slave.mm

    r3952 r3953  
    1515#define NUM_OUTPUT 2 
    1616 
    17 jack_net_slave_t* net
    18 jack_adapter_t* adapter
     17jack_net_slave_t* net = NULL
     18jack_adapter_t* adapter = NULL
    1919 
    2020int buffer_size; 
    2121int sample_rate; 
    22  
    2322 
    2423static int net_process(jack_nframes_t buffer_size, 
     
    4645    return 0; 
    4746} 
     47 
     48static void net_shutdown(void *arg) 
     49{ 
     50    if (adapter) 
     51        jack_flush_adapter(adapter); 
     52} 
     53 
    4854 
    4955static void SlaveAudioCallback(int frames, float** inputs, float** outputs, void* arg) 
     
    8187   
    8288    jack_set_net_slave_process_callback(net, net_process, NULL); 
     89    jack_set_net_slave_shutdown_callback(net, net_shutdown, NULL); 
     90     
    8391    if (jack_net_slave_activate(net) != 0) { 
    8492        return -1;