2 #include "edlsession.h"
3 #include "pluginclient.h"
4 #include "pluginserver.h"
5 #include "preferences.h"
9 #define _(String) gettext(String)
10 #define gettext_noop(String) String
11 #define N_(String) gettext_noop (String)
13 PluginClient::PluginClient(PluginServer *server)
16 this->server = server;
19 PluginClient::~PluginClient()
23 int PluginClient::reset()
32 realtime_priority = 0;
35 total_out_buffers = 0;
43 // For realtime plugins initialize buffers
44 int PluginClient::plugin_init_realtime(int realtime_priority,
48 //printf("PluginClient::plugin_init_realtime 1\n");
49 // Get parameters for all
50 master_gui_on = get_gui_status();
52 //printf("PluginClient::plugin_init_realtime 1\n");
53 // get parameters depending on video or audio
54 init_realtime_parameters();
55 //printf("PluginClient::plugin_init_realtime 1\n");
56 smp = server->preferences->processors - 1;
57 this->realtime_priority = realtime_priority;
58 this->total_in_buffers = this->total_out_buffers = total_in_buffers;
59 this->out_buffer_size = this->in_buffer_size = buffer_size;
60 //printf("PluginClient::plugin_init_realtime 1\n");
64 int PluginClient::plugin_start_loop(int64_t start, int64_t end, int64_t buffer_size, int total_buffers)
68 this->in_buffer_size = this->out_buffer_size = buffer_size;
69 //printf("PluginClient::plugin_start_loop 1 %d\n", in_buffer_size);
70 this->total_in_buffers = this->total_out_buffers = total_buffers;
71 sample_rate = get_project_samplerate();
72 frame_rate = get_project_framerate();
77 int PluginClient::plugin_process_loop()
79 return process_loop();
82 int PluginClient::plugin_stop_loop()
87 MainProgressBar* PluginClient::start_progress(char *string, int64_t length)
89 return server->start_progress(string, length);
94 int PluginClient::plugin_get_parameters()
96 sample_rate = get_project_samplerate();
97 frame_rate = get_project_framerate();
98 int result = get_parameters();
102 // ========================= main loop
104 int PluginClient::is_multichannel() { return 0; }
105 int PluginClient::is_synthesis() { return 0; }
106 int PluginClient::is_realtime() { return 0; }
107 int PluginClient::is_fileio() { return 0; }
108 int PluginClient::delete_buffer_ptrs() { return 0; }
109 char* PluginClient::plugin_title() { return _("Untitled"); }
110 VFrame* PluginClient::new_picon() { return 0; }
111 Theme* PluginClient::new_theme() { return 0; }
112 int PluginClient::is_audio() { return 0; }
113 int PluginClient::is_video() { return 0; }
114 int PluginClient::is_theme() { return 0; }
115 int PluginClient::uses_gui() { return 1; }
116 int PluginClient::is_transition() { return 0; }
117 int PluginClient::load_defaults() { return 0; }
118 int PluginClient::save_defaults() { return 0; }
119 //int PluginClient::start_gui() { return 0; }
120 //int PluginClient::stop_gui() { return 0; }
121 int PluginClient::show_gui() { return 0; }
122 //int PluginClient::hide_gui() { return 0; }
123 int PluginClient::set_string() { return 0; }
124 int PluginClient::get_parameters() { return 0; }
125 int PluginClient::get_samplerate() { return get_project_samplerate(); }
126 double PluginClient::get_framerate() { return get_project_framerate(); }
127 int PluginClient::init_realtime_parameters() { return 0; }
128 int PluginClient::delete_nonrealtime_parameters() { return 0; }
129 int PluginClient::start_loop() { return 0; };
130 int PluginClient::process_loop() { return 0; };
131 int PluginClient::stop_loop() { return 0; };
133 void PluginClient::set_interactive()
138 int64_t PluginClient::get_in_buffers(int64_t recommended_size)
140 return recommended_size;
143 int64_t PluginClient::get_out_buffers(int64_t recommended_size)
145 return recommended_size;
148 int PluginClient::get_gui_status()
150 return server->get_gui_status();
153 int PluginClient::start_plugin()
155 printf(_("No processing defined for this plugin.\n"));
159 // close event from client side
160 void PluginClient::client_side_close()
162 // Last command executed
163 server->client_side_close();
166 int PluginClient::stop_gui_client()
168 if(!client_gui_on) return 0;
170 // stop_gui(); // give to plugin
174 int PluginClient::get_project_samplerate()
176 return server->get_project_samplerate();
179 double PluginClient::get_project_framerate()
181 return server->get_project_framerate();
185 void PluginClient::update_display_title()
187 server->generate_display_title(gui_string);
191 char* PluginClient::get_gui_string()
197 char* PluginClient::get_path()
202 int PluginClient::set_string_client(char *string)
204 strcpy(gui_string, string);
210 KeyFrame* PluginClient::get_prev_keyframe(int64_t position)
212 return server->get_prev_keyframe(position);
215 KeyFrame* PluginClient::get_next_keyframe(int64_t position)
217 return server->get_next_keyframe(position);
220 int PluginClient::get_interpolation_type()
222 return server->get_interpolation_type();
226 int PluginClient::automation_used() // If automation is used
231 float PluginClient::get_automation_value(int64_t position) // Get the automation value for the position in the current fragment
234 for(i = automation.total - 1; i >= 0; i--)
236 if(automation.values[i].position <= position)
238 return automation.values[i].intercept + automation.values[i].slope * (position - automation.values[i].position);
244 int64_t PluginClient::get_source_len()
249 int64_t PluginClient::get_source_position()
251 return source_position;
254 int64_t PluginClient::get_source_start()
256 return server->get_source_start();
259 int64_t PluginClient::get_total_len()
266 int PluginClient::get_project_smp()
271 char* PluginClient::get_defaultdir()
277 int PluginClient::send_hide_gui()
279 // Stop the GUI server and delete GUI messages
284 int PluginClient::send_configure_change()
286 // handle everything using the gui messages
287 KeyFrame* keyframe = server->get_keyframe();
289 server->sync_parameters();