new_edit->hard_left = edit->hard_right = 0;
}
new_edit->startproject = position;
- new_edit->startsource += edit->length;
+ int64_t edit_start = edit->startproject;
+ int64_t edit_end = edit_start + edit->length;
+ new_edit->startsource += track->speed_length(edit_start, edit_end);
// Decide what to do with the transition
if(edit->length && edit->transition) {
return 0; // return 0 on failure
}
+Edit* Edits::get_edit(int id)
+{
+ Edit *current = first;
+ while( current && current->orig_id != id ) current = NEXT;
+ return current;
+}
+
Edit* Edits::get_playable_edit(int64_t position, int use_nudge)
{
Edit *current;
//printf("Edits::clear 3.5 %d %d %d %d\n", edit1->startproject, edit1->length, edit2->startproject, edit2->length);
edit1->length = start - edit1->startproject;
edit2->length -= end - edit2->startproject;
- edit2->startsource += end - edit2->startproject;
+ edit2->startsource += track->speed_length(edit2->startproject, end);
edit2->startproject += end - edit2->startproject;
// delete
current_edit = split_edit(start);
if( current_edit ) {
current_edit->length -= end - start;
- current_edit->startsource += end - start;
+ current_edit->startsource += track->speed_length(start, end);
// shift
while( (current_edit=current_edit->next) != 0 ) {
current_edit->startproject -= end - start;