diff options
Diffstat (limited to 'source/blender/sequencer/intern/strip_time.c')
-rw-r--r-- | source/blender/sequencer/intern/strip_time.c | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/source/blender/sequencer/intern/strip_time.c b/source/blender/sequencer/intern/strip_time.c index d4357fe28b6..5d8266dbc6e 100644 --- a/source/blender/sequencer/intern/strip_time.c +++ b/source/blender/sequencer/intern/strip_time.c @@ -203,6 +203,8 @@ void seq_time_effect_range_set(const Scene *scene, Sequence *seq) /* Values unusable for effects, these should be always 0. */ seq->startofs = seq->endofs = seq->anim_startofs = seq->anim_endofs = 0; + seq->start = seq->startdisp; + seq->len = seq->enddisp - seq->startdisp; } /* Update strip startdisp and enddisp (n-input effects have no len to calculate these). */ @@ -437,15 +439,20 @@ bool SEQ_time_strip_intersects_frame(const Scene *scene, void SEQ_time_speed_factor_set(const Scene *scene, Sequence *seq, const float speed_factor) { - const float left_handle_frame = SEQ_time_left_handle_frame_get(scene, seq); - const float unity_start_offset = seq->startofs * seq->speed_factor; - const float unity_end_offset = seq->endofs * seq->speed_factor; - /* Left handle is pivot point for content scaling - it must always show same frame. */ - seq->speed_factor = speed_factor; - seq->startofs = unity_start_offset / speed_factor; - seq->start = left_handle_frame - seq->startofs; - seq->endofs = unity_end_offset / speed_factor; + if (seq->type == SEQ_TYPE_SOUND_RAM) { + seq->speed_factor = speed_factor; + } + else { + const float left_handle_frame = SEQ_time_left_handle_frame_get(scene, seq); + const float unity_start_offset = seq->startofs * seq->speed_factor; + const float unity_end_offset = seq->endofs * seq->speed_factor; + /* Left handle is pivot point for content scaling - it must always show same frame. */ + seq->speed_factor = speed_factor; + seq->startofs = unity_start_offset / speed_factor; + seq->start = left_handle_frame - seq->startofs; + seq->endofs = unity_end_offset / speed_factor; + } SEQ_time_update_meta_strip_range(scene, seq_sequence_lookup_meta_by_seq(scene, seq)); seq_time_update_effects_strip_range(scene, seq_sequence_lookup_effects_by_seq(scene, seq)); @@ -471,6 +478,10 @@ bool SEQ_time_has_still_frames(const Scene *scene, const Sequence *seq) * factor */ int SEQ_time_strip_length_get(const Scene *scene, const Sequence *seq) { + if (seq->type == SEQ_TYPE_SOUND_RAM) { + return seq->len; + } + return seq->len / seq_time_playback_rate_factor_get(scene, seq); } |