diff options
author | Richard Antalik <richardantalik@gmail.com> | 2019-05-31 01:19:02 +0300 |
---|---|---|
committer | Richard Antalik <richardantalik@gmail.com> | 2019-05-31 01:47:25 +0300 |
commit | 7ccc7ef61fde38e517d730cef05242cc150126d1 (patch) | |
tree | 22a7eb694b7c96c3deb115595fec379d146a522f /source | |
parent | fc336f973d521e61ad6c10fbd67a72d684dbe43a (diff) |
VSE: don't add crop and transform data for sound strips
This also fixes commit rB1fd7b380f4cf8a0489b405de2819f228a4da5ea2 which
didn't do allocation for effect strips properly.
Reviewed By: brecht, campbellbarton
Differential Revision: https://developer.blender.org/D4970
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/BKE_sequencer.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/sequencer.c | 36 | ||||
-rw-r--r-- | source/blender/blenloader/intern/versioning_280.c | 18 | ||||
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_add.c | 26 | ||||
-rw-r--r-- | source/blender/editors/space_sequencer/sequencer_edit.c | 6 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_sequencer_api.c | 3 |
6 files changed, 34 insertions, 57 deletions
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 807c4a93654..c62744842ce 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -459,7 +459,7 @@ typedef struct SeqLoadInfo { /* use as an api function */ typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); -struct Sequence *BKE_sequence_alloc(ListBase *lb, int cfra, int machine); +struct Sequence *BKE_sequence_alloc(ListBase *lb, int cfra, int machine, int type); void BKE_sequence_alpha_mode_from_extension(struct Sequence *seq); void BKE_sequence_init_colorspace(struct Sequence *seq); diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c index 827d7343aad..ec8a2520461 100644 --- a/source/blender/blenkernel/intern/sequencer.c +++ b/source/blender/blenkernel/intern/sequencer.c @@ -5353,16 +5353,20 @@ static void seq_load_apply(Main *bmain, Scene *scene, Sequence *seq, SeqLoadInfo } } -static Strip *seq_strip_alloc(void) +static Strip *seq_strip_alloc(int type) { Strip *strip = MEM_callocN(sizeof(Strip), "strip"); - strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); - strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); + if (ELEM(type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) == 0) { + strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); + strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); + } + + strip->us = 1; return strip; } -Sequence *BKE_sequence_alloc(ListBase *lb, int cfra, int machine) +Sequence *BKE_sequence_alloc(ListBase *lb, int cfra, int machine, int type) { Sequence *seq; @@ -5381,7 +5385,9 @@ Sequence *BKE_sequence_alloc(ListBase *lb, int cfra, int machine) seq->volume = 1.0f; seq->pitch = 1.0f; seq->scene_sound = NULL; + seq->type = type; + seq->strip = seq_strip_alloc(type); seq->stereo3d_format = MEM_callocN(sizeof(Stereo3dFormat), "Sequence Stereo Format"); seq->cache_flag = SEQ_CACHE_ALL_TYPES; @@ -5465,15 +5471,13 @@ Sequence *BKE_sequencer_add_image_strip(bContext *C, ListBase *seqbasep, SeqLoad Sequence *seq; Strip *strip; - seq = BKE_sequence_alloc(seqbasep, seq_load->start_frame, seq_load->channel); - seq->type = SEQ_TYPE_IMAGE; + seq = BKE_sequence_alloc(seqbasep, seq_load->start_frame, seq_load->channel, SEQ_TYPE_IMAGE); seq->blend_mode = SEQ_TYPE_ALPHAOVER; /* basic defaults */ - seq->strip = strip = seq_strip_alloc(); - seq->len = seq_load->len ? seq_load->len : 1; - strip->us = 1; + + strip = seq->strip; strip->stripdata = MEM_callocN(seq->len * sizeof(StripElem), "stripelem"); BLI_strncpy(strip->dir, seq_load->path, sizeof(strip->dir)); @@ -5517,19 +5521,16 @@ Sequence *BKE_sequencer_add_sound_strip(bContext *C, ListBase *seqbasep, SeqLoad return NULL; } - seq = BKE_sequence_alloc(seqbasep, seq_load->start_frame, seq_load->channel); - - seq->type = SEQ_TYPE_SOUND_RAM; + seq = BKE_sequence_alloc(seqbasep, seq_load->start_frame, seq_load->channel, SEQ_TYPE_SOUND_RAM); seq->sound = sound; BLI_strncpy(seq->name + 2, "Sound", SEQ_NAME_MAXSTR - 2); BKE_sequence_base_unique_name_recursive(&scene->ed->seqbase, seq); /* basic defaults */ - seq->strip = strip = seq_strip_alloc(); /* We add a very small negative offset here, because * ceil(132.0) == 133.0, not nice with videos, see T47135. */ seq->len = (int)ceil((double)info.length * FPS - 1e-4); - strip->us = 1; + strip = seq->strip; /* we only need 1 element to store the filename */ strip->stripdata = se = MEM_callocN(sizeof(StripElem), "stripelem"); @@ -5622,7 +5623,7 @@ Sequence *BKE_sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoad } } - seq = BKE_sequence_alloc(seqbasep, seq_load->start_frame, seq_load->channel); + seq = BKE_sequence_alloc(seqbasep, seq_load->start_frame, seq_load->channel, SEQ_TYPE_MOVIE); /* multiview settings */ if (seq_load->stereo3d_format) { @@ -5630,8 +5631,6 @@ Sequence *BKE_sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoad seq->views_format = seq_load->views_format; } seq->flag |= seq_load->flag & SEQ_USE_VIEWS; - - seq->type = SEQ_TYPE_MOVIE; seq->blend_mode = SEQ_TYPE_ALPHAOVER; for (i = 0; i < totfiles; i++) { @@ -5657,9 +5656,8 @@ Sequence *BKE_sequencer_add_movie_strip(bContext *C, ListBase *seqbasep, SeqLoad } /* basic defaults */ - seq->strip = strip = seq_strip_alloc(); seq->len = IMB_anim_get_duration(anim_arr[0], IMB_TC_RECORD_RUN); - strip->us = 1; + strip = seq->strip; BLI_strncpy(seq->strip->colorspace_settings.name, colorspace, diff --git a/source/blender/blenloader/intern/versioning_280.c b/source/blender/blenloader/intern/versioning_280.c index 66ae743fdcb..315d8f0848d 100644 --- a/source/blender/blenloader/intern/versioning_280.c +++ b/source/blender/blenloader/intern/versioning_280.c @@ -718,16 +718,18 @@ static void do_version_constraints_copy_scale_power(ListBase *lb) static void do_versions_seq_alloc_transform_and_crop(ListBase *seqbase) { for (Sequence *seq = seqbase->first; seq != NULL; seq = seq->next) { - if (seq->strip->transform == NULL) { - seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); - } + if (ELEM(seq->type, SEQ_TYPE_SOUND_RAM, SEQ_TYPE_SOUND_HD) == 0) { + if (seq->strip->transform == NULL) { + seq->strip->transform = MEM_callocN(sizeof(struct StripTransform), "StripTransform"); + } - if (seq->strip->crop == NULL) { - seq->strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); - } + if (seq->strip->crop == NULL) { + seq->strip->crop = MEM_callocN(sizeof(struct StripCrop), "StripCrop"); + } - if (seq->seqbase.first != NULL) { - do_versions_seq_alloc_transform_and_crop(&seq->seqbase); + if (seq->seqbase.first != NULL) { + do_versions_seq_alloc_transform_and_crop(&seq->seqbase); + } } } } diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index e8f18eeebc7..db6cc1af31e 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -318,7 +318,6 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) Scene *sce_seq; Sequence *seq; /* generic strip vars */ - Strip *strip; int start_frame, channel; /* operator props */ @@ -332,16 +331,13 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel); - seq->type = SEQ_TYPE_SCENE; + seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel, SEQ_TYPE_SCENE); seq->blend_mode = SEQ_TYPE_ALPHAOVER; seq->scene = sce_seq; /* basic defaults */ - seq->strip = strip = MEM_callocN(sizeof(Strip), "strip"); seq->len = sce_seq->r.efra - sce_seq->r.sfra + 1; - strip->us = 1; BLI_strncpy(seq->name + 2, sce_seq->id.name + 2, sizeof(seq->name) - 2); BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq); @@ -406,7 +402,6 @@ static int sequencer_add_movieclip_strip_exec(bContext *C, wmOperator *op) MovieClip *clip; Sequence *seq; /* generic strip vars */ - Strip *strip; int start_frame, channel; /* operator props */ @@ -420,17 +415,14 @@ static int sequencer_add_movieclip_strip_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel); - seq->type = SEQ_TYPE_MOVIECLIP; + seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel, SEQ_TYPE_MOVIECLIP); seq->blend_mode = SEQ_TYPE_ALPHAOVER; seq->clip = clip; id_us_ensure_real(&seq->clip->id); /* basic defaults */ - seq->strip = strip = MEM_callocN(sizeof(Strip), "strip"); seq->len = BKE_movieclip_get_duration(clip); - strip->us = 1; BLI_strncpy(seq->name + 2, clip->id.name + 2, sizeof(seq->name) - 2); BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq); @@ -492,7 +484,6 @@ static int sequencer_add_mask_strip_exec(bContext *C, wmOperator *op) Mask *mask; Sequence *seq; /* generic strip vars */ - Strip *strip; int start_frame, channel; /* operator props */ @@ -506,17 +497,14 @@ static int sequencer_add_mask_strip_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel); - seq->type = SEQ_TYPE_MASK; + seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel, SEQ_TYPE_MASK); seq->blend_mode = SEQ_TYPE_ALPHAOVER; seq->mask = mask; id_us_ensure_real(&seq->mask->id); /* basic defaults */ - seq->strip = strip = MEM_callocN(sizeof(Strip), "strip"); seq->len = BKE_mask_get_duration(mask); - strip->us = 1; BLI_strncpy(seq->name + 2, mask->id.name + 2, sizeof(seq->name) - 2); BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq); @@ -1041,7 +1029,6 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) Editing *ed = BKE_sequencer_editing_get(scene, true); Sequence *seq; /* generic strip vars */ - Strip *strip; struct SeqEffectHandle sh; int start_frame, end_frame, channel, type; /* operator props */ @@ -1068,8 +1055,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel); - seq->type = type; + seq = BKE_sequence_alloc(ed->seqbasep, start_frame, channel, type); BLI_strncpy(seq->name + 2, BKE_sequence_give_name(seq), sizeof(seq->name) - 2); BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq); @@ -1091,10 +1077,6 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) BKE_sequence_calc(scene, seq); - /* basic defaults */ - seq->strip = strip = MEM_callocN(sizeof(Strip), "strip"); - strip->us = 1; - if (seq->type == SEQ_TYPE_COLOR) { SolidColorVars *colvars = (SolidColorVars *)seq->effectdata; RNA_float_get_array(op->ptr, "color", colvars->col); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index 0644bd9f558..b48b0123bdf 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -2660,9 +2660,8 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) /* remove all selected from main list, and put in meta */ - seqm = BKE_sequence_alloc(ed->seqbasep, 1, 1); /* channel number set later */ + seqm = BKE_sequence_alloc(ed->seqbasep, 1, 1, SEQ_TYPE_META); /* channel number set later */ strcpy(seqm->name + 2, "MetaStrip"); - seqm->type = SEQ_TYPE_META; seqm->flag = SELECT; seq = ed->seqbasep->first; @@ -2679,9 +2678,6 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) seqm->machine = last_seq ? last_seq->machine : channel_max; BKE_sequence_calc(scene, seqm); - seqm->strip = MEM_callocN(sizeof(Strip), "metastrip"); - seqm->strip->us = 1; - BKE_sequencer_active_set(scene, seqm); if (BKE_sequence_test_overlap(ed->seqbasep, seqm)) { diff --git a/source/blender/makesrna/intern/rna_sequencer_api.c b/source/blender/makesrna/intern/rna_sequencer_api.c index 3fc46bf1225..9b22a87cdb9 100644 --- a/source/blender/makesrna/intern/rna_sequencer_api.c +++ b/source/blender/makesrna/intern/rna_sequencer_api.c @@ -81,8 +81,7 @@ static Sequence *alloc_generic_sequence( Strip *strip; StripElem *se; - seq = BKE_sequence_alloc(ed->seqbasep, frame_start, channel); - seq->type = type; + seq = BKE_sequence_alloc(ed->seqbasep, frame_start, channel, type); BLI_strncpy(seq->name + 2, name, sizeof(seq->name) - 2); BKE_sequence_base_unique_name_recursive(&ed->seqbase, seq); |