no longer need ffmpeg patch0 which was for Termux
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / pluginlv2client.h
1 #ifndef __PLUGINLV2CLIENT_H__
2 #define __PLUGINLV2CLIENT_H__
3
4 #include "condition.inc"
5 #include "mutex.h"
6 #include "pluginaclient.h"
7 #include "plugin.inc"
8 #include "pluginlv2.h"
9 #include "pluginlv2config.h"
10 #include "pluginlv2client.inc"
11 #include "pluginlv2gui.h"
12 #include "pluginlv2ui.inc"
13 #include "samples.inc"
14
15 class PluginLV2UIs : public ArrayList<PluginLV2ParentUI *>, public Mutex
16 {
17 public:
18         PluginLV2UIs();
19         ~PluginLV2UIs();
20
21         void del_uis();
22         PluginLV2ParentUI *del_ui(PluginLV2Client *client);
23         PluginLV2ParentUI *del_ui(PluginLV2ClientWindow *gui);
24         PluginLV2ParentUI *add_ui(PluginLV2ParentUI *ui, PluginLV2Client *client);
25         PluginLV2ParentUI *search_ui(int plugin_id);
26         PluginLV2ParentUI *find_ui(int plugin_id);
27         PluginLV2ParentUI *get_ui(PluginLV2Client *client);
28
29 };
30
31 class PluginLV2ParentUI : public ForkParent
32 {
33 public:
34         PluginLV2ParentUI(int plugin_id);
35         ~PluginLV2ParentUI();
36         ForkChild* new_fork();
37         void start_parent(PluginLV2Client *client);
38         int handle_parent();
39
40         Condition *output_bfr;
41         PluginLV2Client *client;
42         PluginLV2ClientWindow *gui;
43
44         int plugin_id;
45         int hidden;
46         int show();
47         int hide();
48
49         static PluginLV2UIs plugin_lv2;
50 };
51
52 class PluginLV2BlackList : public ArrayList<const char *>
53 {
54 public:
55         PluginLV2BlackList(const char *path);
56         ~PluginLV2BlackList();
57
58         int is_badboy(const char *uri);
59 };
60
61 class PluginLV2Client : public PluginAClient, public PluginLV2
62 {
63 public:
64         PluginLV2Client(PluginServer *server);
65         ~PluginLV2Client();
66
67         int process_realtime(int64_t size,
68                 Samples **input_ptr, Samples **output_ptr, int chs);
69         int process_realtime(int64_t size,
70                 Samples *input_ptr, Samples *output_ptr);
71         int process_realtime(int64_t size,
72                 Samples **input_ptr, Samples **output_ptr);
73 // Update output pointers as well
74         int is_realtime();
75         int is_multichannel();
76         int is_synthesis();
77         int uses_gui();
78         char* to_string(char *string, const char *input);
79         void save_data(KeyFrame *keyframe);
80         void read_data(KeyFrame *keyframe);
81         void load_buffer(int samples, Samples **input, int ich);
82         int unload_buffer(int samples, Samples **output, int och);
83         void process_buffer(int size);
84         void update_gui();
85         void update_lv2(int token);
86         int init_lv2();
87         PluginLV2ParentUI *find_ui();
88         PluginLV2ParentUI *get_ui();
89
90         PLUGIN_CLASS_MEMBERS(PluginLV2ClientConfig)
91         char title[BCSTRLEN];
92 };
93
94 #endif