r499: This commit was manufactured by cvs2svn to create tag 'r1_2_1-last'.
[cinelerra_cv/mob.git] / hvirtual / cinelerra / virtualvnode.h
blobadd3ed7de71aa8a18c3a820047448484302e91bf
1 #ifndef VIRTUALVNODE_H
2 #define VIRTUALVNODE_H
4 #include "bezierauto.inc"
5 #include "fadeengine.inc"
6 #include "maskengine.inc"
7 #include "plugin.inc"
8 #include "renderengine.inc"
9 #include "vframe.inc"
10 #include "virtualnode.h"
11 #include "vrender.inc"
13 class VirtualVNode : public VirtualNode
15 public:
16 // construct as a module or a plugin
17 VirtualVNode(RenderEngine *renderengine,
18 VirtualConsole *vconsole,
19 Module *real_module,
20 Plugin *real_plugin,
21 Track *track,
22 VirtualNode *parent_module);
24 ~VirtualVNode();
26 // expansions
27 VirtualNode* create_module(Plugin *real_plugin,
28 Module *real_module,
29 Track *track);
30 VirtualNode* create_plugin(Plugin *real_plugin);
31 void arm_attachmentpoint();
33 // Called by VirtualVConsole::process_buffer to process exit nodes.
34 // start_position - end of frame if reverse. start of frame if forward.
35 // frame_rate - rate start_position is relative to
36 int render(VFrame *output_temp,
37 int64_t start_position,
38 double frame_rate);
40 // Read data from what comes before this node.
41 int read_data(VFrame *output_temp,
42 int64_t start_position,
43 double frame_rate);
45 private:
46 int render_as_module(VFrame **video_out,
47 VFrame *output_temp,
48 int64_t start_position,
49 double frame_rate);
50 void render_as_plugin(VFrame *output_temp,
51 int64_t start_position,
52 double frame_rate);
54 int render_projector(VFrame *input,
55 VFrame **output,
56 int64_t start_position,
57 double frame_rate); // Start of input fragment in project if forward. End of input fragment if reverse.
59 int render_fade(VFrame *output, // start of output fragment
60 int64_t start_position, // start of input fragment in project if forward / end of input fragment if reverse
61 double frame_rate,
62 Autos *autos,
63 int direction);
65 FadeEngine *fader;
66 MaskEngine *masker;
70 #endif