audio_video_metadata/
types.rs

1use std::default::Default;
2use std::time::Duration;
3use {AudioType, VideoType};
4
5#[derive(Clone, Debug, PartialEq)]
6pub struct Size {
7    pub width: u32,
8    pub height: u32,
9}
10
11impl Default for Size {
12    fn default() -> Size {
13        Size {
14            width: 0,
15            height: 0,
16        }
17    }
18}
19
20#[derive(Clone, Debug, PartialEq)]
21pub enum Error {
22    FileError,
23    UnknownFormat,
24    CostumError(String),
25}
26
27impl Error {
28    // We can't use std::error::Error, because it'd require a borrowed string we
29    // can't provide.
30    pub fn error_description(&self) -> String {
31        match self {
32            &Error::FileError => "FileError".to_owned(),
33            &Error::UnknownFormat => "UnknownFormat".to_owned(),
34            &Error::CostumError(ref e) => e.clone(),
35        }
36    }
37}
38
39#[derive(Clone, Debug, PartialEq)]
40pub struct AudioMetadata {
41    pub format: AudioType,
42    pub duration: Option<Duration>,
43    pub audio: Option<String>,
44}
45
46impl Default for AudioMetadata {
47    fn default() -> AudioMetadata {
48        AudioMetadata {
49            format: AudioType::Unknown,
50            duration: None,
51            audio: None,
52        }
53    }
54}
55
56#[derive(Clone, Debug, PartialEq)]
57pub struct VideoMetadata {
58    pub audio: AudioMetadata,
59    pub dimensions: Size,
60    pub format: VideoType,
61    pub video: Option<String>,
62}
63
64impl Default for VideoMetadata {
65    fn default() -> VideoMetadata {
66        VideoMetadata {
67            audio: Default::default(),
68            dimensions: Default::default(),
69            format: VideoType::Unknown,
70            video: None,
71        }
72    }
73}