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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
use libc::{c_void, c_char, c_int, c_uint, c_float, c_double, uint8_t, int64_t}; use super::rational::AVRational; use super::dict::AVDictionary; use super::log::AVClass; use super::pixfmt::AVPixelFormat; use super::samplefmt::AVSampleFormat; pub const AV_OPT_FLAG_IMPLICIT_KEY: c_int = 1; pub const AV_OPT_FLAG_ENCODING_PARAM: c_int = 1; pub const AV_OPT_FLAG_DECODING_PARAM: c_int = 2; pub const AV_OPT_FLAG_AUDIO_PARAM: c_int = 8; pub const AV_OPT_FLAG_VIDEO_PARAM: c_int = 16; pub const AV_OPT_FLAG_SUBTITLE_PARAM: c_int = 32; pub const AV_OPT_FLAG_EXPORT: c_int = 64; pub const AV_OPT_FLAG_READONLY: c_int = 128; pub const AV_OPT_FLAG_FILTERING_PARAM: c_int = 1 << 16; pub const AV_OPT_SEARCH_CHILDREN: c_int = 0x0001; pub const AV_OPT_SEARCH_FAKE_OBJ: c_int = 0x0002; pub const AV_OPT_MULTI_COMPONENT_RANGE: c_int = 0x1000; pub const AV_OPT_SERIALIZE_SKIP_DEFAULTS: c_int = 0x00000001; pub const AV_OPT_SERIALIZE_OPT_FLAGS_EXACT: c_int = 0x00000002; #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] pub enum AVOptionType { AV_OPT_TYPE_FLAGS, AV_OPT_TYPE_INT, AV_OPT_TYPE_INT64, AV_OPT_TYPE_DOUBLE, AV_OPT_TYPE_FLOAT, AV_OPT_TYPE_STRING, AV_OPT_TYPE_RATIONAL, AV_OPT_TYPE_BINARY, AV_OPT_TYPE_DICT, AV_OPT_TYPE_CONST = 128, AV_OPT_TYPE_IMAGE_SIZE = MKBETAG!(b'S', b'I', b'Z', b'E'), AV_OPT_TYPE_PIXEL_FMT = MKBETAG!(b'P', b'F', b'M', b'T'), AV_OPT_TYPE_SAMPLE_FMT = MKBETAG!(b'S', b'F', b'M', b'T'), AV_OPT_TYPE_VIDEO_RATE = MKBETAG!(b'V', b'R', b'A', b'T'), AV_OPT_TYPE_DURATION = MKBETAG!(b'D', b'U', b'R', b' '), AV_OPT_TYPE_COLOR = MKBETAG!(b'C', b'O', b'L', b'R'), AV_OPT_TYPE_CHANNEL_LAYOUT = MKBETAG!(b'C', b'H', b'L', b'A'), } #[derive(Debug)] #[repr(C)] pub struct AVOption { pub name: *const c_char, pub help: *const c_char, pub offset: c_int, pub kind: AVOptionType, pub default_val: [u8; 8], pub min: c_double, pub max: c_double, pub unit: *const c_char, } #[derive(Debug)] #[repr(C)] pub struct AVOptionRange { pub str: *const c_char, pub value_min: c_double, pub value_max: c_double, pub component_min: c_double, pub component_max: c_double, pub is_range: c_int, } #[derive(Debug)] #[repr(C)] pub struct AVOptionRanges { pub range: *mut *mut AVOptionRange, pub nb_ranges: c_int, pub nb_components: c_int, } extern { pub fn av_opt_show2(obj: *mut c_void, av_log_obj: *mut c_void, req_flags: c_int, rej_flags: c_int) -> c_int; pub fn av_opt_set_defaults(s: *mut c_void); pub fn av_set_options_string(ctx: *mut c_void, opts: *const c_char, key_val_sep: *const c_char, pairs_sep: *const c_char) -> c_int; pub fn av_opt_set_from_string(ctx: *mut c_void, opts: *const c_char, shorthand: *const *const c_char, key_val_sep: *const c_char, pairs_sep: *const c_char) -> c_int; pub fn av_opt_free(obj: *mut c_void); pub fn av_opt_flag_is_set(obj: *mut c_void, field_name: *const c_char, flag_name: *const c_char) -> c_int; pub fn av_opt_set_dict(obj: *mut c_void, options: *mut *mut AVDictionary) -> c_int; pub fn av_opt_set_dict2(obj: *mut c_void, options: *mut *mut AVDictionary, search_flags: c_int) -> c_int; pub fn av_opt_get_key_value(ropts: *const *const c_char, key_val_sep: *const c_char, pairs_sep: *const c_char, flags: c_uint, rkey: *mut *mut c_char, rval: *mut *mut c_char) -> c_int; pub fn av_opt_eval_flags(obj: *mut c_void, o: *mut AVOption, val: *const c_char, flags_out: *mut c_int) -> c_int; pub fn av_opt_eval_int(obj: *mut c_void, o: *mut AVOption, val: *const c_char, int_out: *mut c_int) -> c_int; pub fn av_opt_eval_int64(obj: *mut c_void, o: *mut AVOption, val: *const c_char, int64_out: *mut int64_t) -> c_int; pub fn av_opt_eval_float(obj: *mut c_void, o: *mut AVOption, val: *const c_char, float_out: *mut c_float) -> c_int; pub fn av_opt_eval_double(obj: *mut c_void, o: *mut AVOption, val: *const c_char, double_out: *mut c_double) -> c_int; pub fn av_opt_eval_q(obj: *mut c_void, o: *mut AVOption, val: *const c_char, q_out: *mut AVRational) -> c_int; pub fn av_opt_find(obj: *mut c_void, name: *const c_char, unit: *const c_char, opt_flags: c_int, search_flags: c_int) -> *const AVOption; pub fn av_opt_find2(obj: *mut c_void, name: *const c_char, unit: *const c_char, opt_flags: c_int, search_flags: c_int, target_obj: *mut *mut c_void) -> *const AVOption; pub fn av_opt_next(obj: *mut c_void, prev: *const AVOption) -> *const AVOption; pub fn av_opt_child_next(obj: *mut c_void, prev: *mut c_void) -> *mut c_void; pub fn av_opt_child_class_next(parent: *const AVClass, prev: *const AVClass) -> *const AVClass; pub fn av_opt_set(obj: *mut c_void, name: *const c_char, val: *const c_char, search_flags: c_int) -> c_int; pub fn av_opt_set_int(obj: *mut c_void, name: *const c_char, val: int64_t, search_flags: c_int) -> c_int; pub fn av_opt_set_double(obj: *mut c_void, name: *const c_char, val: c_double, search_flags: c_int) -> c_int; pub fn av_opt_set_q(obj: *mut c_void, name: *const c_char, val: AVRational, search_flags: c_int) -> c_int; pub fn av_opt_set_bin(obj: *mut c_void, name: *const c_char, val: *const uint8_t, len: c_int, search_flags: c_int) -> c_int; pub fn av_opt_set_image_size(obj: *mut c_void, name: *const c_char, w: c_int, h: c_int, search_flags: c_int) -> c_int; pub fn av_opt_set_pixel_fmt(obj: *mut c_void, name: *const c_char, fmt: AVPixelFormat, search_flags: c_int) -> c_int; pub fn av_opt_set_sample_fmt(obj: *mut c_void, name: *const c_char, fmt: AVSampleFormat, search_flags: c_int) -> c_int; pub fn av_opt_set_video_rate(obj: *mut c_void, name: *const c_char, val: AVRational, search_flags: c_int) -> c_int; pub fn av_opt_set_channel_layout(obj: *mut c_void, name: *const c_char, ch_layout: int64_t, search_flags: c_int) -> c_int; pub fn av_opt_set_dict_val(obj: *mut c_void, name: *const c_char, val: *const AVDictionary, search_flags: c_int) -> c_int; pub fn av_opt_get(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_val: *mut *mut uint8_t) -> c_int; pub fn av_opt_get_int(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_val: *mut int64_t) -> c_int; pub fn av_opt_get_double(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_val: *mut c_double) -> c_int; pub fn av_opt_get_image_size(obj: *mut c_void, name: *const c_char, search_flags: c_int, w_out: *mut c_int, h_out: *mut c_int) -> c_int; pub fn av_opt_get_pixel_fmt(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_fmt: *mut AVPixelFormat) -> c_int; pub fn av_opt_get_sample_fmt(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_fmt: *mut AVSampleFormat) -> c_int; pub fn av_opt_get_video_rate(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_val: *mut AVRational) -> c_int; pub fn av_opt_get_channel_layout(obj: *mut c_void, name: *const c_char, search_flags: c_int, ch_layout: *mut int64_t) -> c_int; pub fn av_opt_get_dict_val(obj: *mut c_void, name: *const c_char, search_flags: c_int, out_val: *mut *mut AVDictionary) -> c_int; pub fn av_opt_ptr(avclass: *const AVClass, obj: *mut c_void, name: *const c_char); pub fn av_opt_freep_ranges(ranges: *mut *mut AVOptionRanges); pub fn av_opt_query_ranges(ranges: *mut *mut AVOptionRanges, obj: *mut c_void, key: *const c_char, flags: c_int) -> c_int; pub fn av_opt_copy(dest: *mut c_void, src: *mut c_void) -> c_int; pub fn av_opt_query_ranges_default(ranges: *mut *mut AVOptionRanges, obj: *mut c_void, key: *const c_char, flags: c_int) -> c_int; pub fn av_opt_is_set_to_default(obj: *mut c_void, o: *const AVOption) -> c_int; pub fn av_opt_is_set_to_default_by_name(obj: *mut c_void, name: *const c_char, search_flags: c_int) -> c_int; pub fn av_opt_serialize(obj: *mut c_void, opt_flags: c_int, flags: c_int, buffer: *mut *mut c_char, key_val_sep: c_char, pairs_sep: c_char) -> c_int; }