projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
add olaf de.po, opengl bg clr, asset drag select tweak
[goodguy/history.git]
/
cinelerra-5.1
/
cinelerra
/
virtualvnode.C
diff --git
a/cinelerra-5.1/cinelerra/virtualvnode.C
b/cinelerra-5.1/cinelerra/virtualvnode.C
index 141a2a0c7b461197bf8ed528740538a0986ce681..bd32638c35e5ba5ad4f41fc34c519a9ee7c81c4e 100644
(file)
--- a/
cinelerra-5.1/cinelerra/virtualvnode.C
+++ b/
cinelerra-5.1/cinelerra/virtualvnode.C
@@
-203,7
+203,8
@@
int VirtualVNode::render_as_module(VFrame *video_out,
int64_t start_position_project = (int64_t)(start_position *
edl_rate /
frame_rate);
int64_t start_position_project = (int64_t)(start_position *
edl_rate /
frame_rate);
- if(direction == PLAY_REVERSE) start_position_project--;
+ if(direction == PLAY_REVERSE && start_position_project > 0 )
+ start_position_project--;
// speed curve
// speed curve
@@
-263,12
+264,6
@@
int VirtualVNode::render_as_module(VFrame *video_out,
//printf("VirtualVNode::render_as_module\n");
//output_temp->dump_stacks();
//printf("VirtualVNode::render_as_module\n");
//output_temp->dump_stacks();
- Edit *edit = 0;
- if(renderengine->show_tc)
- renderengine->vrender->insert_timecode(edit,
- start_position,
- output_temp);
-
return 0;
}
return 0;
}
@@
-353,22
+348,26
@@
void VirtualVNode::render_mask(VFrame *output_temp,
return;
}
return;
}
- if(use_opengl)
- {
+ if(use_opengl) {
+ if( !((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->can_mask(
+ start_position_project, keyframe_set) )
+ use_opengl = 0;
+
+ }
+ if(use_opengl) {
((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->do_mask(
((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->do_mask(
-
output_temp, start_position_projec
t,
-
keyframe_set,
keyframe, keyframe);
+
output_temp, start_position_project, keyframe_se
t,
+
keyframe, keyframe);
}
}
- else
- {
+ else {
// Revert to software
masker->do_mask(output_temp, start_position_project,
// Revert to software
masker->do_mask(output_temp, start_position_project,
- keyframe_set, keyframe, keyframe);
+
keyframe_set, keyframe, keyframe);
}
}
}
}
-// Start of input fragment in project if forward.
+// Start of input fragment in project if forward.
// End of input fragment if reverse.
int VirtualVNode::render_projector(VFrame *input, VFrame *output,
int64_t start_position, double frame_rate,
// End of input fragment if reverse.
int VirtualVNode::render_projector(VFrame *input, VFrame *output,
int64_t start_position, double frame_rate,
@@
-377,18
+376,19
@@
int VirtualVNode::render_projector(VFrame *input, VFrame *output,
float in_x1, in_y1, in_x2, in_y2;
float out_x1, out_y1, out_x2, out_y2;
double edl_rate = renderengine->get_edl()->session->frame_rate;
float in_x1, in_y1, in_x2, in_y2;
float out_x1, out_y1, out_x2, out_y2;
double edl_rate = renderengine->get_edl()->session->frame_rate;
- int64_t start_position_project = (int64_t)(start_position *
+ int64_t start_position_project = (int64_t)(start_position *
edl_rate /
frame_rate);
VRender *vrender = ((VirtualVConsole*)vconsole)->vrender;
edl_rate /
frame_rate);
VRender *vrender = ((VirtualVConsole*)vconsole)->vrender;
- if(vconsole->debug_tree)
- printf(" VirtualVNode::render_projector input=%p output=%p cmodel=%d title=%s\n",
+ if(vconsole->debug_tree)
+ printf(" VirtualVNode::render_projector input=%p output=%p cmodel=%d title=%s\n",
input, output, output->get_color_model(), track->title);
if(output)
{
input, output, output->get_color_model(), track->title);
if(output)
{
- ((VTrack*)track)->calculate_output_transfer(start_position_project,
- renderengine->command->get_direction(),
+ int direction = renderengine->command->get_direction();
+ ((VTrack*)track)->calculate_output_transfer(
+ start_position_project, direction,
in_x1, in_y1, in_x2, in_y2,
out_x1, out_y1, out_x2, out_y2);
in_x1, in_y1, in_x2, in_y2,
out_x1, out_y1, out_x2, out_y2);
@@
-397,15
+397,14
@@
int VirtualVNode::render_projector(VFrame *input, VFrame *output,
//for(int j = 0; j < input->get_w() * 3 * 5; j++)
// input->get_rows()[0][j] = 255;
//for(int j = 0; j < input->get_w() * 3 * 5; j++)
// input->get_rows()[0][j] = 255;
-//
- if(out_x2 > out_x1 && out_y2 > out_y1 &&
+//
+ if(out_x2 > out_x1 && out_y2 > out_y1 &&
in_x2 > in_x1 && in_y2 > in_y1)
{
in_x2 > in_x1 && in_y2 > in_y1)
{
- int direction = renderengine->command->get_direction();
- IntAuto *mode_keyframe = 0;
- mode_keyframe =
+ Auto *auto_keyframe = 0;
+ IntAuto *mode_keyframe =
(IntAuto*)track->automation->autos[AUTOMATION_MODE]->get_prev_auto(
(IntAuto*)track->automation->autos[AUTOMATION_MODE]->get_prev_auto(
- start_position_project,
direction, (Auto* &)mode
_keyframe);
+ start_position_project,
PLAY_FORWARD, auto
_keyframe);
int mode = mode_keyframe->value;
int mode = mode_keyframe->value;
@@
-414,31
+413,26
@@
int VirtualVNode::render_projector(VFrame *input, VFrame *output,
// can do dissolves, although a blend equation is still required for 3 component
// colormodels since fractional translation requires blending.
// can do dissolves, although a blend equation is still required for 3 component
// colormodels since fractional translation requires blending.
-// If this is the first playable video track and the mode_keyframe is "src
_over
"
+// If this is the first playable video track and the mode_keyframe is "src"
if(mode == TRANSFER_NORMAL &&
vconsole->current_exit_node == vconsole->total_exit_nodes - 1)
mode = TRANSFER_SRC;
if(use_opengl)
{
if(mode == TRANSFER_NORMAL &&
vconsole->current_exit_node == vconsole->total_exit_nodes - 1)
mode = TRANSFER_SRC;
if(use_opengl)
{
-// Nested EDL's overlay on a PBuffer instead of a screen
-// is_nested < 0 ? flatten alpha channel, last draw before driver render
- int is_nested = renderengine->is_nested ? 1 :
- vconsole->current_exit_node == 0 ? -1 : 0;
((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->overlay(
output, input,
in_x1, in_y1, in_x2, in_y2,
((VDeviceX11*)((VirtualVConsole*)vconsole)->get_vdriver())->overlay(
output, input,
in_x1, in_y1, in_x2, in_y2,
- out_x1, out_y1, out_x2, out_y2,
- alpha, mode,
- renderengine->get_edl(),
- is_nested);
+ out_x1, out_y1, out_x2, out_y2,
+ alpha, mode, renderengine->get_edl(),
+ renderengine->is_nested);
}
else
{
vrender->overlayer->overlay(output, input,
in_x1, in_y1, in_x2, in_y2,
}
else
{
vrender->overlayer->overlay(output, input,
in_x1, in_y1, in_x2, in_y2,
- out_x1, out_y1, out_x2, out_y2,
- alpha, mode,
+ out_x1, out_y1, out_x2, out_y2,
+ alpha, mode,
renderengine->get_edl()->session->interpolation_type);
}
}
renderengine->get_edl()->session->interpolation_type);
}
}