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 one 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 runtime 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 the group nodes that use it: 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 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.
CubicBezier
A CSS cubic-bezier(x1, y1, x2, y2) timing curve.
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.
EqBand
A single equalizer section stored independently from its DSP implementation.
GradientStop
One color of a gradient.
ImportedCaptions
Cues read from a subtitle file.
Keyframe
One timestamped control value.
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 it was 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.
Project
A complete serializable project document.
ProjectId
A stable project identifier.
ProjectSettings
Output-wide settings independent of a renderer or encoder.
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.
ShapeMask
A shape that limits where a clip is visible.
StreamTopology
The streams a media file carries.
Stroke
A shape’s outline paint. The stroke is centred on the outline.
TextBackground
A box behind each line of text.
TextOutline
A band around the glyphs, drawn behind them.
TextStyle
How text looks and where it lies: a caption track’s cues, or a text crate::Generator.
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.
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§

Animated
A value that is either constant or controlled by sorted 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
Artistic blend operation stored independently from a renderer implementation.
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.
GeneratedShape
The outline of a Generator::Shape.
Generator
The picture of a generated source.
HdrSources
What a project does with HDR sources.
Interpolation
Interpolation from one keyframe to the next.
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.
MaskShape
The outline of a ShapeMask.
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.
Paint
A color or gradient.
ProjectLoadError
Failure while decoding a serialized project document.
ProviderSource
A source whose media an extension provider supplies, rather than the host’s video and image decoders.
Spread
What a linear or radial gradient shows outside its first and last stops.
TextAlign
How lines of text align within it.
TimeMap
How a clip plays its source range over its timeline range.
TrackKind
The media domain accepted by a track.

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.
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_EFFECTS counts then: a compressor holds its lookahead_ms, a reverb 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: 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_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_NODES counts them, and a clip showing neither counts none. MAX_INLINED_NODES bounds 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_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_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_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_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.
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, and REGION blocks are ignored.