#include "filexml.h"
#include "floatautos.h"
#include "language.h"
+#include "mainerror.h"
#include "module.h"
#include "patch.h"
#include "plugin.h"
#include "theme.h"
#include "transition.h"
#include "transportque.h"
+#include "tracks.h"
#include <string.h>
edit_sample_rate = nested_edl->session->sample_rate;
int command = direction == PLAY_REVERSE ?
NORMAL_REWIND : NORMAL_FWD;
- if( !nested_command ) {
- nested_command = new TransportCommand;
- nested_command->command = command;
- nested_command->get_edl()->copy_all(nested_edl);
- nested_command->change_type = CHANGE_ALL;
- nested_command->realtime = renderengine->command->realtime;
- }
+ if( !nested_command )
+ nested_command = new TransportCommand(get_preferences());
+ nested_command->command = command;
+ nested_command->get_edl()->copy_all(nested_edl);
+ nested_command->change_type = CHANGE_ALL;
+ nested_command->realtime = renderengine->command->realtime;
if( !nested_renderengine ) {
nested_renderengine = new RenderEngine(0, get_preferences(), 0, 1);
nested_renderengine->set_acache(get_cache());
nested_renderengine->command->command = command;
result = 0;
}
+ if( edit_sample_rate <= 0 )
+ result = 1;
if( !result ) {
// speed_buffer is (have_speed ? speed_temp : buffer)
// Clamp to end of transition
int64_t transition_len = 0;
-
- if(transition &&
- previous_edit)
- {
- transition_len = transition->length *
- sample_rate /
- edl_rate;
+ Plugin *transition = get_edl()->tracks->plugin_exists(transition_id);
+ if( transition && transition->on && previous_edit ) {
+ transition_len = transition->length * sample_rate / edl_rate;
if(direction == PLAY_FORWARD &&
start_position < edit_startproject + transition_len &&
start_position + fragment_len > edit_startproject + transition_len)
// Read transition into temp and render
- if(transition && previous_edit)
+ if(transition && transition->on && previous_edit)
{
int64_t previous_startproject = previous_edit->startproject *
sample_rate /
{
current_position = start_position - edit_startproject;
}
-
- transition_server->process_transition(
- transition_temp,
- &output,
- current_position,
- transition_fragment_len,
- transition->length);
+ if( transition_server ) {
+ transition_server->process_transition(
+ transition_temp, &output, current_position,
+ transition_fragment_len, transition->length);
+ }
+ else
+ eprintf("missing transition plugin: %s\n", transition->title);
// Reverse output buffer here so transitions always render forward.
if(direction == PLAY_REVERSE)