inst/schema/cornball-layout.md

The cornball layout contract

compost's render_timeline() can compose several video tracks onto one canvas — a talking-head over slides, a stacked short, an over-shoulder box — driven entirely by data on the OTIO timeline. Writers (any tool emitting OTIO via rotio) declare WHERE things go; compost executes the rects generically and knows no layout names.

Schema 1

Timeline metadata:

metadata(timeline)$cornball$layout <- list(
    schema = 1L,
    name   = "vertical",                 # informational label
    canvas = c(1080L, 1920L),            # output size, even pixels
    slots  = list(                       # list order = paint order (first = bottom)
        narrator = list(rect = c(0L, 0L, 1080L, 960L),   fit = "fill"),
        visual   = list(rect = c(0L, 960L, 1080L, 960L), fit = "fit")))

Degradation

Mirrors the cornball.* effects namespace: a renderer that cannot honor the layout still renders the content.

| condition | behavior | |---|---| | schema > supported | one warning, layout ignored, single-stream render | | layout slot with no matching track | one warning, composition skipped | | roled track with no layout slot | one warning, track ignored | | older compost (pre-layout) | roled tracks silently dropped; framing applies — a correct letterboxed single-stream render |

See also

cornball-effects.md — the cornball.* per-clip effect namespace (Ken Burns motion on still clips).



Try the compost package in your browser

Any scripts or data that you put into this service are public.

compost documentation built on Aug. 4, 2026, 5:11 p.m.