r125: This commit was manufactured by cvs2svn to create tag 'r1_1_7-last'.
[cinelerra_cv/mob.git] / hvirtual / cinelerra / virtualvnode.h
blob2188dbed170ae33d9b10b5cd1e759a06d69f1413
1 #ifndef VIRTUALVNODE_H
2 #define VIRTUALVNODE_H
4 #include "bezierauto.inc"
5 #include "fadeengine.inc"
6 #include "maskengine.inc"
7 #include "overlayframe.inc"
8 #include "plugin.inc"
9 #include "renderengine.inc"
10 #include "vframe.inc"
11 #include "virtualnode.h"
12 #include "vrender.inc"
14 class VirtualVNode : public VirtualNode
16 public:
17 // construct as a module or a plugin
18 VirtualVNode(RenderEngine *renderengine,
19 VirtualConsole *vconsole,
20 Module *real_module,
21 Plugin *real_plugin,
22 Track *track,
23 VirtualNode *parent_module,
24 VFrame *input,
25 VFrame *output,
26 int input_is_master,
27 int output_is_master,
28 int in,
29 int out);
31 ~VirtualVNode();
33 // expansions
34 void new_output_buffer();
35 void new_input_buffer();
36 VirtualNode* create_module(Plugin *real_plugin,
37 Module *real_module,
38 Track *track);
39 VirtualNode* create_plugin(Plugin *real_plugin);
40 void arm_attachmentpoint();
42 int render(VFrame **video_out, int64_t input_position);
45 // Pointers to data, whether drive read buffers or temp buffers
46 VFrame *buffer_in;
47 VFrame *buffer_out;
50 private:
51 int render_as_module(VFrame **video_out, int64_t input_position);
52 void render_as_plugin(int64_t input_position);
54 int render_projector(VFrame *input,
55 VFrame **output,
56 int64_t real_position); // Start of input fragment in project if forward. End of input fragment if reverse.
58 int render_fade(VFrame *input, // start of input fragment
59 VFrame *output, // start of output fragment
60 int64_t input_position, // start of input fragment in project if forward / end of input fragment if reverse
61 Autos *autos);
63 // overlay on the frame with scaling
64 // Alpha values are from 0 to VMAX
65 int transfer_from(VFrame *frame_out,
66 VFrame *frame_in,
67 float in_x1,
68 float in_y1,
69 float in_x2,
70 float in_y2,
71 float out_x1,
72 float out_y1,
73 float out_x2,
74 float out_y2,
75 float alpha,
76 int mode);
78 VFrame* get_module_input();
79 VFrame* get_module_output();
80 OverlayFrame *overlayer;
81 FadeEngine *fader;
82 MaskEngine *masker;
86 #endif