diff options
author | Joseph Eagar <joeedh@gmail.com> | 2022-11-12 01:18:46 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2022-11-12 01:18:46 +0300 |
commit | c29795452cc71cb9f5a571a4aff0f593a2d7acaf (patch) | |
tree | 53a46bb77f3102c545f7e55d3344e310b3bf6116 /source/blender/sequencer | |
parent | 9980fd0b8e1f3a07060316f28469f55a3f2fc0cd (diff) | |
parent | 03ccf37162d365f3fdc8d8cd0cd6e9ff314fec6e (diff) |
Merge branch 'master' into temp-sculpt-roll-mappingtemp-sculpt-roll-mapping
Diffstat (limited to 'source/blender/sequencer')
-rw-r--r-- | source/blender/sequencer/SEQ_transform.h | 1 | ||||
-rw-r--r-- | source/blender/sequencer/intern/disk_cache.c | 20 | ||||
-rw-r--r-- | source/blender/sequencer/intern/effects.c | 11 | ||||
-rw-r--r-- | source/blender/sequencer/intern/strip_add.c | 1 | ||||
-rw-r--r-- | source/blender/sequencer/intern/strip_time.c | 13 | ||||
-rw-r--r-- | source/blender/sequencer/intern/strip_transform.c | 20 |
6 files changed, 31 insertions, 35 deletions
diff --git a/source/blender/sequencer/SEQ_transform.h b/source/blender/sequencer/SEQ_transform.h index c27a9dc4409..30cf472f55b 100644 --- a/source/blender/sequencer/SEQ_transform.h +++ b/source/blender/sequencer/SEQ_transform.h @@ -23,7 +23,6 @@ bool SEQ_transform_sequence_can_be_translated(struct Sequence *seq); * since they work a bit differently to normal image seq's (during transform). */ bool SEQ_transform_single_image_check(struct Sequence *seq); -void SEQ_transform_fix_single_image_seq_offsets(const struct Scene *scene, struct Sequence *seq); bool SEQ_transform_test_overlap(const struct Scene *scene, struct ListBase *seqbasep, struct Sequence *test); diff --git a/source/blender/sequencer/intern/disk_cache.c b/source/blender/sequencer/intern/disk_cache.c index 596a28201cc..beb2c77b003 100644 --- a/source/blender/sequencer/intern/disk_cache.c +++ b/source/blender/sequencer/intern/disk_cache.c @@ -303,7 +303,8 @@ static void seq_disk_cache_get_dir( char project_dir[FILE_MAX]; seq_disk_cache_get_project_dir(disk_cache, project_dir, sizeof(project_dir)); - sprintf(scene_name, "%s-%" PRId64, scene->id.name, disk_cache->timestamp); + BLI_snprintf( + scene_name, sizeof(scene_name), "%s-%" PRId64, scene->id.name, disk_cache->timestamp); BLI_strncpy(seq_name, seq->name, sizeof(seq_name)); BLI_filename_make_safe(scene_name); BLI_filename_make_safe(seq_name); @@ -319,14 +320,15 @@ static void seq_disk_cache_get_file_path(SeqDiskCache *disk_cache, seq_disk_cache_get_dir(disk_cache, key->context.scene, key->seq, path, path_len); int frameno = (int)key->frame_index / DCACHE_IMAGES_PER_FILE; char cache_filename[FILE_MAXFILE]; - sprintf(cache_filename, - DCACHE_FNAME_FORMAT, - key->type, - key->context.rectx, - key->context.recty, - key->context.preview_render_size, - key->context.view_id, - frameno); + BLI_snprintf(cache_filename, + sizeof(cache_filename), + DCACHE_FNAME_FORMAT, + key->type, + key->context.rectx, + key->context.recty, + key->context.preview_render_size, + key->context.view_id, + frameno); BLI_path_append(path, path_len, cache_filename); } diff --git a/source/blender/sequencer/intern/effects.c b/source/blender/sequencer/intern/effects.c index 8469876ba25..3e3fe85ed39 100644 --- a/source/blender/sequencer/intern/effects.c +++ b/source/blender/sequencer/intern/effects.c @@ -704,10 +704,13 @@ static void do_gammacross_effect_float( for (int i = 0; i < y; i++) { for (int j = 0; j < x; j++) { - *rt = gammaCorrect(mfac * invGammaCorrect(*rt1) + fac * invGammaCorrect(*rt2)); - rt1++; - rt2++; - rt++; + rt[0] = gammaCorrect(mfac * invGammaCorrect(rt1[0]) + fac * invGammaCorrect(rt2[0])); + rt[1] = gammaCorrect(mfac * invGammaCorrect(rt1[1]) + fac * invGammaCorrect(rt2[1])); + rt[2] = gammaCorrect(mfac * invGammaCorrect(rt1[2]) + fac * invGammaCorrect(rt2[2])); + rt[3] = gammaCorrect(mfac * invGammaCorrect(rt1[3]) + fac * invGammaCorrect(rt2[3])); + rt1 += 4; + rt2 += 4; + rt += 4; } } } diff --git a/source/blender/sequencer/intern/strip_add.c b/source/blender/sequencer/intern/strip_add.c index 7f4c91724fc..d98a00aa9a5 100644 --- a/source/blender/sequencer/intern/strip_add.c +++ b/source/blender/sequencer/intern/strip_add.c @@ -668,7 +668,6 @@ void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const boo if (lock_range) { SEQ_time_left_handle_frame_set(scene, seq, prev_startdisp); SEQ_time_right_handle_frame_set(scene, seq, prev_enddisp); - SEQ_transform_fix_single_image_seq_offsets(scene, seq); } SEQ_relations_invalidate_cache_raw(scene, seq); diff --git a/source/blender/sequencer/intern/strip_time.c b/source/blender/sequencer/intern/strip_time.c index c484cd425c4..0b480b22e91 100644 --- a/source/blender/sequencer/intern/strip_time.c +++ b/source/blender/sequencer/intern/strip_time.c @@ -530,7 +530,18 @@ void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int timel timeline_frame = right_handle_orig_frame - 1; } - seq->startofs = timeline_frame - SEQ_time_start_frame_get(seq); + float offset = timeline_frame - SEQ_time_start_frame_get(seq); + + if (SEQ_transform_single_image_check(seq)) { + /* This strip has only 1 frame of content, that is always stretched to whole strip length. + * Therefore, strip start should be moved instead of adjusting offset. */ + SEQ_time_start_frame_set(scene, seq, timeline_frame); + seq->endofs += offset; + } + else { + seq->startofs = offset; + } + seq->startdisp = timeline_frame; /* Only to make files usable in older versions. */ SEQ_time_update_meta_strip_range(scene, seq_sequence_lookup_meta_by_seq(scene, seq)); diff --git a/source/blender/sequencer/intern/strip_transform.c b/source/blender/sequencer/intern/strip_transform.c index 2c7bb69da66..14875df9445 100644 --- a/source/blender/sequencer/intern/strip_transform.c +++ b/source/blender/sequencer/intern/strip_transform.c @@ -82,24 +82,6 @@ bool SEQ_transform_seqbase_isolated_sel_check(ListBase *seqbase) return true; } -void SEQ_transform_fix_single_image_seq_offsets(const Scene *scene, Sequence *seq) -{ - int left, start; - if (!SEQ_transform_single_image_check(seq)) { - return; - } - - /* make sure the image is always at the start since there is only one, - * adjusting its start should be ok */ - left = SEQ_time_left_handle_frame_get(scene, seq); - start = seq->start; - if (start != left) { - const int offset = left - start; - seq_time_translate_handles(scene, seq, -offset); - seq->start += offset; - } -} - bool SEQ_transform_sequence_can_be_translated(Sequence *seq) { return !(seq->type & SEQ_TYPE_EFFECT) || (SEQ_effect_get_num_inputs(seq->type) == 0); @@ -145,7 +127,7 @@ void SEQ_transform_translate_sequence(Scene *evil_scene, Sequence *seq, int delt /* Move meta start/end points. */ seq_time_translate_handles(evil_scene, seq, delta); } - else { /* All other strip types. */ + else if (seq->seq1 == NULL && seq->seq2 == NULL) { /* All other strip types. */ seq->start += delta; /* Only to make files usable in older versions. */ seq->startdisp = SEQ_time_left_handle_frame_get(evil_scene, seq); |