use std::path::Path;
use rff_core::Result;
pub use rff_targets::{
format_matrix, is_lossless, matrix_to_json, readable_extensions, Action, DropReason, Fidelity,
FormatSupport, Plan, SourceStream, StreamPlan, Target, TargetKind,
};
use crate::Engine;
pub fn targets(engine: &Engine, path: impl AsRef<Path>) -> Result<Plan> {
let info = crate::probe::probe(engine, path)?;
let mut plan = for_streams(
engine,
&info
.streams
.iter()
.map(|s| SourceStream::new(s.index, s.media_type, s.codec_id))
.collect::<Vec<_>>(),
);
plan.source_format = Some(info.format_name);
Ok(plan)
}
pub fn for_streams(engine: &Engine, source: &[SourceStream]) -> Plan {
rff_targets::plan(&engine.codecs, &engine.formats, source)
}
pub fn matrix(engine: &Engine) -> Vec<FormatSupport> {
format_matrix(&engine.formats)
}