Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorRichard Antalik <richardantalik@gmail.com>2019-05-31 01:19:02 +0300
committerRichard Antalik <richardantalik@gmail.com>2019-05-31 01:47:25 +0300
commit7ccc7ef61fde38e517d730cef05242cc150126d1 (patch)
tree22a7eb694b7c96c3deb115595fec379d146a522f /source
parentfc336f973d521e61ad6c10fbd67a72d684dbe43a (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.h2
-rw-r--r--source/blender/blenkernel/intern/sequencer.c36
-rw-r--r--source/blender/blenloader/intern/versioning_280.c18
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c26
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c6
-rw-r--r--source/blender/makesrna/intern/rna_sequencer_api.c3
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);