X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fedl.C;h=7966276159becb5ca866d43e8cb4051c801c8529;hb=e23393f4ff9f772ac8f47926cf490dc87a630ed4;hp=77705fcf53f2e2b2b741373b696eecc48e3f905c;hpb=7fd85fb66168f6b518c5f2d73e04036e87faa0e1;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/edl.C b/cinelerra-5.1/cinelerra/edl.C index 77705fcf..79662761 100644 --- a/cinelerra-5.1/cinelerra/edl.C +++ b/cinelerra-5.1/cinelerra/edl.C @@ -1631,6 +1631,25 @@ Asset *EDL::get_proxy_asset() tracks->first->edits->first->asset : 0; } +Track *EDL::add_new_track(int data_type) +{ + Track *new_track = 0; + switch( data_type ) { + case TRACK_VIDEO: + ++session->video_tracks; + new_track = tracks->add_video_track(0, 0); + break; + case TRACK_AUDIO: + ++session->audio_tracks; + new_track = tracks->add_audio_track(0, 0); + break; + case TRACK_SUBTITLE: + new_track = tracks->add_subttl_track(0, 0); + break; + } + return new_track; +} + double EDL::get_cursor_position(int cursor_x, int pane_no) { return (double)cursor_x * local_session->zoom_sample / session->sample_rate + @@ -1638,3 +1657,46 @@ double EDL::get_cursor_position(int cursor_x, int pane_no) local_session->zoom_sample / session->sample_rate; } +int EDL::in_use(Indexable *indexable) +{ + for( Track *track=tracks->first; track; track=track->next ) { + for( Edit *edit=track->edits->first; edit; edit=edit->next ) { + Indexable *idxbl = (Indexable *)edit->asset; + if( !idxbl ) idxbl = (Indexable *)edit->nested_edl; + if( !idxbl ) continue; + if( idxbl->id == indexable->id ) return 1; + if( !indexable->is_asset != !idxbl->is_asset ) continue; + if( !strcmp(idxbl->path, indexable->path) ) return 1; + } + } + for( int i=0; iin_use(indexable) ) return 1; + for( int i=0; iin_use(indexable) ) return 1; + return 0; +} + +int EDL::regroup(int next_id) +{ + ArrayList new_groups; + for( Track *track=tracks->first; track; track=track->next ) { + for( Edit *edit=track->edits->first; edit; edit=edit->next ) { + if( !edit->group_id ) continue; + int k = new_groups.size(); + while( --k >= 0 && new_groups[k] != edit->group_id ); + if( k >= 0 ) continue; + new_groups.append(edit->group_id); + } + } + for( Track *track=tracks->first; track; track=track->next ) { + for( Edit *edit=track->edits->first; edit; edit=edit->next ) { + if( !edit->group_id ) continue; + int k = new_groups.size(); + while( --k >= 0 && new_groups[k] != edit->group_id ); + if( k < 0 ) continue; + edit->group_id = k + next_id; + } + } + return new_groups.size(); +} +