use std::path::PathBuf;
use std::time::Duration;
use ff_filter::{AnimatedValue, RealtimeLayerDescriptor, XfadeTransition};
#[derive(Debug, Clone)]
pub struct Scene {
pub fps: f64,
pub canvas: Option<(u32, u32)>,
pub lavfi_overlay: Option<String>,
pub video_tracks: Vec<SceneVideoTrack>,
pub audio_tracks: Vec<SceneAudioTrack>,
}
#[derive(Debug, Clone)]
pub struct SceneVideoTrack {
pub placements: Vec<ScenePlacement>,
}
#[derive(Debug, Clone)]
pub struct ScenePlacement {
pub source: PathBuf,
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 opacity: f32,
pub layer: RealtimeLayerDescriptor,
pub fade_in: Duration,
pub fade_out: Duration,
pub volume: AnimatedValue<f64>,
}
#[derive(Debug, Clone)]
pub struct SceneAudioTrack {
pub placements: Vec<SceneAudioPlacement>,
}
#[derive(Debug, Clone)]
pub struct SceneAudioPlacement {
pub source: PathBuf,
pub offset: Duration,
pub in_point: Duration,
pub out_point: Option<Duration>,
pub speed: f64,
pub fade_in: Duration,
pub fade_out: Duration,
pub volume: AnimatedValue<f64>,
}