20 #ifndef __JackAudioAdapterInterface__
21 #define __JackAudioAdapterInterface__
23 #include "JackResampler.h"
24 #include "JackFilters.h"
32 #define TABLE_MAX 100000
48 Measure fTable[TABLE_MAX];
51 MeasureTable() :fCount(0)
54 void Write(
int time1,
int time2,
float r1,
float r2,
int pos1,
int pos2);
55 void Save(
unsigned int fHostBufferSize,
unsigned int fHostSampleRate,
unsigned int fAdaptedSampleRate,
unsigned int fAdaptedBufferSize);
75 int fPlaybackChannels;
78 jack_nframes_t fHostBufferSize;
79 jack_nframes_t fHostSampleRate;
82 jack_nframes_t fAdaptedBufferSize;
83 jack_nframes_t fAdaptedSampleRate;
91 unsigned int fQuality;
92 unsigned int fRingbufferCurSize;
93 jack_time_t fPullAndPushTime;
98 void ResetRingBuffers();
99 void AdaptRingBufferSize();
100 void GrowRingBufferSize();
104 JackAudioAdapterInterface(jack_nframes_t buffer_size, jack_nframes_t sample_rate, jack_nframes_t ring_buffer_size = DEFAULT_ADAPTATIVE_SIZE):
106 fPlaybackChannels(0),
107 fHostBufferSize(buffer_size),
108 fHostSampleRate(sample_rate),
109 fAdaptedBufferSize(buffer_size),
110 fAdaptedSampleRate(sample_rate),
111 fPIControler(sample_rate / sample_rate, 256),
112 fCaptureRingBuffer(NULL), fPlaybackRingBuffer(NULL),
114 fRingbufferCurSize(ring_buffer_size),
121 jack_nframes_t host_sample_rate,
122 jack_nframes_t adapted_buffer_size,
123 jack_nframes_t adapted_sample_rate,
124 jack_nframes_t ring_buffer_size = DEFAULT_ADAPTATIVE_SIZE) :
126 fPlaybackChannels(0),
127 fHostBufferSize(host_buffer_size),
128 fHostSampleRate(host_sample_rate),
129 fAdaptedBufferSize(adapted_buffer_size),
130 fAdaptedSampleRate(adapted_sample_rate),
131 fPIControler(host_sample_rate / host_sample_rate, 256),
133 fRingbufferCurSize(ring_buffer_size),
142 virtual void Reset();
144 virtual void Create();
145 virtual void Destroy();
157 virtual int SetHostBufferSize(jack_nframes_t buffer_size)
159 fHostBufferSize = buffer_size;
161 AdaptRingBufferSize();
166 virtual int SetAdaptedBufferSize(jack_nframes_t buffer_size)
168 fAdaptedBufferSize = buffer_size;
170 AdaptRingBufferSize();
175 virtual int SetBufferSize(jack_nframes_t buffer_size)
177 SetHostBufferSize(buffer_size);
178 SetAdaptedBufferSize(buffer_size);
182 virtual int SetHostSampleRate(jack_nframes_t sample_rate)
184 fHostSampleRate = sample_rate;
185 fPIControler.Init(
double(fHostSampleRate) /
double(fAdaptedSampleRate));
189 virtual int SetAdaptedSampleRate(jack_nframes_t sample_rate)
191 fAdaptedSampleRate = sample_rate;
192 fPIControler.Init(
double(fHostSampleRate) /
double(fAdaptedSampleRate));
196 virtual int SetSampleRate(jack_nframes_t sample_rate)
198 SetHostSampleRate(sample_rate);
199 SetAdaptedSampleRate(sample_rate);
203 void SetInputs(
int inputs)
205 jack_log(
"JackAudioAdapterInterface::SetInputs %d", inputs);
206 fCaptureChannels = inputs;
209 void SetOutputs(
int outputs)
211 jack_log(
"JackAudioAdapterInterface::SetOutputs %d", outputs);
212 fPlaybackChannels = outputs;
218 return fCaptureChannels;
224 return fPlaybackChannels;
227 virtual int GetInputLatency(
int port_index) {
return 0; }
228 virtual int GetOutputLatency(
int port_index) {
return 0; }
230 int PushAndPull(jack_default_audio_sample_t** inputBuffer, jack_default_audio_sample_t** outputBuffer,
unsigned int frames);
231 int PullAndPush(jack_default_audio_sample_t** inputBuffer, jack_default_audio_sample_t** outputBuffer,
unsigned int frames);