Fix: Positive Sound offsets not working

Regular sound offsets (based on VSE strip offset) only worked with
negative values even if the waveform was draw correctly. Fix so positive
frame offsets does the correct thing.
This commit is contained in:
Sebastian Parborg
2024-06-19 18:14:10 +02:00
committed by Sebastian Parborg
parent 14fb537eca
commit f7de07d88b

View File

@@ -736,11 +736,19 @@ void *BKE_sound_add_scene_sound(
}
sound_verify_evaluated_id(&sequence->sound->id);
const double fps = FPS;
const double offset_time = sequence->sound->offset_time - frameskip / fps;
if (offset_time >= 0.0f) {
return AUD_Sequence_add(scene->sound_scene,
sequence->sound->playback_handle,
startframe / fps + offset_time,
endframe / fps,
0.0f);
}
return AUD_Sequence_add(scene->sound_scene,
sequence->sound->playback_handle,
startframe / fps,
endframe / fps,
frameskip / fps + sequence->sound->offset_time);
-offset_time);
}
void *BKE_sound_add_scene_sound_defaults(Scene *scene, Sequence *sequence)
@@ -771,19 +779,29 @@ void BKE_sound_move_scene_sound(const Scene *scene,
{
sound_verify_evaluated_id(&scene->id);
const double fps = FPS;
AUD_SequenceEntry_move(handle, startframe / fps, endframe / fps, frameskip / fps + audio_offset);
const double offset_time = audio_offset - frameskip / fps;
if (offset_time >= 0.0f) {
AUD_SequenceEntry_move(handle, startframe / fps + offset_time, endframe / fps, 0.0f);
}
else {
AUD_SequenceEntry_move(handle, startframe / fps, endframe / fps, -offset_time);
}
}
void BKE_sound_move_scene_sound_defaults(Scene *scene, Sequence *sequence)
{
sound_verify_evaluated_id(&scene->id);
if (sequence->scene_sound) {
double offset_time = 0.0f;
if (sequence->sound != nullptr) {
offset_time = sequence->sound->offset_time;
}
BKE_sound_move_scene_sound(scene,
sequence->scene_sound,
SEQ_time_left_handle_frame_get(scene, sequence),
SEQ_time_right_handle_frame_get(scene, sequence),
sequence->startofs + sequence->anim_startofs,
0.0);
offset_time);
}
}