use rskit_storage::FileSource;
use serde::{Deserialize, Serialize};
use std::time::Duration;
use crate::time::{TimeRange, Timestamp};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OverlayOp {
pub source: FileSource,
pub position: OverlayPosition,
pub opacity: f32,
pub time_range: Option<TimeRange>,
pub scale: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum OverlayPosition {
TopLeft(u32, u32),
TopRight(u32, u32),
BottomLeft(u32, u32),
BottomRight(u32, u32),
Center,
Custom {
x: String,
y: String,
},
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ConcatOp {
pub source: FileSource,
pub transition: Option<Transition>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum Transition {
CrossFade(Duration),
FadeToBlack(Duration),
Cut,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ReplaceAudioOp {
pub audio_source: FileSource,
pub offset: Option<Timestamp>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MixAudioOp {
pub audio_source: FileSource,
pub volume: f64,
pub offset: Option<Timestamp>,
}