519
static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq)
518
static int metaseq_start(Sequence *metaseq)
520
return metaseq->start + metaseq->startofs;
523
static int metaseq_end(Sequence *metaseq)
525
return metaseq->start + metaseq->len - metaseq->endofs;
528
static void seq_update_sound_bounds_recursive_rec(Scene *scene, Sequence *metaseq, int start, int end)
524
533
* since sound is played outside of evaluating the imbufs, */
525
534
for (seq = metaseq->seqbase.first; seq; seq = seq->next) {
526
535
if (seq->type == SEQ_META) {
527
seq_update_sound_bounds_recursive(scene, seq);
536
seq_update_sound_bounds_recursive_rec(scene, seq, MAX2(start, metaseq_start(seq)), MIN2(end, metaseq_end(seq)));
529
538
else if (ELEM(seq->type, SEQ_SOUND, SEQ_SCENE)) {
530
539
if (seq->scene_sound) {
531
540
int startofs = seq->startofs;
532
541
int endofs = seq->endofs;
533
if (seq->startofs + seq->start < metaseq->start + metaseq->startofs)
534
startofs = metaseq->start + metaseq->startofs - seq->start;
542
if (seq->startofs + seq->start < start)
543
startofs = start - seq->start;
536
if (seq->start + seq->len - seq->endofs > metaseq->start + metaseq->len - metaseq->endofs)
537
endofs = seq->start + seq->len - metaseq->start - metaseq->len + metaseq->endofs;
545
if (seq->start + seq->len - seq->endofs > end)
546
endofs = seq->start + seq->len - end;
538
547
sound_move_scene_sound(scene, seq->scene_sound, seq->start + startofs, seq->start + seq->len - endofs, startofs);
553
static void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq)
555
seq_update_sound_bounds_recursive_rec(scene, metaseq, metaseq_start(metaseq), metaseq_end(metaseq));
544
558
void calc_sequence_disp(Scene *scene, Sequence *seq)
546
560
if (seq->startofs && seq->startstill) seq->startstill = 0;