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
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/sequencer/intern/strip_time.c')
-rw-r--r--source/blender/sequencer/intern/strip_time.c27
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);
}