r668: Configure.in and autogen.sh cleanup based on ideas by giskard.
[cinelerra_cv.git] / cinelerra / virtualvnode.h
blobb1c5e01a5ecede56ceabf904e9ab20cfeee62ee8
1 #ifndef VIRTUALVNODE_H
2 #define VIRTUALVNODE_H
4 #include "fadeengine.inc"
5 #include "maskengine.inc"
6 #include "plugin.inc"
7 #include "renderengine.inc"
8 #include "vframe.inc"
9 #include "virtualnode.h"
10 #include "vrender.inc"
12 class VirtualVNode : public VirtualNode
14 public:
15 // construct as a module or a plugin
16 VirtualVNode(RenderEngine *renderengine,
17 VirtualConsole *vconsole,
18 Module *real_module,
19 Plugin *real_plugin,
20 Track *track,
21 VirtualNode *parent_module);
23 ~VirtualVNode();
25 // expansions
26 VirtualNode* create_module(Plugin *real_plugin,
27 Module *real_module,
28 Track *track);
29 VirtualNode* create_plugin(Plugin *real_plugin);
30 void arm_attachmentpoint();
32 // Called by VirtualVConsole::process_buffer to process exit nodes.
33 // start_position - end of frame if reverse. start of frame if forward.
34 // frame_rate - rate start_position is relative to
35 int render(VFrame *output_temp,
36 int64_t start_position,
37 double frame_rate);
39 // Read data from what comes before this node.
40 int read_data(VFrame *output_temp,
41 int64_t start_position,
42 double frame_rate);
44 private:
45 int render_as_module(VFrame **video_out,
46 VFrame *output_temp,
47 int64_t start_position,
48 double frame_rate);
49 void render_as_plugin(VFrame *output_temp,
50 int64_t start_position,
51 double frame_rate);
53 int render_projector(VFrame *input,
54 VFrame **output,
55 int64_t start_position,
56 double frame_rate); // Start of input fragment in project if forward. End of input fragment if reverse.
58 int render_fade(VFrame *output, // start of output fragment
59 int64_t start_position, // start of input fragment in project if forward / end of input fragment if reverse
60 double frame_rate,
61 Autos *autos,
62 int direction);
65 FadeEngine *fader;
66 MaskEngine *masker;
70 #endif