Adding straddle fix
This commit is contained in:
+1
-1
@@ -181,7 +181,7 @@ def derive_events(
|
|||||||
vs,
|
vs,
|
||||||
t.overrides,
|
t.overrides,
|
||||||
default_end_on=(
|
default_end_on=(
|
||||||
None if t.marker_id.startswith("narration:") else "next_video"
|
None if t.marker_id.startswith("narration:") else "next_slide"
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
e["handle"] = pres["handle"]
|
e["handle"] = pres["handle"]
|
||||||
|
|||||||
+17
-5
@@ -63,7 +63,7 @@ def resolve_video_presentation(
|
|||||||
marker_id: str,
|
marker_id: str,
|
||||||
video_source,
|
video_source,
|
||||||
overrides: Optional[dict] = None,
|
overrides: Optional[dict] = None,
|
||||||
default_end_on: Optional[str] = "next_video",
|
default_end_on: Optional[str] = "next_slide",
|
||||||
) -> dict:
|
) -> dict:
|
||||||
"""Resolve a video marker's per-occurrence presentation to an atomic dict.
|
"""Resolve a video marker's per-occurrence presentation to an atomic dict.
|
||||||
|
|
||||||
@@ -74,8 +74,9 @@ def resolve_video_presentation(
|
|||||||
videos.json collision.
|
videos.json collision.
|
||||||
|
|
||||||
Precedence per field: explicit event override > shorthand prefix > videos.json
|
Precedence per field: explicit event override > shorthand prefix > videos.json
|
||||||
default > built-in default. `default_end_on` is "next_video" for video triggers and
|
default > built-in default. `default_end_on` is "next_slide" for video triggers
|
||||||
None for [narration:] (which runs to the end).
|
(so an untagged clip can't overstay and obscure later content) and None for
|
||||||
|
[narration:] (which runs to the end).
|
||||||
|
|
||||||
Returns {handle, cutout, layer, end_on, take, pause_narration}.
|
Returns {handle, cutout, layer, end_on, take, pause_narration}.
|
||||||
"""
|
"""
|
||||||
@@ -1009,9 +1010,20 @@ def build_render_plan(
|
|||||||
if vid_event is event:
|
if vid_event is event:
|
||||||
# Don't shift the pause event by its own pause
|
# Don't shift the pause event by its own pause
|
||||||
continue
|
continue
|
||||||
|
# A clip whose window STRADDLES the freeze (starts before, ends after)
|
||||||
|
# would otherwise be stretched across the whole cutscene. Its overlay
|
||||||
|
# source isn't freeze-spliced like the narration is, so it'd keep
|
||||||
|
# advancing under the cutscene and surface the wrong frame in the sliver
|
||||||
|
# between the cutscene ending and its own (shifted) end — the video7
|
||||||
|
# "appears at the start, vanishes when it should show" artifact. Instead
|
||||||
|
# end it right at the freeze onset: it plays its pre-pause content, then
|
||||||
|
# the cutscene cleanly takes over.
|
||||||
|
straddles = vid_event.start_time < narration_time < vid_event.end_time
|
||||||
if vid_event.start_time >= narration_time:
|
if vid_event.start_time >= narration_time:
|
||||||
vid_event.start_time += pause_duration
|
vid_event.start_time += pause_duration
|
||||||
if vid_event.end_time > narration_time:
|
if straddles:
|
||||||
|
vid_event.end_time = narration_time
|
||||||
|
elif vid_event.end_time > narration_time:
|
||||||
vid_event.end_time += pause_duration
|
vid_event.end_time += pause_duration
|
||||||
|
|
||||||
for aud_event in audio_events:
|
for aud_event in audio_events:
|
||||||
@@ -1407,7 +1419,7 @@ def _extract_video_events(
|
|||||||
marker_id,
|
marker_id,
|
||||||
video_source,
|
video_source,
|
||||||
overrides,
|
overrides,
|
||||||
default_end_on=(None if trigger_type == "narration" else "next_video"),
|
default_end_on=(None if trigger_type == "narration" else "next_slide"),
|
||||||
)
|
)
|
||||||
cutout_name = pres["cutout"]
|
cutout_name = pres["cutout"]
|
||||||
cutout = cutouts[cutout_name]
|
cutout = cutouts[cutout_name]
|
||||||
|
|||||||
Reference in New Issue
Block a user