tellers-timeline-core 0.1.0

An OpenTimelineIO timeline engine with policy-driven editing, sync, sanitization, and effect conventions.
Documentation
use thiserror::Error;

use crate::Timeline;

#[derive(Debug, Error)]
pub enum ValidationError {
    #[error("negative duration for an item")]
    NegativeDuration,
}

pub fn validate_timeline(tl: &Timeline) -> Vec<ValidationError> {
    let mut errors = Vec::new();

    for track in &tl.tracks.children {
        for item in &track.items {
            if item.duration() < 0.0 {
                errors.push(ValidationError::NegativeDuration);
            }
        }
    }

    errors
}