qubit_mime/classifier/
ffprobe_command_media_stream_classifier_provider.rs1use crate::{
11 FfprobeCommandMediaStreamClassifier,
12 MediaStreamClassifier,
13 MimeConfig,
14 ProviderAvailability,
15 ProviderCreateError,
16 ProviderDescriptor,
17 ProviderRegistryError,
18 ServiceProvider,
19};
20
21use super::{
22 MediaStreamClassifierAvailability,
23 MediaStreamClassifierSpec,
24};
25
26#[derive(Debug, Clone, Copy, Default)]
28pub struct FfprobeCommandMediaStreamClassifierProvider;
29
30impl ServiceProvider<MediaStreamClassifierSpec>
31 for FfprobeCommandMediaStreamClassifierProvider
32{
33 fn descriptor(&self) -> Result<ProviderDescriptor, ProviderRegistryError> {
35 let descriptor = ProviderDescriptor::new("ffprobe")
36 .expect("built-in FFprobe classifier provider id should be valid")
37 .with_aliases(&[
38 "ffprobe-command",
39 "ffprobe-command-media-stream-classifier",
40 ])
41 .expect("built-in FFprobe classifier aliases should be valid")
42 .with_priority(10);
43 Ok(descriptor)
44 }
45
46 fn availability(
52 &self,
53 _config: &MimeConfig,
54 ) -> MediaStreamClassifierAvailability {
55 ProviderAvailability::Available
56 }
57
58 fn create_box(
60 &self,
61 config: &MimeConfig,
62 ) -> Result<Box<dyn MediaStreamClassifier>, ProviderCreateError> {
63 Ok(Box::new(
64 FfprobeCommandMediaStreamClassifier::from_mime_config(
65 config.clone(),
66 ),
67 ))
68 }
69}