pub struct ScenePlacement {Show 15 fields
pub source: SceneSource,
pub offset: Duration,
pub in_point: Duration,
pub out_point: Option<Duration>,
pub speed: f64,
pub xfade_dur: Duration,
pub xfade_kind: Option<XfadeTransition>,
pub video_handle: Duration,
pub opacity: f32,
pub layer: RealtimeLayerDescriptor,
pub fade_in: Duration,
pub fade_out: Duration,
pub volume: AnimatedValue<f64>,
pub pitch: f64,
pub pan: AnimatedValue<f64>,
}Expand description
One video clip placed on the timeline.
Fields are pre-resolved model projections (e.g. in_point defaulted, speed
clamped, xfade_dur computed); media-dependent resolution (the effective
clip duration when out_point is None) is done by the runner at open time.
Fields§
§source: SceneSourceVideo source: a media file, or a generated (solid/text) source.
offset: DurationGlobal timeline position where this placement starts.
in_point: DurationSource-file PTS at which playback starts (Clip::in_point, defaulted to zero).
out_point: Option<Duration>Source-file PTS at which playback ends (None = play to EOF).
speed: f64Playback speed multiplier (1.0 = normal), clamped to at least 0.01.
xfade_dur: DurationCrossfade duration from the previous placement into this one. Meaningful on
the V1 base track only; Duration::ZERO = hard cut.
xfade_kind: Option<XfadeTransition>The xfade transition kind for this crossfade (V1 base track only). None
when there is no transition; the runner defaults to Fade if a duration is
set without a kind.
video_handle: DurationHow far past out_point this placement may keep producing video, to feed
the crossfade into the next placement. Duration::ZERO = not at all.
A transition occupies the incoming placement head and blends it against these
frames, so the outgoing placement has to survive that window without being
lengthened: out_point stays where it is (it bounds this placement audio and
its timeline extent), and only the video decode runs on.
Timeline time, like xfade_dur — the runner converts to source time with
speed where it compares against a source PTS.
opacity: f32Per-clip opacity in [0.0, 1.0].
layer: RealtimeLayerDescriptorThe dimension-free compositing description (effects, blend, position, and the
opacity/position animation tracks). The runner realises it per frame via
RealtimeLayer::with_dimensions.
fade_in: DurationAudio fade-in duration (Duration::ZERO = none).
fade_out: DurationAudio fade-out duration (Duration::ZERO = none).
volume: AnimatedValue<f64>Resolved audio gain (dB), static or animated. A static value is applied once at open; an animated one is evaluated per tick.
pitch: f64Per-clip audio pitch shift in semitones (0.0 = none). A set pitch_track
is evaluated at its t=0 value (static, per ADR-0002); the preview applies
it duration-preserving, matching the export shift at the model level.
pan: AnimatedValue<f64>Resolved stereo pan (-1.0 left .. +1.0 right, 0.0 center), static or
animated. Applied once at open at its t=0 value; per-sample pan automation
is a deferred capability, so an animated pan uses its initial value (matching
the export mixer).
Trait Implementations§
Source§impl Clone for ScenePlacement
impl Clone for ScenePlacement
Source§fn clone(&self) -> ScenePlacement
fn clone(&self) -> ScenePlacement
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more