ffmpeg_next_crossfix/codec/
threading.rs

1use ffi::*;
2use libc::c_int;
3
4#[derive(Eq, PartialEq, Clone, Copy, Debug)]
5pub struct Config {
6    pub kind: Type,
7    pub count: usize,
8    pub safe: bool,
9}
10
11impl Config {
12    pub fn kind(value: Type) -> Self {
13        Config {
14            kind: value,
15            ..Default::default()
16        }
17    }
18
19    pub fn count(value: usize) -> Self {
20        Config {
21            count: value,
22            ..Default::default()
23        }
24    }
25
26    pub fn safe(value: bool) -> Self {
27        Config {
28            safe: value,
29            ..Default::default()
30        }
31    }
32}
33
34impl Default for Config {
35    fn default() -> Self {
36        Config {
37            kind: Type::None,
38            count: 0,
39            safe: false,
40        }
41    }
42}
43
44#[derive(Eq, PartialEq, Clone, Copy, Debug)]
45pub enum Type {
46    None,
47    Frame,
48    Slice,
49}
50
51impl From<c_int> for Type {
52    fn from(value: c_int) -> Type {
53        match value {
54            FF_THREAD_FRAME => Type::Frame,
55            FF_THREAD_SLICE => Type::Slice,
56
57            _ => Type::None,
58        }
59    }
60}
61
62impl From<Type> for c_int {
63    fn from(value: Type) -> c_int {
64        match value {
65            Type::None => 0,
66            Type::Frame => FF_THREAD_FRAME,
67            Type::Slice => FF_THREAD_SLICE,
68        }
69    }
70}