Skip to main content

Crate alpha2_model

Crate alpha2_model 

Source
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§

AudioEffectLoad
The most audio effect state a project holds at once.
AudioProperties
Per-clip audio presentation controls.
AudioStreamShape
An audio stream’s channel count and sample rate.
CaptionCue
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.
ClipComposition
A clip’s use of a Composition, and how its time maps onto it.
ClipEffect
One versioned effect invocation: a composition’s effect or transition node, or a timeline transition.
ClipId
A stable timeline-clip identifier.
ClipTransition
A two-input transition over the overlap of two visual clips.
ColorPipeline
How sources’ colors come into the working space.
Composition
An acyclic graph of image operations with one selected output.
CompositionControl
A node setting a composition exposes to group nodes: an effect or transition parameter of one of its nodes.
CompositionId
A stable composition-graph identifier.
CompositionNode
One image operation in a Composition.
CompositionReads
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.
CubicBezier
A CSS cubic-bezier(x1, y1, x2, y2) timing curve.
Dash
A dash pattern.
Ducking
Sidechain ducking authored on the track that is attenuated.
EffectResource
Host-resolved, non-media data consumed by one or more visual effects.
EffectResourceId
A stable effect-resource identifier.
EllipseGeometry
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.
GradientStop
One color of a gradient.
GridPlacement
Where a grid item lies on one axis, as CSS grid_column writes it: 2, "1 / 3", "span 2", "2 / span 3", "auto". A missing end is auto.
ImportNotes
What an import read but could not keep, counted.
ImportedCaptions
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.
LayoutBorder
A border inside the border box, as wide on every side.
LayoutInset
Where an absolute box lies in its parent’s padding box. A missing side is auto; with neither left nor right, the box keeps its flow position on that axis.
LayoutIssue
Where in a layout tree a problem lies, and what it is.
LayoutNode
One box of a layout tree.
LayoutOffset
A box’s offset after layout: x right, y down.
LayoutShape
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.
LayoutTextStyle
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.
MasterAudio
Project-wide master bus settings.
Matte
Another visual clip whose picture sets where this clip is visible.
MediaFingerprint
Evidence of a source’s media, each part recorded only when known.
MediaSource
A host-resolved media resource.
MergeLayer
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.
PathGeometry
A path, animated as one value.
PathVertex
A path vertex and its tangents. The segment from a to b is the cubic Bezier through a.point, a.point + a.out_tangent, b.point + b.in_tangent and b.point; zero tangents make it straight.
PointKeyframe
One keyframe of an AnimatedPoint.
PolystarGeometry
A regular polygon or star, its first point straight up from the centre before rotation, the rest clockwise.
Project
A complete serializable project document.
ProjectId
A stable project identifier.
ProjectSettings
Output-wide settings independent of a renderer or encoder.
RectangleGeometry
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.
ShapeIssue
Where in a content tree a problem lies, and what it is.
ShapeMask
A shape that limits where a clip is visible.
ShapeTransform
A group’s placement. In pixel space: translate by position, rotate, scale, then translate by minus anchor, so anchor lands on position. The default is identity.
StreamTopology
The streams a media file carries.
StrokeItem
A stroke along geometry, centred on its outline.
Subpath
A run of vertices joined by cubic Bezier segments.
TextAnimator
One animator: what it selects, and what it does to what it selects.
TextAnimatorProperties
What an animator does to each character, in proportion to its selection. A property left out does nothing.
TextBackground
A box behind each line of text.
TextRun
A piece of a text that animators’ Class and Timing selectors can pick.
TextShadow
A shadow of a text’s glyphs and strokes, behind them.
TextStroke
A band around the glyphs and the strokes listed before it, drawn behind them.
TextStyle
How text looks and where it lies, for caption cues or a text crate::Generator.
TextStylePatch
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.
TimeScale
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.
TrackAudio
Per-track audio bus controls.
TrackId
A stable timeline-track identifier.
TrackList
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.
TrimItem
Keeps a span of geometry’s length.
Vec2
A two-dimensional value in normalized output coordinates.
VideoStreamShape
A video stream’s displayed size and frame rate.
VisualProperties
Resolution-independent visual presentation controls for a clip.

Enums§

AlignContent
Where the lines of a wrapping flex container, or a grid’s rows, lie across the container.
AlignItems
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.
AnimatedPoint
A position that can move along curves between its keyframes.
AudioEffect
A serializable single-input audio effect applied to a clip or track bus.
BlendSpace
The color space in which blend modes are evaluated.
CacheIntent
Whether a runtime may keep and reuse a clip’s rendered picture.
CaptionImportError
Why a file is not a subtitle file at all.
ClipBlendMode
Blend mode, from W3C Compositing and Blending Level 1 (CSS mix-blend-mode) with the specification’s formulas, plus plus-lighter from Level 2.
Display
How a box lays its children out.
Easing
A timing curve from linear progress to eased progress, without a hold.
EffectResourceKind
Portable effect-resource categories supported by the render ABI.
EffectValue
Serializable value supplied to one runtime effect parameter.
EqBandKind
The filter shape of one equalizer band.
FadeShape
Curve applied by a clip’s fade in and fade out.
FillRule
Which regions of a path are inside it.
FlexDirection
The main axis of a flex container.
FlexWrap
Whether a flex container’s children wrap.
Generator
The picture of a generated source.
GeneratorIssue
Why a generator is invalid.
GridAutoFlow
How a grid places items that have no placement of their own.
GridEdge
One edge of a grid item’s placement.
HdrSources
What a project does with HDR sources.
Interpolation
Interpolation from one keyframe to the next.
JustifyContent
Where children lie along a container’s main axis, or a grid’s columns in it.
LayoutLength
A layout length that may be a percent: a size or an inset side.
LayoutProblem
Why a layout tree is invalid.
LayoutSize
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.
LineJoin
How stroke segments meet at a vertex.
LinearPrimaries
Named RGB primaries linear-light media may be in, each with its own white point.
LintEdge
The end of a range a LintIssue is about.
LintIssue
Something in a project that is valid but probably not meant.
LintOwner
What a LintIssue is about.
LoopMode
How each pass of a TimeMap::Loop follows the one before.
MaskMode
How a mask combines with the coverage of the masks before it.
MatteMode
Which property of the matte clip’s picture is coverage.
MediaKind
The payload domain of a source.
MissingFrames
How an image sequence shows a frame missing from its numbering.
ModelError
A document invariant violation.
NodeInput
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.
PolystarKind
What kind of figure a polystar is.
Position
Whether a box is in its parent’s flow.
ProjectLoadError
Failure while decoding a serialized project document.
ProviderSource
A source whose media an extension provider supplies instead of the host’s video and image decoders.
RangeShape
How selection rises and falls across a Range selector’s range.
RangeUnits
What a Range selector’s start, end and offset count in.
RepeatCount
How often repeat() repeats its tracks.
RunState
Which runs a Timing selector selects.
ShapeGeometry
A geometry alone, as a mask’s outline is.
ShapeItem
One entry of a shapes generator’s content tree.
ShapeLintOwner
The shapes or layout generator a shape LintIssue is about.
ShapeOwner
What holds the shape or layout a ModelError::InvalidShape or ModelError::InvalidLayout names.
ShapeProblem
Why a content tree or a mask outline is invalid.
Spread
What a linear or radial gradient shows outside its first and last stops.
TextAlign
How lines of text align within it.
TextContent
A text: one string, or runs whose texts joined are the text.
TextSelector
How an animator selects characters.
TextUnit
The units a Range selector counts.
TimeMap
How a clip plays its source range over its timeline range.
TrackBreadth
One side of minmax(): how large a grid track may be at least or at most.
TrackComponent
One entry of a track list: a track, or repeat() of some.
TrackKind
The media domain accepted by a track.
TrackSize
The size of one grid track.
TrimMode
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-weight numbers.
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_EFFECTS counts (a compressor’s lookahead_ms, a reverb’s REVERB_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_NODES counts 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 for N of 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, and REGION blocks are ignored.
valid_class_name
Whether name is 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.