#[repr(C)]pub struct AVClass {
pub class_name: *const c_char,
pub item_name: Option<unsafe extern "C" 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 category: AVClassCategory,
pub get_category: Option<unsafe extern "C" fn(ctx: *mut c_void) -> AVClassCategory>,
pub query_ranges: Option<unsafe extern "C" fn(arg1: *mut *mut AVOptionRanges, obj: *mut c_void, key: *const c_char, flags: c_int) -> c_int>,
pub child_next: Option<unsafe extern "C" fn(obj: *mut c_void, prev: *mut c_void) -> *mut c_void>,
pub child_class_iterate: Option<unsafe extern "C" fn(iter: *mut *mut c_void) -> *const AVClass>,
pub state_flags_offset: c_int,
}展开描述
Describe the class of an AVClass context structure. That is an arbitrary struct of which the first field is a pointer to an AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
Fields§
§class_name: *const c_charThe name of the class; usually it is the same name as the context structure type to which the AVClass is associated.
item_name: Option<unsafe extern "C" fn(ctx: *mut c_void) -> *const c_char>A pointer to a function which returns the name of a context instance ctx associated with the class.
option: *const AVOptionAn array of options for the structure or NULL. When non-NULL, the array must be terminated by an option with a NULL name.
@see av_set_default_options()
version: c_intLIBAVUTIL_VERSION with which this structure was created. This is used to allow fields to be added to AVClass without requiring major version bumps everywhere.
log_level_offset_offset: c_intOffset in the structure where the log level offset is stored. The log level offset is an int added to the log level for logging with this object as the context.
0 means there is no such variable.
parent_log_context_offset: c_intOffset in the structure where a pointer to the parent context for logging is stored. For example a decoder could pass its AVCodecContext to eval as such a parent context, which an ::av_log() implementation could then leverage to display the parent context.
When the pointer is NULL, or this offset is zero, the object is assumed to have no parent.
category: AVClassCategoryCategory used for visualization (like color).
Only used when ::get_category() is NULL. Use this field when all instances of this class have the same category, use ::get_category() otherwise.
get_category: Option<unsafe extern "C" fn(ctx: *mut c_void) -> AVClassCategory>Callback to return the instance category. Use this callback when different instances of this class may have different categories, ::category otherwise.
query_ranges: Option<unsafe extern "C" fn(arg1: *mut *mut AVOptionRanges, obj: *mut c_void, key: *const c_char, flags: c_int) -> c_int>Callback to return the supported/allowed ranges.
child_next: Option<unsafe extern "C" fn(obj: *mut c_void, prev: *mut c_void) -> *mut c_void>Return next AVOptions-enabled child or NULL
child_class_iterate: Option<unsafe extern "C" fn(iter: *mut *mut c_void) -> *const AVClass>Iterate over the AVClasses corresponding to potential AVOptions-enabled children.
@param iter pointer to opaque iteration state. The caller must initialize *iter to NULL before the first call. @return AVClass for the next AVOptions-enabled child or NULL if there are no more such children.
@note The difference between ::child_next() and ::child_class_iterate() is that ::child_next() iterates over actual children of an existing object instance, while ::child_class_iterate() iterates over the classes of all potential children of any possible instance of this class.
state_flags_offset: c_intWhen non-zero, offset in the object to an unsigned int holding object state flags, a combination of AVClassStateFlags values. The flags are updated by the object to signal its state to the generic code.
Added in version 59.41.100.