r602: Fix baver's code... don't insert timecode when show_tc is not set
[cinelerra_cv/mob.git] / cinelerra / pluginclient.C
blobb3d0f422b8ff67f3ce418ab6aa60d3a510524d12
1 #include "edl.h"
2 #include "edlsession.h"
3 #include "pluginclient.h"
4 #include "pluginserver.h"
5 #include "preferences.h"
7 #include <string.h>
8 #include <libintl.h>
9 #define _(String) gettext(String)
10 #define gettext_noop(String) String
11 #define N_(String) gettext_noop (String)
13 PluginClient::PluginClient(PluginServer *server)
15         reset();
16         this->server = server;
19 PluginClient::~PluginClient()
23 int PluginClient::reset()
25         interactive = 0;
26         show_initially = 0;
27         wr = rd = 0;
28         master_gui_on = 0;
29         client_gui_on = 0;
30         sample_rate = 0;
31         frame_rate = 0;
32         realtime_priority = 0;
33         gui_string[0] = 0;
34         total_in_buffers = 0;
35         total_out_buffers = 0;
36         source_len = 0;
37         source_position = 0;
38         total_len = 0;
43 // For realtime plugins initialize buffers
44 int PluginClient::plugin_init_realtime(int realtime_priority, 
45         int total_in_buffers,
46         int buffer_size)
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");
61         return 0;
64 int PluginClient::plugin_start_loop(int64_t start, int64_t end, int64_t buffer_size, int total_buffers)
66         this->start = start;
67         this->end = end;
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();
73         start_loop();
74         return 0;
77 int PluginClient::plugin_process_loop()
79         return process_loop();
82 int PluginClient::plugin_stop_loop()
84         return 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();
99         return result;
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()
135         interactive = 1;
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"));
156         return 0;
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;
169         client_gui_on = 0;
170 //      stop_gui();                      // give to plugin
171         return 0;
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);
188         set_string();
191 char* PluginClient::get_gui_string()
193         return gui_string;
197 char* PluginClient::get_path()
199         return server->path;
202 int PluginClient::set_string_client(char *string)
204         strcpy(gui_string, string);
205         set_string();
206         return 0;
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
228         return 0;
231 float PluginClient::get_automation_value(int64_t position)     // Get the automation value for the position in the current fragment
233         int i;
234         for(i = automation.total - 1; i >= 0; i--)
235         {
236                 if(automation.values[i].position <= position)
237                 {
238                         return automation.values[i].intercept + automation.values[i].slope * (position - automation.values[i].position);
239                 }
240         }
241         return 0;
244 int64_t PluginClient::get_source_len()
246         return 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()
261         return total_len;
266 int PluginClient::get_project_smp()
268         return smp;
271 char* PluginClient::get_defaultdir()
273         return BCASTDIR;
277 int PluginClient::send_hide_gui()
279 // Stop the GUI server and delete GUI messages
280         client_gui_on = 0;
281         return 0;
284 int PluginClient::send_configure_change()
286 // handle everything using the gui messages
287         KeyFrame* keyframe = server->get_keyframe();
288         save_data(keyframe);
289         server->sync_parameters();
290         return 0;