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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
use libc::{c_void, c_char, c_int};
use super::opt::{AVOption, AVOptionRanges};
#[derive(Eq, PartialEq, Copy, Clone, Debug)]
#[repr(C)]
pub enum AVClassCategory {
AV_CLASS_CATEGORY_NA = 0,
AV_CLASS_CATEGORY_INPUT,
AV_CLASS_CATEGORY_OUTPUT,
AV_CLASS_CATEGORY_MUXER,
AV_CLASS_CATEGORY_DEMUXER,
AV_CLASS_CATEGORY_ENCODER,
AV_CLASS_CATEGORY_DECODER,
AV_CLASS_CATEGORY_FILTER,
AV_CLASS_CATEGORY_BITSTREAM_FILTER,
AV_CLASS_CATEGORY_SWSCALER,
AV_CLASS_CATEGORY_SWRESAMPLER,
AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40,
AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
AV_CLASS_CATEGORY_DEVICE_OUTPUT,
AV_CLASS_CATEGORY_DEVICE_INPUT,
AV_CLASS_CATEGORY_NB,
}
#[inline(always)]
pub fn AV_IS_INPUT_DEVICE(category: AVClassCategory) -> bool {
category == AVClassCategory::AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT ||
category == AVClassCategory::AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT ||
category == AVClassCategory::AV_CLASS_CATEGORY_DEVICE_INPUT
}
#[inline(always)]
pub fn AV_IS_OUTPUT_DEVICE(category: AVClassCategory) -> bool {
category == AVClassCategory::AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT ||
category == AVClassCategory::AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT ||
category == AVClassCategory::AV_CLASS_CATEGORY_DEVICE_OUTPUT
}
#[repr(C)]
pub struct AVClass {
pub class_name: *const c_char,
pub item_name: extern fn(ctx: *mut c_void) -> *const c_char,
pub option: *const AVOption,
pub version: c_int,
pub log_level_offset_offset: c_int,
pub parent_log_context_offset: c_int,
pub child_next: extern fn(obj: *mut c_void, prev: *mut c_void) -> *mut c_void,
pub child_class_next: extern fn(prev: *const AVClass) -> *const AVClass,
pub category: AVClassCategory,
pub get_category: extern fn(ctx: *mut c_void) -> AVClassCategory,
pub query_ranges: extern fn(ranges: *mut *mut AVOptionRanges, obj: *mut c_void, key: *const c_char, flags: c_int) -> c_int,
}
pub const AV_LOG_QUIET: c_int = -8;
pub const AV_LOG_PANIC: c_int = 0;
pub const AV_LOG_FATAL: c_int = 8;
pub const AV_LOG_ERROR: c_int = 16;
pub const AV_LOG_WARNING: c_int = 24;
pub const AV_LOG_INFO: c_int = 32;
pub const AV_LOG_VERBOSE: c_int = 40;
pub const AV_LOG_DEBUG: c_int = 48;
pub const AV_LOG_TRACE: c_int = 56;
pub const AV_LOG_MAX_OFFSET: c_int = (AV_LOG_DEBUG - AV_LOG_QUIET);
pub const AV_LOG_SKIP_REPEATED: c_int = 1;
pub const AV_LOG_PRINT_LEVEL: c_int = 2;
#[inline(always)]
pub fn AV_LOG_C(x: c_int) -> c_int {
x << 8
}
extern {
pub fn av_log(avcl: *mut c_void, level: c_int, fmt: *const c_char, ...);
pub fn av_log_get_level() -> c_int;
pub fn av_log_set_level(level: c_int);
pub fn av_default_item_name(ctx: *mut c_void) -> *const c_char;
pub fn av_default_get_category(ptr: *mut c_void) -> AVClassCategory;
pub fn av_log_set_flags(arg: c_int);
pub fn av_log_get_flags() -> c_int;
}