Expand description
The ffcine timeline: plain OTIO JSON (Timeline.1, core schemas only), see docs/design.md.
schema has serde types for the core OTIO objects, metadata the ffcine metadata
namespace. Reading and writing a file keeps everything, including fields and schemas the
model doesn’t know (see schema for the one upgrade OTIO itself applies).
use ffcine_timeline::{Clip, ExternalReference, HasMetadata, Item, MediaReference, TimeRange,
Timeline, Track, track_kind};
let mut track = Track::new("V1", track_kind::VIDEO);
let media = MediaReference::External(ExternalReference::new("file:///a.mov", None));
let mut clip = Clip::new("a", media, Some(TimeRange::from_frames(10.0, 58.0, 24.0)));
clip.set_ffcine_id("a");
track.children.push(Item::Clip(clip));
let mut t = Timeline::default();
t.tracks.children.push(Item::Track(track));
let json = t.to_json()?;
assert_eq!(Timeline::from_json(&json)?, t);Re-exports§
pub use metadata::FFCINE;pub use metadata::FFCINE_VERSION;pub use metadata::HasMetadata;pub use place::Placed;pub use place::PlacedMarker;pub use project::BusDuck;pub use project::BusParams;pub use project::BusReverb;pub use project::BusSend;pub use project::ClipGrade;pub use project::GradeParams;pub use project::MixParams;pub use project::Output;pub use project::OutputMode;pub use project::Project;pub use project::SourceKind;pub use schema::Clip;pub use schema::DEFAULT_MEDIA_KEY;pub use schema::Effect;pub use schema::ExternalReference;pub use schema::Gap;pub use schema::GeneratorReference;pub use schema::GenericEffect;pub use schema::Item;pub use schema::LinearTimeWarp;pub use schema::Marker;pub use schema::MediaReference;pub use schema::MissingReference;pub use schema::Stack;pub use schema::Timeline;pub use schema::Track;pub use schema::Transition;pub use schema::track_kind;pub use schema::transition_type;pub use time::RationalTime;pub use time::TimeRange;