playa_ffmpeg/util/log/
level.rs

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