1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
use std::convert::TryFrom;
use ffi::*;
use libc::c_int;
#[derive(Eq, PartialEq, Clone, Copy, Debug)]
pub enum Level {
Quiet,
Panic,
Fatal,
Error,
Warning,
Info,
Verbose,
Debug,
Trace,
}
pub struct LevelError;
impl TryFrom<c_int> for Level {
type Error = &'static str;
fn try_from(value: c_int) -> Result<Self, &'static str> {
match value {
AV_LOG_QUIET => Ok(Level::Quiet),
AV_LOG_PANIC => Ok(Level::Panic),
AV_LOG_FATAL => Ok(Level::Fatal),
AV_LOG_ERROR => Ok(Level::Error),
AV_LOG_WARNING => Ok(Level::Warning),
AV_LOG_INFO => Ok(Level::Info),
AV_LOG_VERBOSE => Ok(Level::Verbose),
AV_LOG_DEBUG => Ok(Level::Debug),
AV_LOG_TRACE => Ok(Level::Trace),
_ => Err("illegal log level"),
}
}
}
impl From<Level> for c_int {
fn from(value: Level) -> c_int {
match value {
Level::Quiet => AV_LOG_QUIET,
Level::Panic => AV_LOG_PANIC,
Level::Fatal => AV_LOG_FATAL,
Level::Error => AV_LOG_ERROR,
Level::Warning => AV_LOG_WARNING,
Level::Info => AV_LOG_INFO,
Level::Verbose => AV_LOG_VERBOSE,
Level::Debug => AV_LOG_DEBUG,
Level::Trace => AV_LOG_TRACE,
}
}
}