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