2 #include "edlsession.h"
3 #include "pluginaclient.h"
4 #include "pluginserver.h"
9 PluginAClient::PluginAClient(PluginServer *server)
10 : PluginClient(server)
17 project_sample_rate = server->edl->session->sample_rate;
18 sample_rate = project_sample_rate;
22 project_sample_rate = 1;
27 PluginAClient::~PluginAClient()
31 int PluginAClient::is_audio()
37 int PluginAClient::get_render_ptrs()
39 int i, j, double_buffer, fragment_position;
41 for(i = 0; i < total_in_buffers; i++)
43 double_buffer = double_buffer_in_render.values[i];
44 fragment_position = offset_in_render.values[i];
45 input_ptr_render[i] = &input_ptr_master.values[i][double_buffer][fragment_position];
46 //printf("PluginAClient::get_render_ptrs %x\n", input_ptr_master.values[i][double_buffer]);
49 for(i = 0; i < total_out_buffers; i++)
51 double_buffer = double_buffer_out_render.values[i];
52 fragment_position = offset_out_render.values[i];
53 output_ptr_render[i] = &output_ptr_master.values[i][double_buffer][fragment_position];
55 //printf("PluginAClient::get_render_ptrs %x %x\n", input_ptr_render[0], output_ptr_render[0]);
59 int PluginAClient::init_realtime_parameters()
61 project_sample_rate = server->edl->session->sample_rate;
65 int PluginAClient::process_realtime(int64_t size,
72 int PluginAClient::process_realtime(int64_t size,
79 int PluginAClient::process_buffer(int64_t size,
81 int64_t start_position,
84 for(int i = 0; i < PluginClient::total_in_buffers; i++)
85 read_samples(buffer[i],
90 process_realtime(size, buffer, buffer);
94 int PluginAClient::process_buffer(int64_t size,
96 int64_t start_position,
104 process_realtime(size, buffer, buffer);
111 int PluginAClient::plugin_start_loop(int64_t start,
116 sample_rate = get_project_samplerate();
117 return PluginClient::plugin_start_loop(start,
123 int PluginAClient::plugin_get_parameters()
125 sample_rate = get_project_samplerate();
126 return PluginClient::plugin_get_parameters();
130 int64_t PluginAClient::local_to_edl(int64_t position)
132 if(position < 0) return position;
133 return (int64_t)(position *
134 get_project_samplerate() /
139 int64_t PluginAClient::edl_to_local(int64_t position)
141 if(position < 0) return position;
142 return (int64_t)(position *
144 get_project_samplerate());
148 int PluginAClient::plugin_process_loop(double **buffers, int64_t &write_length)
152 if(is_multichannel())
153 return process_loop(buffers, write_length);
155 return process_loop(buffers[0], write_length);
158 int PluginAClient::read_samples(double *buffer,
160 int64_t start_position,
161 int64_t total_samples)
163 return server->read_samples(buffer,
169 int PluginAClient::read_samples(double *buffer,
170 int64_t start_position,
171 int64_t total_samples)
173 return server->read_samples(buffer,
179 int PluginAClient::read_samples(double *buffer,
182 int64_t start_position,
185 return server->read_samples(buffer,
193 void PluginAClient::send_render_gui(void *data, int size)
195 server->send_render_gui(data, size);
198 void PluginAClient::plugin_render_gui(void *data, int size)
200 render_gui(data, size);
203 int PluginAClient::get_project_samplerate()
205 return project_sample_rate;
208 int PluginAClient::get_samplerate()