X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fedits.C;h=71dd3b18e293ad41af189f0d9f161ceb1f010822;hb=0b751b07a28e84a721b2bb76083db6629aa26d73;hp=a64024ada45ad77505b3b53905e823a04608a9ed;hpb=d3136bf5076921bddf85277f619eeffcf8eb3009;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/edits.C b/cinelerra-5.1/cinelerra/edits.C index a64024ad..71dd3b18 100644 --- a/cinelerra-5.1/cinelerra/edits.C +++ b/cinelerra-5.1/cinelerra/edits.C @@ -255,7 +255,9 @@ Edit* Edits::split_edit(int64_t position) 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) { @@ -558,6 +560,13 @@ Edit* Edits::editof(int64_t position, int direction, int use_nudge) 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; @@ -629,7 +638,7 @@ void Edits::clear(int64_t start, int64_t end) //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 @@ -649,7 +658,7 @@ void Edits::clear(int64_t start, int64_t end) 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;