00001 #ifndef VIRTUALVNODE_H
00002 #define VIRTUALVNODE_H
00003
00004 #include "fadeengine.inc"
00005 #include "maskengine.inc"
00006 #include "plugin.inc"
00007 #include "renderengine.inc"
00008 #include "vframe.inc"
00009 #include "virtualnode.h"
00010 #include "vrender.inc"
00011
00012 class VirtualVNode : public VirtualNode
00013 {
00014 public:
00015
00016 VirtualVNode(RenderEngine *renderengine,
00017 VirtualConsole *vconsole,
00018 Module *real_module,
00019 Plugin *real_plugin,
00020 Track *track,
00021 VirtualNode *parent_module);
00022
00023 ~VirtualVNode();
00024
00025
00026 VirtualNode* create_module(Plugin *real_plugin,
00027 Module *real_module,
00028 Track *track);
00029 VirtualNode* create_plugin(Plugin *real_plugin);
00030 void arm_attachmentpoint();
00031
00032
00033
00034
00035
00036 int render(VFrame *output_temp,
00037 int64_t start_position,
00038 double frame_rate,
00039 int use_opengl);
00040
00041
00042 int read_data(VFrame *output_temp,
00043 int64_t start_position,
00044 double frame_rate,
00045 int use_opengl);
00046
00047 private:
00048 int render_as_module(VFrame *video_out,
00049 VFrame *output_temp,
00050 int64_t start_position,
00051 double frame_rate,
00052 int use_opengl);
00053 void render_as_plugin(VFrame *output_temp,
00054 int64_t start_position,
00055 double frame_rate,
00056 int use_opengl);
00057
00058 int render_projector(VFrame *input,
00059 VFrame *output,
00060 int64_t start_position,
00061 double frame_rate);
00062
00063 int render_fade(VFrame *output,
00064 int64_t start_position,
00065 double frame_rate,
00066 Autos *autos,
00067 int direction);
00068
00069 void render_mask(VFrame *output_temp,
00070 int64_t start_position_project,
00071 double frame_rate,
00072 int use_opengl);
00073
00074 FadeEngine *fader;
00075 MaskEngine *masker;
00076 };
00077
00078
00079 #endif