1 #ifndef PLUGINVCLIENT_H
2 #define PLUGINVCLIENT_H
5 #include "maxbuffers.h"
6 #include "pluginclient.h"
10 class PluginVClient
: public PluginClient
13 PluginVClient(PluginServer
*server
);
14 virtual ~PluginVClient();
16 int get_render_ptrs();
17 int init_realtime_parameters();
18 int delete_nonrealtime_parameters();
20 void plugin_process_realtime(VFrame
**input
,
22 int64_t current_position
,
24 virtual int process_realtime(VFrame
**input
,
25 VFrame
**output
) { return 0; };
26 virtual int process_realtime(VFrame
*input
,
27 VFrame
*output
) { return 0; };
28 // Called by plugin server to render the GUI with rendered data.
29 void plugin_render_gui(void *data
);
30 virtual void render_gui(void *data
) { };
31 // Called by client to cause GUI to be rendered with data.
32 void send_render_gui(void *data
);
33 virtual int process_loop(VFrame
**buffers
) { return 1; };
34 virtual int process_loop(VFrame
*buffer
) { return 1; };
35 int plugin_process_loop(VFrame
**buffers
, int64_t &write_length
);
36 int read_frame(VFrame
*buffer
, int channel
, int64_t start_position
);
37 int read_frame(VFrame
*buffer
, int64_t start_position
);
41 // Non realtime buffer pointers
42 // Channels of arrays of frames that the client uses.
43 VFrame
***video_in
, ***video_out
;
45 // point to the start of the buffers
46 ArrayList
<VFrame
***> input_ptr_master
;
47 ArrayList
<VFrame
***> output_ptr_master
;
48 // Pointers to the regions for a single render.
49 // Arrays are channels of arrays of frames.
50 VFrame
***input_ptr_render
;
51 VFrame
***output_ptr_render
;
53 double project_frame_rate
;
54 int project_color_model
;
55 int use_float
; // Whether user wants floating point calculations.
56 int use_alpha
; // Whether user wants alpha calculations.
57 int use_interpolation
; // Whether user wants pixel interpolation.
58 float aspect_w
, aspect_h
; // Aspect ratio