X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Ftracksedit.C;h=e84fe07b4b483ec94d09358e612a47cfb7362190;hp=29584b239f4db4368773154e4facc556979d40ec;hb=refs%2Fheads%2Fmaster;hpb=f5725c7e12def18fec49a295dad688652edaa4b3 diff --git a/cinelerra-5.1/cinelerra/tracksedit.C b/cinelerra-5.1/cinelerra/tracksedit.C index 29584b23..e84fe07b 100644 --- a/cinelerra-5.1/cinelerra/tracksedit.C +++ b/cinelerra-5.1/cinelerra/tracksedit.C @@ -386,7 +386,7 @@ void Tracks::set_transition_length(Transition *transition, double length) } } if( !found ) return; - if( edl->session->gang_tracks == GANG_NONE ) return; + if( edl->local_session->gang_tracks == GANG_NONE ) return; Track *track = transition->edit->track; double pos = track->from_units(transition->edit->startproject); Track *current = edl->tracks->first; @@ -558,7 +558,7 @@ int Tracks::delete_tracks() { int total_deleted = 0; int done = 0; - int gang = edl->session->gang_tracks != GANG_NONE ? 1 : 0; + int gang = edl->local_session->gang_tracks != GANG_NONE ? 1 : 0; while( !done ) { done = 1; @@ -697,6 +697,7 @@ void Tracks::move_effect(Plugin *plugin, Track *track, int64_t position) start, length, plugin->plugin_type); result->copy_from(plugin); result->shift(position - plugin->startproject); + result->gui_id = plugin->gui_id; // Clear new plugin from old set plugin->plugin_set->clear(plugin->startproject, @@ -756,7 +757,7 @@ int Tracks::concatenate_tracks(int edit_plugins, int edit_autos) input_track = input_track->next) { if(input_track->data_type == data_type && - input_track->play && + input_track->plays() && !input_track->is_armed()) break; } @@ -782,7 +783,7 @@ int Tracks::concatenate_tracks(int edit_plugins, int edit_autos) if(input_track->data_type == data_type && !input_track->is_armed() && - input_track->play) break; + input_track->plays()) break; } for(output_track = output_track->next; @@ -850,12 +851,12 @@ int Tracks::copy(int copy_flags, double start, double end, -int Tracks::move_track_up(Track *track) +int Tracks::roll_track_up(Track *track) { if( first == last ) return 1; int n = 1; Track *src = track, *dst = src->previous; - if( edl->session->gang_tracks != GANG_NONE ) { + if( edl->local_session->gang_tracks != GANG_NONE ) { while( src && !src->master ) src = src->previous; if( !src ) src = first; Track *nxt = src->next; @@ -864,16 +865,16 @@ int Tracks::move_track_up(Track *track) while( dst && !dst->master ) { dst = dst->previous; } } if( src == dst ) return 1; - move_tracks(src, dst, n); + roll_tracks(src, dst, n); return 0; } -int Tracks::move_track_down(Track *track) +int Tracks::roll_track_down(Track *track) { if( first == last ) return 1; int n = 1; Track *src = track, *dst = src->next; - if( edl->session->gang_tracks != GANG_NONE ) { + if( edl->local_session->gang_tracks != GANG_NONE ) { while( src && !src->master ) src = src->previous; if( !src ) src = first; Track *nxt = src->next; @@ -889,40 +890,40 @@ int Tracks::move_track_down(Track *track) else dst = !dst ? first : dst->next; if( src == dst ) return 1; - move_tracks(src, dst, n); + roll_tracks(src, dst, n); return 0; } -int Tracks::move_tracks_up() +int Tracks::roll_tracks_up() { if( first == last ) return 1; int n = 1; Track *src = first, *dst = 0; - if( edl->session->gang_tracks != GANG_NONE ) { + if( edl->local_session->gang_tracks != GANG_NONE ) { Track *nxt = src->next; while( nxt && !nxt->master ) { ++n; nxt = nxt->next; } } if( src == dst ) return 1; - move_tracks(src, dst, n); + roll_tracks(src, dst, n); return 0; } -int Tracks::move_tracks_down() +int Tracks::roll_tracks_down() { if( first == last ) return 1; int n = 1; Track *src = last, *dst = first; - if( edl->session->gang_tracks != GANG_NONE ) { + if( edl->local_session->gang_tracks != GANG_NONE ) { while( src && !src->master ) { ++n; src = src->previous; } } if( src == dst ) return 1; - move_tracks(src, dst, n); + roll_tracks(src, dst, n); return 0; } -int Tracks::swap_track_up(Track *track) +int Tracks::move_track_up(Track *track) { Track *next_track = track->previous; if(!next_track) next_track = last; @@ -932,7 +933,7 @@ int Tracks::swap_track_up(Track *track) return 0; } -int Tracks::swap_track_down(Track *track) +int Tracks::move_track_down(Track *track) { Track *next_track = track->next; if(!next_track) next_track = first; @@ -943,7 +944,7 @@ int Tracks::swap_track_down(Track *track) } -int Tracks::swap_tracks_up() +int Tracks::move_tracks_up() { int result = 0; Track *next = first; @@ -960,7 +961,7 @@ int Tracks::swap_tracks_up() return result; } -int Tracks::swap_tracks_down() +int Tracks::move_tracks_down() { int result = 0; Track *prev = last; @@ -1012,7 +1013,6 @@ void Tracks::paste_automation(double selectionstart, Track* current_atrack = 0; Track* current_vtrack = 0; Track* dst_track = 0; - int src_type; int result = 0; double length; double frame_rate = edl->session->frame_rate; @@ -1021,10 +1021,9 @@ void Tracks::paste_automation(double selectionstart, string[0] = 0; // Search for start - do{ - result = file->read_tag(); - }while(!result && - !file->tag.title_is("AUTO_CLIPBOARD")); + do { + result = file->read_tag(); + } while(!result && !file->tag.title_is("AUTO_CLIPBOARD")); if(!result) { @@ -1032,7 +1031,6 @@ void Tracks::paste_automation(double selectionstart, frame_rate = file->tag.get_property("FRAMERATE", frame_rate); sample_rate = file->tag.get_property("SAMPLERATE", sample_rate); - do { result = file->read_tag(); @@ -1047,15 +1045,9 @@ void Tracks::paste_automation(double selectionstart, if(file->tag.title_is("TRACK")) { file->tag.get_property("TYPE", string); - if(!strcmp(string, "AUDIO")) - { - src_type = TRACK_AUDIO; - } - else - { - src_type = TRACK_VIDEO; - } - + double src_rate = !strcmp(string, "AUDIO") ? + sample_rate : frame_rate; + double src_length = length / src_rate; // paste to any media type if(typeless) { @@ -1097,22 +1089,9 @@ void Tracks::paste_automation(double selectionstart, if(dst_track) { - double frame_rate2 = frame_rate; - double sample_rate2 = sample_rate; - - if(src_type != dst_track->data_type) - { - frame_rate2 = sample_rate; - sample_rate2 = frame_rate; - } - - dst_track->paste_automation(selectionstart, - length, - frame_rate2, - sample_rate2, - file, - default_only, - active_only); + dst_track->paste_automation(file, + selectionstart, src_length, src_rate, + default_only, active_only); } } } @@ -1129,7 +1108,7 @@ void Tracks::paste_automation(double selectionstart, void Tracks::paste_transition(PluginServer *server, Edit *dest_edit) { dest_edit->insert_transition(server->title); - if( edl->session->gang_tracks == GANG_NONE ) return; + if( edl->local_session->gang_tracks == GANG_NONE ) return; Track *track = dest_edit->track; double pos = track->from_units(dest_edit->startproject); for( Track *current=first; current; current=current->next ) {