r1009: Move the dependencies to newer package names
[cinelerra_cv/mob.git] / cinelerra / pluginaclient.C
blob1915befe3f4fe6f707cd76a10e6f4f78e2d9d5b1
1 #include "edl.h"
2 #include "edlsession.h"
3 #include "pluginaclient.h"
4 #include "pluginserver.h"
6 #include <string.h>
9 PluginAClient::PluginAClient(PluginServer *server)
10  : PluginClient(server)
12         sample_rate = 0;
13         if(server &&
14                 server->edl &&
15                 server->edl->session) 
16         {
17                 project_sample_rate = server->edl->session->sample_rate;
18                 sample_rate = project_sample_rate;
19         }
20         else
21         {
22                 project_sample_rate = 1;
23                 sample_rate = 1;
24         }
27 PluginAClient::~PluginAClient()
31 int PluginAClient::is_audio()
33         return 1;
37 int PluginAClient::get_render_ptrs()
39         int i, j, double_buffer, fragment_position;
41         for(i = 0; i < total_in_buffers; i++)
42         {
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]);
47         }
49         for(i = 0; i < total_out_buffers; i++)
50         {
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];
54         }
55 //printf("PluginAClient::get_render_ptrs %x %x\n", input_ptr_render[0], output_ptr_render[0]);
56         return 0;
59 int PluginAClient::init_realtime_parameters()
61         project_sample_rate = server->edl->session->sample_rate;
62         return 0;
65 int PluginAClient::process_realtime(int64_t size, 
66         double **input_ptr, 
67         double **output_ptr)
69         return 0;
72 int PluginAClient::process_realtime(int64_t size, 
73         double *input_ptr, 
74         double *output_ptr)
76         return 0;
79 int PluginAClient::process_buffer(int64_t size, 
80         double **buffer,
81         int64_t start_position,
82         int sample_rate)
84         for(int i = 0; i < PluginClient::total_in_buffers; i++)
85                 read_samples(buffer[i], 
86                         i, 
87                         sample_rate, 
88                         source_position, 
89                         size);
90         process_realtime(size, buffer, buffer);
91         return 0;
94 int PluginAClient::process_buffer(int64_t size, 
95         double *buffer,
96         int64_t start_position,
97         int sample_rate)
99         read_samples(buffer, 
100                 0, 
101                 sample_rate, 
102                 source_position, 
103                 size);
104         process_realtime(size, buffer, buffer);
105         return 0;
111 int PluginAClient::plugin_start_loop(int64_t start, 
112         int64_t end, 
113         int64_t buffer_size, 
114         int total_buffers)
116         sample_rate = get_project_samplerate();
117         return PluginClient::plugin_start_loop(start, 
118                 end, 
119                 buffer_size, 
120                 total_buffers);
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() /
135                 sample_rate);
136         return 0;
139 int64_t PluginAClient::edl_to_local(int64_t position)
141         if(position < 0) return position;
142         return (int64_t)(position *
143                 sample_rate /
144                 get_project_samplerate());
148 int PluginAClient::plugin_process_loop(double **buffers, int64_t &write_length)
150         write_length = 0;
152         if(is_multichannel())
153                 return process_loop(buffers, write_length);
154         else
155                 return process_loop(buffers[0], write_length);
158 int PluginAClient::read_samples(double *buffer, 
159         int channel, 
160         int64_t start_position, 
161         int64_t total_samples)
163         return server->read_samples(buffer, 
164                 channel, 
165                 start_position, 
166                 total_samples);
169 int PluginAClient::read_samples(double *buffer, 
170         int64_t start_position, 
171         int64_t total_samples)
173         return server->read_samples(buffer, 
174                 0, 
175                 start_position, 
176                 total_samples);
179 int PluginAClient::read_samples(double *buffer,
180                 int channel,
181                 int sample_rate,
182                 int64_t start_position,
183                 int64_t len)
185         return server->read_samples(buffer,
186                 channel,
187                 sample_rate,
188                 start_position,
189                 len);
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()
210         return sample_rate;