Commit e1e062c
committed
fix(runtime): decide a nested clip's timing convention by its start, not its end
`resolveAbsoluteMediaStartSeconds` disambiguates the two conventions #2859
identified:
composition-local host@20 + video@0 => root@20
legacy root-global host@45.4 + video@45.4 => root@45.4
It decides by asking whether the clip's authored *end* lands inside the host
window. What distinguishes the two is where the clip *starts*: a
composition-local clip is authored from its host's zero, so its start sits below
the host's absolute start. Its duration says nothing about which convention it
uses.
So a composition-local clip is misread as root-global whenever its duration
merely exceeds the mount offset:
data-start="0", data-duration="4.375", host mounted at 2.96
authoredEnd = 0 + 4.375 = 4.375 > 2.96 -> treated as root-global
-> scheduled 0..4.375; the ancestor visibility gate clips the front
-> visible 2.96..4.375, blank for the remaining ~3s of its own slot
The two branches of that test already disagreed — the no-host-duration branch
tested `authoredStart >= inheritedStart`, the other tested the end. This makes
both use the start.
This is the same failure #2859 fixed, one case further along: that PR handled
the clip whose end falls *before* the mount offset (which falls through to
local). A clip whose end falls *after* it flips back to global instead.
The condition only produces a visible hole when 0 < mountOffset < duration, so a
project can look entirely healthy while carrying it — every other scene in the
project where we hit this mounts later than its own duration and resolved
correctly by luck.
Behaviour changes only for clips with 0 <= authoredStart < hostStart. The
existing pip-video-late-host fixture (data-start 3.0 inside a host at 3.0) is
unaffected by the `>=`, and its golden render still passes, as does
nested-sequential-video-local-start.1 parent 049f561 commit e1e062c
2 files changed
Lines changed: 88 additions & 12 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1633 | 1633 | | |
1634 | 1634 | | |
1635 | 1635 | | |
| 1636 | + | |
| 1637 | + | |
| 1638 | + | |
| 1639 | + | |
| 1640 | + | |
| 1641 | + | |
| 1642 | + | |
| 1643 | + | |
| 1644 | + | |
| 1645 | + | |
| 1646 | + | |
| 1647 | + | |
| 1648 | + | |
| 1649 | + | |
| 1650 | + | |
| 1651 | + | |
| 1652 | + | |
| 1653 | + | |
| 1654 | + | |
| 1655 | + | |
| 1656 | + | |
| 1657 | + | |
| 1658 | + | |
| 1659 | + | |
| 1660 | + | |
| 1661 | + | |
| 1662 | + | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
| 1670 | + | |
| 1671 | + | |
| 1672 | + | |
| 1673 | + | |
| 1674 | + | |
| 1675 | + | |
| 1676 | + | |
| 1677 | + | |
| 1678 | + | |
| 1679 | + | |
| 1680 | + | |
| 1681 | + | |
| 1682 | + | |
| 1683 | + | |
| 1684 | + | |
| 1685 | + | |
| 1686 | + | |
| 1687 | + | |
| 1688 | + | |
| 1689 | + | |
| 1690 | + | |
| 1691 | + | |
| 1692 | + | |
| 1693 | + | |
| 1694 | + | |
| 1695 | + | |
| 1696 | + | |
| 1697 | + | |
| 1698 | + | |
| 1699 | + | |
| 1700 | + | |
| 1701 | + | |
| 1702 | + | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
1636 | 1708 | | |
1637 | 1709 | | |
1638 | 1710 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
631 | 631 | | |
632 | 632 | | |
633 | 633 | | |
634 | | - | |
635 | | - | |
636 | | - | |
637 | | - | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
638 | 647 | | |
639 | 648 | | |
640 | | - | |
641 | | - | |
642 | | - | |
643 | | - | |
644 | | - | |
| 649 | + | |
645 | 650 | | |
646 | 651 | | |
647 | | - | |
648 | | - | |
649 | | - | |
| 652 | + | |
| 653 | + | |
650 | 654 | | |
651 | 655 | | |
652 | 656 | | |
| |||
0 commit comments