diff --git a/doc/APIchanges b/doc/APIchanges index b57868dfdf3a6d8895b276007f891720e1234bc7..0ab658d89c963ec41fe476e6b793d1e92e424edc 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -13,6 +13,9 @@ libavutil: 2011-04-18 API changes, most recent first: +2011-06-xx - xxxxxxx - lavu 51.6.0 - opt.h + Add av_opt_flag_is_set(). + 2011-06-xx - xxxxxxx - lavu 51.5.0 - AVMetadata Move AVMetadata from lavf to lavu and rename it to AVDictionary -- new installed header dict.h. diff --git a/libavutil/avutil.h b/libavutil/avutil.h index 9c660f3a99b0d5fa6e0fd364d01188be7db91146..0299bdf797acccbfb94ed7513cc00cf86deb7036 100644 --- a/libavutil/avutil.h +++ b/libavutil/avutil.h @@ -40,7 +40,7 @@ #define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) #define LIBAVUTIL_VERSION_MAJOR 51 -#define LIBAVUTIL_VERSION_MINOR 5 +#define LIBAVUTIL_VERSION_MINOR 6 #define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ diff --git a/libavutil/opt.c b/libavutil/opt.c index 172fcec456079dc6f88e840bc55b6288fb8a9454..7775bb2af3141bf2367c5c4d5046f1a42ca93227 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -320,6 +320,16 @@ int64_t av_get_int(void *obj, const char *name, const AVOption **o_out) return num*intnum/den; } +int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name) +{ + const AVOption *field = av_find_opt(obj, field_name, NULL, 0, 0); + const AVOption *flag = av_find_opt(obj, flag_name, NULL, 0, 0); + + if (!field || !flag || flag->type != FF_OPT_TYPE_CONST) + return 0; + return av_get_int(obj, field_name, NULL) & (int) flag->default_val.dbl; +} + static void opt_list(void *obj, void *av_log_obj, const char *unit, int req_flags, int rej_flags) { diff --git a/libavutil/opt.h b/libavutil/opt.h index 8c3b6c1c365dccd3bffaea68351dab72e6bfbdcb..46ad8acce1f01f0542d76dd3b645ad14b91aa341 100644 --- a/libavutil/opt.h +++ b/libavutil/opt.h @@ -181,4 +181,14 @@ int av_set_options_string(void *ctx, const char *opts, */ void av_opt_free(void *obj); +/** + * Check whether a particular flag is set in a flags field. + * + * @param field_name the name of the flag field option + * @param flag_name the name of the flag to check + * @return non-zero if the flag is set, zero if the flag isn't set, + * isn't of the right type, or the flags field doesn't exist. + */ +int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); + #endif /* AVUTIL_OPT_H */