track, parent_node)
{
//VRender *vrender = ((VirtualVConsole*)vconsole)->vrender;
- fader = new FadeEngine(renderengine->preferences->processors);
+ //fader = new FadeEngine(renderengine->preferences->processors);
masker = new MaskEngine(renderengine->preferences->processors);
alpha = 1;
}
VirtualVNode::~VirtualVNode()
{
- delete fader;
+ //delete fader;
delete masker;
}
MaskAuto *keyframe = (MaskAuto*)keyframe_set->
get_prev_auto(start_position_project, PLAY_FORWARD, current);
if( keyframe->apply_before_plugins ) return;
-
- int total_points = 0;
- for(int i = 0; i < keyframe->masks.total; i++)
- {
- SubMask *mask = keyframe->get_submask(i);
- int submask_points = mask->points.total;
- if(submask_points > 1) total_points += submask_points;
- }
-
-//printf("VirtualVNode::render_mask 1 %d %d\n", total_points, keyframe->value);
-// Ignore certain masks
- if(total_points <= 2 ||
- (keyframe->value == 0 && keyframe->mode == MASK_SUBTRACT_ALPHA))
- {
- return;
- }
-
+ if( !keyframe->has_active_mask() ) return;
+/*
// Fake certain masks
if(keyframe->value == 0 && keyframe->mode == MASK_MULTIPLY_ALPHA)
{
output_temp->clear_frame();
return;
}
-
- if(use_opengl) {
- if( !((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->can_mask(
- start_position_project, keyframe_set) )
+*/
+ VDeviceX11 *x11_device = 0;
+ if( use_opengl ) {
+ x11_device = (VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver();
+ if( !x11_device->can_mask(start_position_project, keyframe_set) ) {
+ if( output_temp->get_opengl_state() != VFrame::RAM ) {
+ int w = output_temp->get_w(), h = output_temp->get_h();
+ x11_device->do_camera(output_temp, output_temp,
+ 0,0,w,h, 0,0,w,h); // copy to ram
+ }
use_opengl = 0;
-
+ }
}
- if(use_opengl) {
- ((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->do_mask(
- output_temp, start_position_project, keyframe_set,
+ if( use_opengl )
+ x11_device->do_mask(output_temp, start_position_project, keyframe_set,
keyframe, keyframe);
- }
else {
// Revert to software
masker->do_mask(output_temp, start_position_project,