00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef AVUTIL_OPT_H
00023 #define AVUTIL_OPT_H
00024
00030 #include "rational.h"
00031 #include "avutil.h"
00032 #include "dict.h"
00033 #include "log.h"
00034 #include "pixfmt.h"
00035 #include "samplefmt.h"
00036
00220 enum AVOptionType{
00221 AV_OPT_TYPE_FLAGS,
00222 AV_OPT_TYPE_INT,
00223 AV_OPT_TYPE_INT64,
00224 AV_OPT_TYPE_DOUBLE,
00225 AV_OPT_TYPE_FLOAT,
00226 AV_OPT_TYPE_STRING,
00227 AV_OPT_TYPE_RATIONAL,
00228 AV_OPT_TYPE_BINARY,
00229 AV_OPT_TYPE_CONST = 128,
00230 AV_OPT_TYPE_IMAGE_SIZE = MKBETAG('S','I','Z','E'),
00231 AV_OPT_TYPE_PIXEL_FMT = MKBETAG('P','F','M','T'),
00232 AV_OPT_TYPE_SAMPLE_FMT = MKBETAG('S','F','M','T'),
00233 #if FF_API_OLD_AVOPTIONS
00234 FF_OPT_TYPE_FLAGS = 0,
00235 FF_OPT_TYPE_INT,
00236 FF_OPT_TYPE_INT64,
00237 FF_OPT_TYPE_DOUBLE,
00238 FF_OPT_TYPE_FLOAT,
00239 FF_OPT_TYPE_STRING,
00240 FF_OPT_TYPE_RATIONAL,
00241 FF_OPT_TYPE_BINARY,
00242 FF_OPT_TYPE_CONST=128,
00243 #endif
00244 };
00245
00249 typedef struct AVOption {
00250 const char *name;
00251
00256 const char *help;
00257
00262 int offset;
00263 enum AVOptionType type;
00264
00268 union {
00269 int64_t i64;
00270 double dbl;
00271 const char *str;
00272
00273 AVRational q;
00274 } default_val;
00275 double min;
00276 double max;
00277
00278 int flags;
00279 #define AV_OPT_FLAG_ENCODING_PARAM 1
00280 #define AV_OPT_FLAG_DECODING_PARAM 2
00281 #define AV_OPT_FLAG_METADATA 4
00282 #define AV_OPT_FLAG_AUDIO_PARAM 8
00283 #define AV_OPT_FLAG_VIDEO_PARAM 16
00284 #define AV_OPT_FLAG_SUBTITLE_PARAM 32
00285 #define AV_OPT_FLAG_FILTERING_PARAM (1<<16)
00286 //FIXME think about enc-audio, ... style flags
00287
00293 const char *unit;
00294 } AVOption;
00295
00299 typedef struct AVOptionRange {
00300 const char *str;
00301 double value_min, value_max;
00302 double component_min, component_max;
00303 int is_range;
00304 } AVOptionRange;
00305
00309 typedef struct AVOptionRanges {
00310 AVOptionRange **range;
00311 int nb_ranges;
00312 } AVOptionRanges;
00313
00314
00315 #if FF_API_FIND_OPT
00316
00330 attribute_deprecated
00331 const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags);
00332 #endif
00333
00334 #if FF_API_OLD_AVOPTIONS
00335
00361 attribute_deprecated
00362 int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out);
00363
00364 attribute_deprecated const AVOption *av_set_double(void *obj, const char *name, double n);
00365 attribute_deprecated const AVOption *av_set_q(void *obj, const char *name, AVRational n);
00366 attribute_deprecated const AVOption *av_set_int(void *obj, const char *name, int64_t n);
00367
00368 double av_get_double(void *obj, const char *name, const AVOption **o_out);
00369 AVRational av_get_q(void *obj, const char *name, const AVOption **o_out);
00370 int64_t av_get_int(void *obj, const char *name, const AVOption **o_out);
00371 attribute_deprecated const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len);
00372 attribute_deprecated const AVOption *av_next_option(void *obj, const AVOption *last);
00373 #endif
00374
00384 int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags);
00385
00391 void av_opt_set_defaults(void *s);
00392
00393 #if FF_API_OLD_AVOPTIONS
00394 attribute_deprecated
00395 void av_opt_set_defaults2(void *s, int mask, int flags);
00396 #endif
00397
00415 int av_set_options_string(void *ctx, const char *opts,
00416 const char *key_val_sep, const char *pairs_sep);
00417
00445 int av_opt_set_from_string(void *ctx, const char *opts,
00446 const char *const *shorthand,
00447 const char *key_val_sep, const char *pairs_sep);
00451 void av_opt_free(void *obj);
00452
00461 int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name);
00462
00477 int av_opt_set_dict(void *obj, struct AVDictionary **options);
00478
00498 int av_opt_get_key_value(const char **ropts,
00499 const char *key_val_sep, const char *pairs_sep,
00500 unsigned flags,
00501 char **rkey, char **rval);
00502
00503 enum {
00504
00509 AV_OPT_FLAG_IMPLICIT_KEY = 1,
00510 };
00511
00526 int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out);
00527 int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out);
00528 int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out);
00529 int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out);
00530 int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out);
00531 int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out);
00536 #define AV_OPT_SEARCH_CHILDREN 0x0001
00544 #define AV_OPT_SEARCH_FAKE_OBJ 0x0002
00545
00568 const AVOption *av_opt_find(void *obj, const char *name, const char *unit,
00569 int opt_flags, int search_flags);
00570
00592 const AVOption *av_opt_find2(void *obj, const char *name, const char *unit,
00593 int opt_flags, int search_flags, void **target_obj);
00594
00604 const AVOption *av_opt_next(void *obj, const AVOption *prev);
00605
00612 void *av_opt_child_next(void *obj, void *prev);
00613
00620 const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev);
00621
00648 int av_opt_set (void *obj, const char *name, const char *val, int search_flags);
00649 int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags);
00650 int av_opt_set_double(void *obj, const char *name, double val, int search_flags);
00651 int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags);
00652 int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags);
00653 int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_flags);
00654 int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags);
00655 int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags);
00675 int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val);
00676 int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val);
00677 int av_opt_get_double(void *obj, const char *name, int search_flags, double *out_val);
00678 int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val);
00679 int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_out, int *h_out);
00680 int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt);
00681 int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt);
00693 void *av_opt_ptr(const AVClass *avclass, void *obj, const char *name);
00694
00698 void av_opt_freep_ranges(AVOptionRanges **ranges);
00699
00712 int av_opt_query_ranges(AVOptionRanges **, void *obj, const char *key, int flags);
00713
00727 int av_opt_query_ranges_default(AVOptionRanges **, void *obj, const char *key, int flags);
00728
00733 #endif