#include "vedit.h"
#include "vframe.h"
#include "videodevice.h"
+#include "virtualvconsole.h"
#include "vmodule.h"
#include "vrender.h"
#include "vplugin.h"
nested_command->get_edl()->copy_all(nested_edl);
nested_command->change_type = CHANGE_ALL;
nested_command->realtime = renderengine->command->realtime;
- nested_renderengine = new RenderEngine(0,
- get_preferences(),
- 0,
- renderengine ? renderengine->channeldb : 0,
- 1);
+ nested_renderengine = new RenderEngine(0, get_preferences(), 0, 1);
nested_renderengine->set_vcache(get_cache());
nested_renderengine->arm_command(nested_command);
}
// current_edit->asset->interlace_fixmethod);
// Determine the interlacing method to use.
- int interlace_fixmethod = ilaceautofixmethod2(get_edl()->session->interlace_mode,
+ int interlace_fixmethod = !current_edit->asset ? ILACE_FIXMETHOD_NONE :
+ ilaceautofixmethod2(get_edl()->session->interlace_mode,
current_edit->asset->interlace_autofixoption,
current_edit->asset->interlace_mode,
current_edit->asset->interlace_fixmethod);
// Compensate for the said interlacing...
switch (interlace_fixmethod) {
- case BC_ILACE_FIXMETHOD_NONE:
+ case ILACE_FIXMETHOD_NONE:
break;
- case BC_ILACE_FIXMETHOD_UPONE:
+ case ILACE_FIXMETHOD_UPONE:
out_y--;
break;
- case BC_ILACE_FIXMETHOD_DOWNONE:
+ case ILACE_FIXMETHOD_DOWNONE:
out_y++;
break;
default:
//printf("VModule::render %d %p %ld %d\n", __LINE__, current_edit, start_position_project, direction);
if(debug_render)
- printf(" VModule::render %d %d %ld %s transition=%p opengl=%d current_edit=%p output=%p\n",
+ printf(" VModule::render %d %d %jd %s transition=%p opengl=%d current_edit=%p output=%p\n",
__LINE__,
use_nudge,
start_position_project,
use_opengl);
}
- int64_t mask_position = !renderengine ? start_position :
- renderengine->vrender->current_position;
Auto *current = 0;
MaskAutos *keyframe_set =
(MaskAutos*)track->automation->autos[AUTOMATION_MASK];
- MaskAuto *keyframe =
+ int64_t mask_position = !renderengine ? start_position :
+ renderengine->vrender->current_position;
+ MaskAuto *keyframe =
(MaskAuto*)keyframe_set->get_prev_auto(mask_position, direction, current);
+
if( keyframe->apply_before_plugins ) {
- if( !masker ) {
- int cpus = renderengine ?
- renderengine->preferences->processors :
- plugin_array->mwindow->preferences->processors;
- masker = new MaskEngine(cpus);
+ VDeviceX11 *x11_device = 0;
+ if(use_opengl && renderengine && renderengine->video) {
+ x11_device = (VDeviceX11*)renderengine->video->get_output_base();
+ if( !x11_device->can_mask(mask_position, keyframe_set) )
+ use_opengl = 0;
+ }
+ if( use_opengl && x11_device ) {
+ x11_device->do_mask(output, mask_position, keyframe_set,
+ keyframe, keyframe);
+ }
+ else {
+ if( !masker ) {
+ int cpus = renderengine ?
+ renderengine->preferences->processors :
+ plugin_array->mwindow->preferences->processors;
+ masker = new MaskEngine(cpus);
+ }
+ masker->do_mask(output, mask_position, keyframe_set, keyframe, keyframe);
}
- masker->do_mask(output, mask_position, keyframe_set, keyframe, keyframe);
}
return result;