projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
detect missing transitions, dont draw transitions if show off, obey audio transition...
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
cinelerra
/
vrender.C
diff --git
a/cinelerra-5.1/cinelerra/vrender.C
b/cinelerra-5.1/cinelerra/vrender.C
index 770dfb8877e168e7f92be2e7123ce4f653801e06..be3d0c3beee90073fffcfb9bc4d4e5cf0bcad2d0 100644
(file)
--- a/
cinelerra-5.1/cinelerra/vrender.C
+++ b/
cinelerra-5.1/cinelerra/vrender.C
@@
-22,6
+22,7
@@
#include "asset.h"
#include "bcsignals.h"
#include "cache.h"
#include "asset.h"
#include "bcsignals.h"
#include "cache.h"
+#include "canvas.h"
#include "clip.h"
#include "condition.h"
#include "datatype.h"
#include "clip.h"
#include "condition.h"
#include "datatype.h"
@@
-74,9
+75,10
@@
VRender::VRender(RenderEngine *renderengine)
VRender::~VRender()
{
VRender::~VRender()
{
- if(input_temp) delete input_temp;
- if(transition_temp) delete transition_temp;
- if(overlayer) delete overlayer;
+ renderengine->wait_done();
+ delete overlayer;
+ delete input_temp;
+ delete transition_temp;
}
}
@@
-97,10
+99,9
@@
Module* VRender::new_module(Track *track)
int VRender::flash_output()
{
int VRender::flash_output()
{
- if(video_out)
- return renderengine->video->write_buffer(video_out, renderengine->get_edl());
- else
- return 0;
+ if( !video_out ) return 0;
+ renderengine->update_scope(video_out);
+ return renderengine->video->write_buffer(video_out, renderengine->get_edl());
}
int VRender::process_buffer(VFrame *video_out,
}
int VRender::process_buffer(VFrame *video_out,
@@
-132,7
+133,8
@@
int VRender::process_buffer(int64_t input_position,
int use_vconsole = 1;
int use_brender = 0;
int result = 0;
int use_vconsole = 1;
int use_brender = 0;
int result = 0;
- int use_cache = renderengine->command->single_frame();
+ int use_cache = renderengine->command->single_frame() ? 1 :
+ renderengine->command->get_direction() == PLAY_REVERSE ? -1 : 0;
// int use_asynchronous =
// renderengine->command->realtime &&
// renderengine->get_edl()->session->video_every_frame &&
// int use_asynchronous =
// renderengine->command->realtime &&
// renderengine->get_edl()->session->video_every_frame &&
@@
-287,7
+289,7
@@
int VRender::get_colormodel(VEdit *playable_edit, int use_vconsole, int use_bren
void VRender::run()
{
void VRender::run()
{
- int reconfigure;
+ int reconfigure
= 1
;
const int debug = 0;
// Want to know how many samples rendering each frame takes.
const int debug = 0;
// Want to know how many samples rendering each frame takes.
@@
-321,13
+323,13
@@
void VRender::run()
// Want the condition before, since only 1 frame is rendered
// and the number of frames skipped after this frame varies.
current_input_length = 1;
// Want the condition before, since only 1 frame is rendered
// and the number of frames skipped after this frame varies.
current_input_length = 1;
-
- reconfigure = vconsole->test_reconfigure(current_position,
- current_input_length);
-
-
+ if( !reconfigure ) reconfigure =
+ vconsole->test_reconfigure(current_position, current_input_length);
if(debug) printf("VRender::run %d\n", __LINE__);
if(debug) printf("VRender::run %d\n", __LINE__);
- if(reconfigure) restart_playback();
+ if( reconfigure ) {
+ restart_playback();
+ reconfigure = 0;
+ }
if(debug) printf("VRender::run %d\n", __LINE__);
process_buffer(current_position, use_opengl);
if(debug) printf("VRender::run %d\n", __LINE__);
process_buffer(current_position, use_opengl);
@@
-481,8
+483,9
@@
void VRender::run()
framerate_timer.update();
}
if(debug) printf("VRender::run %d done=%d\n", __LINE__, done);
framerate_timer.update();
}
if(debug) printf("VRender::run %d done=%d\n", __LINE__, done);
- if( !interrupt )
- interrupt = renderengine->video->interrupt;
+ if( !interrupt ) interrupt = renderengine->interrupted;
+ if( !interrupt ) interrupt = renderengine->video->interrupt;
+ if( !interrupt ) interrupt = vconsole->interrupt;
}
}