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 its 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 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 group nodes: 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 reachable from its output, following group nodes into their compositions. A group node needs only the ports its composition reads, so unread ports may be left unconnected.
- 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 CSS
grid_columnwrites it:2,"1 / 3","span 2","2 / span 3","auto". A missing end isauto. - Import
Notes - What an import read but could not keep, counted.
- Imported
Captions - Cues read from a subtitle file.
- Insets
- A length on each side of a box (padding or 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 flow position 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. A shape box has no size of its own.
- Layout
Text Style - A box’s text style once inherited. 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 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
atobis the cubic Bezier througha.point,a.point + a.out_tangent,b.point + b.in_tangentandb.point; zero tangents make it straight. - Point
Keyframe - One keyframe of an
AnimatedPoint. - Polystar
Geometry - A regular polygon or 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
0..=1. - Rgba
- A straight (not premultiplied), sRGB-encoded color with alpha, each component in
0..=1. - RunTime
- A run’s time span.
- 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, then translate by minusanchor, soanchorlands onposition. The default is identity. - 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
Animator - One animator: what it selects, and what it does to what it selects.
- Text
Animator Properties - What an animator does to each character, in proportion to its selection. A property left out does nothing.
- Text
Background - A box behind each line of text.
- TextRun
- A piece of a text that animators’ Class and Timing selectors can pick.
- Text
Shadow - A shadow of a text’s glyphs and strokes, behind them.
- Text
Stroke - A band around the glyphs and the strokes listed before it, drawn behind them.
- Text
Style - How text looks and where it lies, for caption cues or a text
crate::Generator. - Text
Style Patch - Changes to a
TextStyle. Each field set replaces the base’s whole value (lists are not merged); a field left out keeps the base’s. - 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 CSS writes it:
"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 - Blend mode, from W3C Compositing and Blending Level 1 (CSS
mix-blend-mode) with the specification’s formulas, plusplus-lighterfrom Level 2. - 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, radius, border width, font size, padding or margin side, or 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 instead of the host’s video and image decoders.
- Range
Shape - How selection rises and falls across a Range selector’s range.
- Range
Units - What a Range selector’s start, end and offset count in.
- Repeat
Count - How often
repeat()repeats its tracks. - RunState
- Which runs a Timing selector selects.
- 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 the shape or 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.
- Text
Content - A text: one string, or runs whose texts joined are the text.
- Text
Selector - How an animator selects characters.
- Text
Unit - The units a Range selector counts.
- TimeMap
- How a clip plays its source range over its timeline range.
- Track
Breadth - One side of
minmax(): how large a grid track may be at least or at most. - 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§
- ANIMATOR_
SCALE_ RANGE - The range an animator’s scale takes on each axis.
- AUDIO_
EFFECT_ STATE_ MARGIN_ MS - How long before its start, beyond its track’s and its own compressor lookahead, a clip’s effects count as holding state, in milliseconds. This covers one block of the largest size at the lowest project rate plus per-lookahead sample rounding. Effects count until the clip’s 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: 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 rate, so a higher band sounds at that limit.
- EQ_
Q_ RANGE - The resonances an EQ band renders.
- FONT_
WEIGHT_ RANGE - The font weights text takes, as CSS
font-weightnumbers. - 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.
- LETTER_
SPACING_ RANGE - The letter spacings text takes, as fractions of the font size.
- 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 held in effect delay lines at once, in milliseconds, summed over the effects
MAX_AUDIO_EFFECTScounts (a compressor’slookahead_ms, a reverb’sREVERB_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: the master’s, the tracks’, and
those of clips holding state then (see
AUDIO_EFFECT_STATE_MARGIN_MS). An equalizer is one effect regardless of 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 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 one cue every 1.3 s.
- MAX_
CAPTION_ FONT_ SIZE - Largest caption font size, as a fraction of the frame’s shorter side.
- MAX_
CAPTION_ NAME_ BYTES - Most bytes of a caption style’s name or a cue’s speaker.
- MAX_
CAPTION_ STYLES - Most named styles one caption track holds.
- MAX_
CHAIN_ EFFECTS - Most effects one chain holds: a clip’s, a track’s, or the master’s.
- MAX_
CLASS_ NAME_ BYTES - Most bytes of one class name.
- 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; one that draws others (via group nodes or composition-source media nodes) is one deeper than the deepest of them.
- 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, matching 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 at one instant draw together, each clip counted as
MAX_INLINED_NODEScounts its composition and composition source. This bounds per-frame work to one composition of the largest allowed size. - 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 in total. Each node counts one, except a group node or composition-source media node, which counts the nodes of the composition it draws. This bounds compile cost however 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 JSON file or an unpacked dotLottie animation). Parsing can take about 45 times the document size, so this caps it near 750 MiB; larger documents are refused before parsing.
- 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; the 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. Only the shown animation (within
MAX_LOTTIE_DOCUMENT_BYTES) and its images are unpacked. Larger files are refused before reading. - MAX_
RANGE_ INDEX - How far a Range selector in index units reaches past either end:
[-N, 2N]units forNof this. - MAX_
RUN_ CLASSES - Most classes one run carries.
- 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, including nested groups and their items.
- MAX_
SVG_ DOCUMENT_ BYTES - Largest SVG document a provider reads, in bytes. Parsing can take about 30 times the document size, so this caps it near 960 MiB; larger documents are refused before parsing.
- MAX_
TEXT_ ANIMATORS - Most animators one text style holds.
- 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’s shorter side.
- MAX_
TEXT_ PADDING - Largest text background padding, as a fraction of the font size.
- MAX_
TEXT_ RUNS - Most runs one text holds.
- MAX_
TEXT_ SHADOWS - Most shadows under one text.
- MAX_
TEXT_ SHADOW_ BLUR - Widest text shadow blur, as a fraction of the font size.
- MAX_
TEXT_ SHADOW_ OFFSET - Farthest a text shadow lies from its text on each axis, as a fraction of the font size.
- MAX_
TEXT_ STROKES - Most strokes around one text.
- MAX_
TEXT_ STROKE_ EXTENT - Widest a text’s strokes reach together (the sum of their widths), 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 compressor threshold or ducking depth, in decibels; both are at most 0 dB.
- MIN_
POLYSTAR_ POINTS - Fewest points a polystar has.
- RANGE_
PERCENT - The range a percent Range selector’s start, end and offset take.
- REVERB_
DELAY_ MS - What one reverb counts toward
MAX_AUDIO_DELAY_MS; its comb and allpass lines hold about 157 ms at any rate. - SAMPLE_
RATE_ RANGE - Supported project audio sample-rate interval.
Functions§
- caption_
rows - Splits cues onto rows, one caption track each. Every cue goes to the first row with room
(a track holds
MAX_CLIPS_PER_TRACK) whose last cue has ended by its start. O(n log n) in the cues, however many overlap. - parse_
srt - Reads SubRip (
.srt) text. - parse_
webvtt - Reads WebVTT (
.vtt) text.NOTE,STYLE, andREGIONblocks are ignored. - valid_
class_ name - Whether
nameis a class name a run or a Class selector may carry. - validate_
shape_ items - Checks a content tree: its limits, every value’s range, and that animated paths and paints agree in structure between keyframes.