Fix T94149: Incorrect sound strip length

Fix formula in function `SEQ_sound_update_length`.

Formula for sound strip length was changed in commit ded68fb102, when
strip is added to timeline, but it was not changed in function
mentioned above.
This commit is contained in:
Richard Antalik 2022-01-25 23:53:33 +01:00
parent c1b5cea63a
commit 83094d9a0d
Notes: blender-bot 2023-02-14 10:32:59 +01:00
Referenced by issue #95256, Crash when creating off-screen pose asset
Referenced by issue #94149, Audio length inconsistency after frame rate change
1 changed files with 7 additions and 2 deletions

View File

@ -31,6 +31,7 @@
#include "DNA_sound_types.h"
#include "BLI_listbase.h"
#include "BLI_utildefines.h"
#include "BKE_main.h"
#include "BKE_scene.h"
@ -56,11 +57,15 @@ static bool sequencer_refresh_sound_length_recursive(Main *bmain, Scene *scene,
}
}
else if (seq->type == SEQ_TYPE_SOUND_RAM && seq->sound) {
const float length = BKE_sound_get_length(bmain, seq->sound);
SoundInfo info;
if (!BKE_sound_info_get(bmain, seq->sound, &info)) {
continue;
}
int old = seq->len;
float fac;
seq->len = (int)ceil((double)length * FPS);
seq->len = MAX2(1, round((info.length - seq->sound->offset_time) * FPS));
fac = (float)seq->len / (float)old;
old = seq->startofs;
seq->startofs *= fac;