pub mod color_palette;
pub mod content;
pub mod mood;
pub mod quality;
pub mod scene;
pub mod shot_type;
pub use color_palette::{ColorPalette, ColorPaletteExtractor, PaletteColor, PaletteConfig};
pub use content::{ContentClassifier, ContentType};
pub use mood::{MoodAnalysis, MoodAnalyzer, MoodCategory, MoodFeatures};
pub use quality::{QualityClassifier, QualityMetrics};
pub use scene::{SceneClassifier, SceneType};
pub use shot_type::{ShotClassification, ShotFeatures, ShotType, ShotTypeClassifier};
use crate::error::{SceneError, SceneResult};
pub(crate) fn validate_frame(rgb: &[u8], width: usize, height: usize) -> SceneResult<()> {
let expected = width * height * 3;
if rgb.len() != expected {
return Err(SceneError::InvalidDimensions(format!(
"Expected {} bytes for {}x{} frame, got {}",
expected,
width,
height,
rgb.len()
)));
}
Ok(())
}