Merge branch 'blender-v4.0-release'

This commit is contained in:
Richard Antalik
2023-10-24 05:07:23 +02:00
3 changed files with 10 additions and 7 deletions

View File

@@ -71,6 +71,9 @@ static float strip_y_rescale(const Sequence *seq, const float y_value)
static float key_x_get(const Scene *scene, const Sequence *seq, const SeqRetimingKey *key)
{
if (SEQ_retiming_is_last_key(seq, key)) {
return SEQ_retiming_key_timeline_frame_get(scene, seq, key) + 1;
}
return SEQ_retiming_key_timeline_frame_get(scene, seq, key);
}

View File

@@ -113,7 +113,7 @@ void SEQ_retiming_data_ensure(Sequence *seq)
seq->retiming_keys = (SeqRetimingKey *)MEM_calloc_arrayN(2, sizeof(SeqRetimingKey), __func__);
SeqRetimingKey *key = seq->retiming_keys + 1;
key->strip_frame_index = seq->len;
key->strip_frame_index = seq->len - 1;
key->retiming_factor = 1.0f;
seq->retiming_keys_num = 2;
}
@@ -565,7 +565,7 @@ float SEQ_retiming_key_speed_get(const Sequence *seq, const SeqRetimingKey *key)
const SeqRetimingKey *key_prev = key - 1;
const int frame_index_max = seq->len;
const int frame_index_max = seq->len - 1;
const int frame_retimed_prev = round_fl_to_int(key_prev->retiming_factor * frame_index_max);
const int frame_index_prev = key_prev->strip_frame_index;
const int frame_retimed = round_fl_to_int(key->retiming_factor * frame_index_max);

View File

@@ -68,7 +68,7 @@ float SEQ_give_frame_index(const Scene *scene, Sequence *seq, float timeline_fra
float frame_index;
float sta = SEQ_time_start_frame_get(seq);
float end = SEQ_time_content_end_frame_get(scene, seq) - 1;
const float length = seq->len;
const float frame_index_max = seq->len - 1;
if (seq->type & SEQ_TYPE_EFFECT) {
end = SEQ_time_right_handle_frame_get(scene, seq);
@@ -95,10 +95,10 @@ float SEQ_give_frame_index(const Scene *scene, Sequence *seq, float timeline_fra
if (SEQ_retiming_is_active(seq)) {
const float retiming_factor = seq_retiming_evaluate(seq, frame_index);
frame_index = retiming_factor * (length);
frame_index = retiming_factor * frame_index_max;
}
/* Clamp frame index to strip content frame range. */
frame_index = clamp_f(frame_index, 0, length);
frame_index = clamp_f(frame_index, 0, frame_index_max);
if (seq->strobe < 1.0f) {
seq->strobe = 1.0f;
@@ -504,8 +504,8 @@ int SEQ_time_strip_length_get(const Scene *scene, const Sequence *seq)
if (SEQ_retiming_is_active(seq)) {
const SeqRetimingKey *key_start = seq->retiming_keys;
const SeqRetimingKey *key_end = seq->retiming_keys + (SEQ_retiming_keys_count(seq) - 1);
return key_end->strip_frame_index / seq_time_media_playback_rate_factor_get(scene, seq) -
(key_start->strip_frame_index) / seq_time_media_playback_rate_factor_get(scene, seq);
return (key_end->strip_frame_index + 1) / seq_time_media_playback_rate_factor_get(scene, seq) -
key_start->strip_frame_index / seq_time_media_playback_rate_factor_get(scene, seq);
}
return seq->len / seq_time_media_playback_rate_factor_get(scene, seq);