Expand description
Versioned, host-independent project model for alpha2.
This crate describes intent only. It contains no decoder handles, GPU resources, filesystem paths, or application-specific types.
Structs§
- Audio
Effect Load - The most audio effect state a project holds at once.
- Audio
Properties - Per-clip audio presentation controls.
- Audio
Stream Shape - An audio stream’s channel count and sample rate.
- Caption
Cue - Text shown over one timeline interval.
- Captions
- What a caption track shows: its cues, in one style.
- Clip
- A reference to a source over independent timeline and source ranges.
- Clip
Composition - A clip’s use of a
Composition, and how its time maps onto it. - Clip
Effect - One versioned runtime effect invocation: a composition’s effect or transition node, or a timeline transition.
- ClipId
- A stable timeline-clip identifier.
- Clip
Transition - A two-input transition over the overlap of two visual clips.
- Color
Pipeline - How sources’ colors come into the working space.
- Composition
- An acyclic graph of image operations with one selected output.
- Composition
Control - A node setting a composition exposes to the group nodes that use it: an effect or transition parameter of one of its nodes.
- Composition
Id - A stable composition-graph identifier.
- Composition
Node - One image operation in a
Composition. - Composition
Reads - What each composition’s output reads: the group inputs and clip nodes a walk from its output reaches, along the inputs drawing each node reads, into the compositions its group nodes draw. A group draws what its nodes would inline, so a group node needs only the ports its composition reads: a port it never reads may be left unconnected, and what a connected one reads is not drawn.
- Cubic
Bezier - A CSS
cubic-bezier(x1, y1, x2, y2)timing curve. - Dash
- A dash pattern.
- Ducking
- Sidechain ducking authored on the track that is attenuated.
- Effect
Resource - Host-resolved, non-media data consumed by one or more visual effects.
- Effect
Resource Id - A stable effect-resource identifier.
- Ellipse
Geometry - The ellipse inscribed in a size, turned clockwise about its centre. Its outline starts at the top and runs clockwise.
- EqBand
- A single equalizer section stored independently from its DSP implementation.
- Gradient
Stop - One color of a gradient.
- Grid
Placement - Where a grid item lies on one axis, as
grid_columnwrites it in CSS:2,"1 / 3","span 2","2 / span 3","auto". A missing end isauto. - Imported
Captions - Cues read from a subtitle file.
- Insets
- A length on each side of a box (a padding or a margin). Missing sides are 0.
- Keyframe
- One timestamped control value.
- Layout
Border - A border inside the border box, as wide on every side.
- Layout
Inset - Where an absolute box lies in its parent’s padding box. A missing side is
auto: with neither
leftnorright, the box keeps its place in the flow on that axis. - Layout
Issue - Where in a layout tree a problem lies, and what it is.
- Layout
Node - One box of a layout tree.
- Layout
Offset - A box’s offset after layout:
xright,ydown. - Layout
Shape - A box’s shapes, drawn as a shapes generator draws its items on a picture the size of the box’s content box: positions normalized to that box, lengths fractions of its shorter side. A shape box has no size of its own.
- Layout
Text Style - A box’s text style once inherited: what its text draws with. Lengths are fractions of the picture’s shorter side.
- Limiter
- Final peak limiter placed at the end of the master bus.
- Master
Audio - Project-wide master bus settings.
- Matte
- Another visual clip whose picture sets where this clip is visible.
- Media
Fingerprint - Evidence of a source’s media, each part recorded only when it was known.
- Media
Source - A host-resolved media resource.
- Merge
Layer - One layer of a
NodeOp::Merge. - NodeId
- A stable identifier of a node within one composition graph. It has no
/, which joins the IDs of the group and media nodes a step was drawn through. - Path
- One or more subpaths.
- Path
Geometry - A path, animated as one value.
- Path
Vertex - A path vertex and its tangents. The segment from vertex
ato vertexbis the cubic Bezier througha.point,a.point + a.out_tangent,b.point + b.in_tangent, andb.point; zero tangents make it straight. - Point
Keyframe - One keyframe of an
AnimatedPoint. - Polystar
Geometry - A regular polygon or a star, its first point straight up from the centre before rotation, the rest clockwise.
- Project
- A complete serializable project document.
- Project
Id - A stable project identifier.
- Project
Settings - Output-wide settings independent of a renderer or encoder.
- Rectangle
Geometry - A rectangle about its centre, turned clockwise about it. Its outline starts at the top-right corner and runs clockwise.
- Rgb
- An opaque color as a color picker shows it: straight, sRGB-encoded components in the inclusive unit interval.
- Rgba
- A straight (not premultiplied), sRGB-encoded color with alpha, each
component in
0..=1. - Shape
Issue - Where in a content tree a problem lies, and what it is.
- Shape
Mask - A shape that limits where a clip is visible.
- Shape
Transform - A group’s placement: in pixel space, translate by
position, rotate, scale, and translate by minusanchor, soanchorlands onposition. The default leaves its items where they are. - Stream
Topology - The streams a media file carries.
- Stroke
Item - A stroke along geometry, centred on its outline.
- Subpath
- A run of vertices joined by cubic Bezier segments.
- Text
Background - A box behind each line of text.
- Text
Outline - A band around the glyphs, drawn behind them.
- Text
Style - How text looks and where it lies: a caption track’s cues, or a text
crate::Generator. - Time
Scale - A positive rational rate of one time against another.
- Timeline
- Timeline tracks ordered from back to front for visual tracks.
- Track
- A homogeneous visual or audio timeline lane.
- Track
Audio - Per-track audio bus controls.
- TrackId
- A stable timeline-track identifier.
- Track
List - A grid track list, as
grid_template_columnswrites it in CSS:"1fr 2fr 120px","repeat(3, minmax(100px, 1fr))","repeat(auto-fill, 160px)". Named lines are not supported. - Trim
Item - Keeps a span of geometry’s length.
- Vec2
- A two-dimensional value in normalized output coordinates.
- Video
Stream Shape - A video stream’s displayed size and frame rate.
- Visual
Properties - Resolution-independent visual presentation controls for a clip.
Enums§
- Align
Content - Where the lines of a wrapping flex container, or a grid’s rows, lie across the container.
- Align
Items - Where children lie across a flex container’s main axis, or in their grid areas.
- Animated
- A value that is either constant or controlled by sorted keyframes.
- Animated
Point - A position that can move along curves between its keyframes.
- Audio
Effect - A serializable single-input audio effect applied to a clip or track bus.
- Blend
Space - The color space in which blend modes are evaluated.
- Cache
Intent - Whether a runtime may keep and reuse a clip’s rendered picture.
- Caption
Import Error - Why a file is not a subtitle file at all.
- Clip
Blend Mode - Artistic blend operation stored independently from a renderer implementation.
- Display
- How a box lays its children out.
- Easing
- A timing curve from linear progress to eased progress, without a hold.
- Effect
Resource Kind - Portable effect-resource categories supported by the render ABI.
- Effect
Value - Serializable value supplied to one runtime effect parameter.
- EqBand
Kind - The filter shape of one equalizer band.
- Fade
Shape - Curve applied by a clip’s fade in and fade out.
- Fill
Rule - Which regions of a path are inside it.
- Flex
Direction - The main axis of a flex container.
- Flex
Wrap - Whether a flex container’s children wrap.
- Generator
- The picture of a generated source.
- Generator
Issue - Why a generator is invalid.
- Grid
Auto Flow - How a grid places items that have no placement of their own.
- Grid
Edge - One edge of a grid item’s placement.
- HdrSources
- What a project does with HDR sources.
- Interpolation
- Interpolation from one keyframe to the next.
- Justify
Content - Where children lie along a container’s main axis, or a grid’s columns in it.
- Layout
Length - A layout length that may be a percent: a size or an inset side.
- Layout
Problem - Why a layout tree is invalid.
- Layout
Size - A layout length that may not be a percent: a gap, a radius, a border width, a font size, a padding or margin side, a translation.
- LineCap
- How an open stroke ends.
- Line
Join - How stroke segments meet at a vertex.
- Linear
Primaries - Named RGB primaries linear-light media may be in, each with its own white point.
- Lint
Edge - The end of a range a
LintIssueis about. - Lint
Issue - Something in a project that is valid but probably not meant.
- Lint
Owner - What a
LintIssueis about. - Loop
Mode - How each pass of a
TimeMap::Loopfollows the one before. - Mask
Mode - How a mask combines with the coverage of the masks before it.
- Matte
Mode - Which property of the matte clip’s picture is coverage.
- Media
Kind - The payload domain of a source.
- Missing
Frames - How an image sequence shows a frame missing from its numbering.
- Model
Error - A document invariant violation.
- Node
Input - One named input of a node, as a node’s inputs are listed.
- NodeOp
- The operation of a
CompositionNode. - Overflow
- Whether content past a box’s padding box is drawn.
- Paint
- A color or gradient.
- Polystar
Kind - What kind of figure a polystar is.
- Position
- Whether a box is in its parent’s flow.
- Project
Load Error - Failure while decoding a serialized project document.
- Provider
Source - A source whose media an extension provider supplies, rather than the host’s video and image decoders.
- Repeat
Count - How often
repeat()repeats its tracks. - Shape
Geometry - A geometry alone, as a mask’s outline is.
- Shape
Item - One entry of a shapes generator’s content tree.
- Shape
Lint Owner - The shapes or layout generator a shape
LintIssueis about. - Shape
Owner - What holds a shape or a layout a
ModelError::InvalidShapeorModelError::InvalidLayoutnames. - Shape
Problem - Why a content tree or a mask outline is invalid.
- Spread
- What a linear or radial gradient shows outside its first and last stops.
- Text
Align - How lines of text align within it.
- TimeMap
- How a clip plays its source range over its timeline range.
- Track
Breadth - How large a grid track may be at least or at most: one side of
minmax(). - Track
Component - One entry of a track list: a track, or
repeat()of some. - Track
Kind - The media domain accepted by a track.
- Track
Size - The size of one grid track.
- Trim
Mode - What a trim measures.
Constants§
- AUDIO_
EFFECT_ STATE_ MARGIN_ MS - How long before its start, beyond the lookahead of its track’s and its own compressors, a clip’s effects are counted as holding state, in milliseconds. A mixer builds a clip’s effects for the blocks that mix the clip and drops them for the first that does not; it reads a clip early by the lookahead after it, and one block of the largest size at the lowest project rate, with the rounding of each lookahead to samples, is within this margin. A clip’s effects count until its end.
- CURRENT_
SCHEMA_ VERSION - The newest project-document schema understood by this build.
- EQ_
FREQUENCY_ RANGE_ HZ - The frequencies an EQ band may name, in hertz: from 10 Hz to just under the Nyquist frequency of the highest project rate. A band renders at most at 0.49 times the project’s own rate, so a band above that limit of the project it is in sounds at the limit.
- EQ_
Q_ RANGE - The resonances an EQ band renders.
- HDR_
PEAK_ NITS_ RANGE - Supported
ColorPipeline::hdr_peak_nits: SDR white to PQ’s ceiling. - LAYOUT_
TEXT_ DEFAULTS - The initial text style: what the root inherits.
- LINE_
HEIGHT_ RANGE - The line heights text takes, as multiples of the font size.
- LOOP_
FADE_ SECONDS - How long sound fades out before, and in after, each wrap of a repeating loop.
- MAX_
AUDIO_ DELAY_ MS - Most audio a project’s effects hold in delay lines at once, in
milliseconds, summed over the effects
MAX_AUDIO_EFFECTScounts then: a compressor holds itslookahead_ms, a reverbREVERB_DELAY_MS. At the highest project rate this is under 100 MB of state. - MAX_
AUDIO_ EFFECTS - Most audio effects a project holds state for at once: its master’s, its
tracks’, and those of the clips holding state then (see
AUDIO_EFFECT_STATE_MARGIN_MS). An equalizer is one effect, whatever its bands. - MAX_
CANVAS_ DIMENSION - Largest canvas edge accepted by the portable project model.
- MAX_
CANVAS_ PIXELS - Largest total canvas area accepted before quality scaling.
- MAX_
CAPTION_ FILE_ BYTES - The largest subtitle file read, in bytes: a project document’s limit. A cue’s JSON is longer than its subtitle block, so a larger file holds more cues than a project can.
- MAX_
CAPTION_ FILE_ CUES - The most cues read from one subtitle file: a day of continuous captions at a cue every 1.3 s, and far more than a feature film’s few thousand.
- MAX_
CAPTION_ FONT_ SIZE - Largest caption font size, as a fraction of the frame’s height.
- MAX_
CHAIN_ EFFECTS - Most effects one chain holds: a clip’s, a track’s, or the master’s.
- MAX_
CLIPS - Maximum number of clips across one project, and of sources in it.
- MAX_
CLIPS_ PER_ TRACK - Maximum number of clips on one track.
- MAX_
CLIP_ MASKS - Most shape masks on one clip.
- MAX_
COMPOSITIONS - Most compositions in one project.
- MAX_
COMPOSITION_ CONTROLS - Most controls a composition exposes as a group.
- MAX_
COMPOSITION_ DEPTH - Deepest nesting of compositions: a composition that draws no other has depth one, and one that draws others, through group nodes or composition-source media nodes, is one deeper than the deepest of them. Drawing a composition recurses once per level.
- MAX_
COMPOSITION_ NODES - Most nodes in one composition.
- MAX_
COMPRESSOR_ RATIO - Largest compressor ratio.
- MAX_
DASH_ ENTRIES - Most entries in a stroke’s dash pattern.
- MAX_
EFFECT_ INPUTS - The most named inputs an effect node gives its effect: what an effect definition may declare.
- MAX_
ENVELOPE_ MS - Longest attack or release time, in milliseconds.
- MAX_
EQ_ BANDS - Most bands one equalizer holds.
- MAX_
EQ_ GAIN_ DB - Largest peaking gain, in decibels either way, an EQ band renders.
- MAX_
FONT_ FAMILY_ BYTES - Most bytes in a text style’s font family name.
- MAX_
FRAME_ INLINED_ NODES - Most composition nodes the clips on the timeline at one instant draw
together: each clip counts the nodes its composition and its composition
source draw once inlined, as
MAX_INLINED_NODEScounts them, and a clip showing neither counts none.MAX_INLINED_NODESbounds what the compositions compile to however often they are used; this bounds what their uses draw in one frame, so a frame never draws more than one composition of the largest size the project may hold. - MAX_
GAIN - Largest linear amplitude accepted by any authored gain.
- MAX_
GRADIENT_ STOPS - Most stops in one gradient.
- MAX_
GRID_ TRACKS - Most explicit tracks on one axis of a grid,
repeat()counts expanded. - MAX_
GROUP_ INPUTS - Most inputs a composition takes as a group.
- MAX_
INLINED_ NODES - Most nodes the project’s compositions draw, summed over every composition: each node counts one, except a group node or a media node reading a composition source, which counts the nodes of the composition it draws. A composition is inlined wherever it is drawn, so this bounds what compiling the compositions makes, however their uses multiply.
- MAX_
LAYOUT_ DEPTH - Deepest nesting of one layout tree; the root is depth 1.
- MAX_
LAYOUT_ FONT_ SIZE - Largest font size of a layout’s text, as a fraction of the picture’s shorter side.
- MAX_
LAYOUT_ ISOLATED - Most isolated nodes (with a visual field or hidden overflow) in one layout tree.
- MAX_
LAYOUT_ NODES - Most nodes in one layout tree, the root included.
- MAX_
LAYOUT_ TEXTS - Most nodes with text in one layout tree.
- MAX_
LOOKAHEAD_ MS - Longest compressor lookahead, in milliseconds.
- MAX_
LOTTIE_ DOCUMENT_ BYTES - Largest Lottie animation a provider reads, in bytes: a Lottie JSON file, or the animation a dotLottie package unpacks to. A Lottie document is parsed whole, to as much as about 45 times its size at its densest (numbers alone), so a larger one is refused before it is parsed, and a host refuses a larger file before reading it. Within it, a document parses to at most about 750 MiB.
- MAX_
MERGE_ LAYERS - Most layers in one merge node.
- MAX_
PATH_ SUBPATHS - Most subpaths one path holds.
- MAX_
PATH_ VERTICES - Most vertices one path holds, over all its subpaths.
- MAX_
POLYSTAR_ POINTS - Most points a polystar has. A fractional count is valid; its fraction is dropped when drawn.
- MAX_
PROJECT_ JSON_ BYTES - Largest project document accepted by
Project::from_json. - MAX_
PROVIDER_ DOCUMENT_ BYTES - Largest dotLottie package a provider reads, in bytes. A package is read
whole, and only the files a source shows are unpacked from it: its
animation, within
MAX_LOTTIE_DOCUMENT_BYTES, and that animation’s images. A larger file is refused before it is read. - MAX_
SEQUENCE_ FRAMES - Most frames an image sequence lists.
- MAX_
SHAPE_ DEPTH - Deepest group nesting in one shapes generator.
- MAX_
SHAPE_ ITEMS - Most items one shapes generator holds, nested groups and their items included.
- MAX_
SVG_ DOCUMENT_ BYTES - Largest SVG document a provider reads, in bytes. An SVG document is parsed whole, to as much as about 30 times its size at its densest (elements alone), so a larger one is refused before it is parsed, and a host refuses a larger file before reading it. Within it, a document parses to at most about 960 MiB.
- MAX_
TEXT_ CONTENT_ BYTES - Most bytes of text in one caption cue or text generator.
- MAX_
TEXT_ GENERATOR_ FONT_ SIZE - Largest font size of a text generator, as a fraction of the canvas height.
- MAX_
TEXT_ OUTLINE_ WIDTH - Widest text outline, as a fraction of the font size.
- MAX_
TEXT_ PADDING - Largest text background padding, as a fraction of the font size.
- MAX_
TRACKS - Maximum number of tracks in one project.
- MAX_
TRANSITIONS_ PER_ TRACK - Maximum number of transitions on one track.
- MIN_
LEVEL_ DB - The quietest level a compressor threshold or a ducking depth names, in decibels; both are at most 0 dB.
- MIN_
POLYSTAR_ POINTS - Fewest points a polystar has.
- REVERB_
DELAY_ MS - What one reverb counts toward
MAX_AUDIO_DELAY_MS: its comb and allpass lines hold about 157 ms of audio at any rate. - SAMPLE_
RATE_ RANGE - Supported project audio sample-rate interval.
Functions§
- caption_
rows - Splits cues onto rows, each row a caption track’s worth: every cue goes
to the first row that has room for another cue (a track holds
MAX_CLIPS_PER_TRACK) and whose last cue has ended by its start. - parse_
srt - Reads SubRip (
.srt) text. - parse_
webvtt - Reads WebVTT (
.vtt) text.NOTE,STYLE, andREGIONblocks are ignored. - validate_
shape_ items - Checks a content tree: its limits, every value’s range, and that animated paths and paints agree in structure between keyframes.