render_timeline: lower stills, image sequences, and cornball.* effects - #19
Merged
Conversation
…effects Still-image clips (png/jpg/... ExternalReferences) pre-render into temp video via still_clip() before the concat/crossfade chain: duration from the source_range end (so a preceding dissolve keeps its head handle), fps from the source_range rate, raster from the source aspect fitted in the framing box, motion from the clip's cornball.* effects. ImageSequenceReference clips pre-render via frames_clip() at the reference's rate. Everything downstream is unchanged. .motion_from_effects() reads the open cornball.* effect namespace (inst/schema/cornball-effects.md): foreign effects are ignored silently; unrecognized, disabled, or schema-too-new cornball.* effects degrade to a static clip with one warning; the first usable motion wins. A still-image clip without a source_range is an error: a still has no intrinsic duration.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Teaches
render_timeline()to handle non-video sources by pre-rendering them into temp clips before the existing concat/crossfade/framing/caption/audio machinery (which is untouched):.png/.jpg/... ExternalReferences) lower viastill_clip(): duration = source_range end (so a preceding dissolve keeps its head handle), fps = source_range rate, raster = source aspect fitted inside the framing box, motion from the clip'scornball.*effects. A still clip without asource_rangeis an error — a still has no intrinsic duration.ImageSequenceReferenceclips lower viaframes_clip()at the reference's own rate (pattern from name_prefix/zero_padding/suffix). Previously these were silently dropped by the track walk.cornball.*effect namespace (public contract:inst/schema/cornball-effects.md):cornball.kenburnsschema 1 is lowered; foreign effects are ignored silently; unrecognized/disabled/schema-too-newcornball.*effects degrade to a static clip with one warning. First usable motion wins.at_home tests render a real two-slide bundle (Ken Burns on slide 1, 6-frame dissolve riding the head handle, mp3 narration bed as ground truth for output length, framed 240×240) and a 10-frame ImageSequenceReference scene. Full suite 185/185 with at_home on.
Second of the two compost PRs for the slide-explainer pipeline; cornductor's bundle writer lands next and degrades gracefully against older compost.