ffmpeg_next_crossfix/codec/
threading.rs1use 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}