diff options
Diffstat (limited to 'source/blender/sequencer/intern/strip_add.c')
-rw-r--r-- | source/blender/sequencer/intern/strip_add.c | 130 |
1 files changed, 9 insertions, 121 deletions
diff --git a/source/blender/sequencer/intern/strip_add.c b/source/blender/sequencer/intern/strip_add.c index aa3f7c92dd8..f342765eec9 100644 --- a/source/blender/sequencer/intern/strip_add.c +++ b/source/blender/sequencer/intern/strip_add.c @@ -70,16 +70,6 @@ #include "proxy.h" #include "utils.h" -/** - * Initialize common SeqLoadData members - * - * \param load_data: SeqLoadData to be initialized - * \param name: strip name (can be NULL) - * \param path: path to file that is used as strip input (can be NULL) - * \param start_frame: timeline frame where strip will be created - * \param channel: timeline channel where strip will be created - * - */ void SEQ_add_load_data_init(SeqLoadData *load_data, const char *name, const char *path, @@ -100,7 +90,7 @@ void SEQ_add_load_data_init(SeqLoadData *load_data, static void seq_add_generic_update(Scene *scene, ListBase *seqbase, Sequence *seq) { SEQ_sequence_base_unique_name_recursive(scene, &scene->ed->seqbase, seq); - SEQ_time_update_sequence_bounds(scene, seq); + SEQ_time_update_sequence(scene, seqbase, seq); SEQ_sort(seqbase); SEQ_relations_invalidate_cache_composite(scene, seq); } @@ -147,19 +137,10 @@ static void seq_add_set_view_transform(Scene *scene, Sequence *seq, SeqLoadData } } -/** - * Add scene strip. - * - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ Sequence *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data) { Sequence *seq = SEQ_sequence_alloc( seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_SCENE); - seq->blend_mode = SEQ_TYPE_CROSS; seq->scene = load_data->scene; seq->len = load_data->scene->r.efra - load_data->scene->r.sfra + 1; id_us_ensure_real((ID *)load_data->scene); @@ -168,19 +149,10 @@ Sequence *SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, struct SeqLoadDat return seq; } -/** - * Add movieclip strip. - * - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ Sequence *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data) { Sequence *seq = SEQ_sequence_alloc( seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_MOVIECLIP); - seq->blend_mode = SEQ_TYPE_CROSS; seq->clip = load_data->clip; seq->len = BKE_movieclip_get_duration(load_data->clip); id_us_ensure_real((ID *)load_data->clip); @@ -189,19 +161,10 @@ Sequence *SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, struct SeqLoa return seq; } -/** - * Add mask strip. - * - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ Sequence *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data) { Sequence *seq = SEQ_sequence_alloc( seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_MASK); - seq->blend_mode = SEQ_TYPE_CROSS; seq->mask = load_data->mask; seq->len = BKE_mask_get_duration(load_data->mask); id_us_ensure_real((ID *)load_data->mask); @@ -210,14 +173,6 @@ Sequence *SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData return seq; } -/** - * Add effect strip. - * - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, struct SeqLoadData *load_data) { Sequence *seq = SEQ_sequence_alloc( @@ -230,16 +185,7 @@ Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, struct SeqLoadDa seq->seq2 = load_data->effect.seq2; seq->seq3 = load_data->effect.seq3; - if (seq->type == SEQ_TYPE_COLOR) { - seq->blend_mode = SEQ_TYPE_CROSS; - } - else if (seq->type == SEQ_TYPE_ADJUSTMENT) { - seq->blend_mode = SEQ_TYPE_CROSS; - } - else if (seq->type == SEQ_TYPE_TEXT) { - seq->blend_mode = SEQ_TYPE_ALPHAOVER; - } - else if (SEQ_effect_get_num_inputs(seq->type) == 1) { + if (SEQ_effect_get_num_inputs(seq->type) == 1) { seq->blend_mode = seq->seq1->blend_mode; } @@ -248,42 +194,23 @@ Sequence *SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, struct SeqLoadDa SEQ_transform_set_right_handle_frame(seq, load_data->effect.end_frame); } - SEQ_relations_update_changed_seq_and_deps(scene, seq, 1, 1); /* Runs SEQ_time_update_sequence. */ seq_add_set_name(scene, seq, load_data); seq_add_generic_update(scene, seqbase, seq); return seq; } -/** - * Set directory used by image strip. - * - * \param seq: image strip to be changed - * \param path: directory path - */ void SEQ_add_image_set_directory(Sequence *seq, char *path) { BLI_strncpy(seq->strip->dir, path, sizeof(seq->strip->dir)); } -/** - * Set directory used by image strip. - * - * \param seq: image strip to be changed - * \param strip_frame: frame index of strip to be changed - * \param filename: image filename (only filename, not complete path) - */ void SEQ_add_image_load_file(Sequence *seq, size_t strip_frame, char *filename) { StripElem *se = SEQ_render_give_stripelem(seq, seq->start + strip_frame); BLI_strncpy(se->name, filename, sizeof(se->name)); } -/** - * Set image strip alpha mode - * - * \param seq: image strip to be changed - */ void SEQ_add_image_init_alpha_mode(Sequence *seq) { if (seq->strip && seq->strip->stripdata) { @@ -313,21 +240,10 @@ void SEQ_add_image_init_alpha_mode(Sequence *seq) } } -/** - * Add image strip. - * NOTE: Use SEQ_add_image_set_directory() and SEQ_add_image_load_file() to load image sequences - * - * \param main: Main reference - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ Sequence *SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data) { Sequence *seq = SEQ_sequence_alloc( seqbase, load_data->start_frame, load_data->channel, SEQ_TYPE_IMAGE); - seq->blend_mode = SEQ_TYPE_CROSS; /* so alpha adjustment fade to the strip below */ seq->len = load_data->image.len; Strip *strip = seq->strip; strip->stripdata = MEM_callocN(load_data->image.len * sizeof(StripElem), "stripelem"); @@ -371,17 +287,6 @@ Sequence *SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqL } #ifdef WITH_AUDASPACE -/** - * Add sound strip. - * NOTE: Use SEQ_add_image_set_directory() and SEQ_add_image_load_file() to load image sequences - * - * \param main: Main reference - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ - Sequence *SEQ_add_sound_strip(Main *bmain, Scene *scene, ListBase *seqbase, @@ -451,15 +356,6 @@ Sequence *SEQ_add_sound_strip(Main *UNUSED(bmain), } #endif // WITH_AUDASPACE -/** - * Add meta strip. - * - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ - Sequence *SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data) { /* Allocate sequence. */ @@ -472,20 +368,11 @@ Sequence *SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_ /* Set frames start and length. */ seqm->start = load_data->start_frame; seqm->len = 1; - SEQ_time_update_sequence(scene, seqm); + SEQ_time_update_sequence(scene, seqbase, seqm); return seqm; } -/** - * Add movie strip. - * - * \param main: Main reference - * \param scene: Scene where strips will be added - * \param seqbase: ListBase where strips will be added - * \param load_data: SeqLoadData with information necessary to create strip - * \return created strip - */ Sequence *SEQ_add_movie_strip( Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data, double *r_start_offset) { @@ -588,8 +475,6 @@ Sequence *SEQ_add_movie_strip( } } - seq->blend_mode = SEQ_TYPE_CROSS; /* so alpha adjustment fade to the strip below */ - if (anim_arr[0] != NULL) { seq->len = IMB_anim_get_duration(anim_arr[0], IMB_TC_RECORD_RUN); @@ -624,7 +509,6 @@ Sequence *SEQ_add_movie_strip( return seq; } -/* NOTE: caller should run SEQ_time_update_sequence(scene, seq) after. */ void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const bool lock_range) { char path[FILE_MAX]; @@ -644,7 +528,9 @@ void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const boo if (lock_range) { /* keep so we don't have to move the actual start and end points (only the data) */ - SEQ_time_update_sequence_bounds(scene, seq); + Editing *ed = SEQ_editing_get(scene); + ListBase *seqbase = SEQ_get_seqbase_by_seq(&ed->seqbase, seq); + SEQ_time_update_sequence(scene, seqbase, seq); prev_startdisp = seq->startdisp; prev_enddisp = seq->enddisp; } @@ -794,7 +680,9 @@ void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const boo SEQ_transform_fix_single_image_seq_offsets(seq); } - SEQ_time_update_sequence(scene, seq); + ListBase *seqbase = SEQ_active_seqbase_get(SEQ_editing_get(scene)); + SEQ_time_update_sequence(scene, seqbase, seq); + SEQ_relations_invalidate_cache_raw(scene, seq); } void SEQ_add_movie_reload_if_needed(struct Main *bmain, |