use crate::{
FfprobeCommandMediaStreamClassifier,
MediaStreamClassifier,
MimeConfig,
ProviderAvailability,
ProviderCreateError,
ProviderDescriptor,
ProviderRegistryError,
ServiceProvider,
};
use super::{
MediaStreamClassifierAvailability,
MediaStreamClassifierSpec,
};
#[derive(Debug, Clone, Copy, Default)]
pub struct FfprobeCommandMediaStreamClassifierProvider;
impl ServiceProvider<MediaStreamClassifierSpec> for FfprobeCommandMediaStreamClassifierProvider {
fn descriptor(&self) -> Result<ProviderDescriptor, ProviderRegistryError> {
let descriptor = ProviderDescriptor::new("ffprobe")
.expect("built-in FFprobe classifier provider id should be valid")
.with_aliases(&["ffprobe-command", "ffprobe-command-media-stream-classifier"])
.expect("built-in FFprobe classifier aliases should be valid")
.with_priority(10);
Ok(descriptor)
}
fn availability(&self, _config: &MimeConfig) -> MediaStreamClassifierAvailability {
ProviderAvailability::Available
}
fn create_box(
&self,
_config: &MimeConfig,
) -> Result<Box<dyn MediaStreamClassifier>, ProviderCreateError> {
Ok(Box::new(FfprobeCommandMediaStreamClassifier::new()))
}
}