X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fopt.h;h=50d483ef156d28d19fffb11410e16ca90eeeb43a;hb=00bbe27631ddce543e00d5fbdee445c39fc84d7f;hp=cbb7b565c1000135617506198975272edfcca37c;hpb=6122c92e9233a71a4a8ec89f48d6994745a16ab7;p=ffmpeg diff --git a/libavcodec/opt.h b/libavcodec/opt.h index cbb7b565c10..50d483ef156 100644 --- a/libavcodec/opt.h +++ b/libavcodec/opt.h @@ -19,15 +19,16 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#ifndef FFMPEG_OPT_H -#define FFMPEG_OPT_H +#ifndef AVCODEC_OPT_H +#define AVCODEC_OPT_H /** - * @file opt.h + * @file libavcodec/opt.h * AVOptions */ #include "libavutil/rational.h" +#include "avcodec.h" enum AVOptionType{ FF_OPT_TYPE_FLAGS, @@ -85,8 +86,61 @@ typedef struct AVOption { } AVOption; +/** + * Looks for an option in \p obj. Looks only for the options which + * have the flags set as specified in \p mask and \p flags (that is, + * for which it is the case that opt->flags & mask == flags). + * + * @param[in] obj a pointer to a struct whose first element is a + * pointer to an AVClass + * @param[in] name the name of the option to look for + * @param[in] unit the unit of the option to look for, or any if NULL + * @return a pointer to the option found, or NULL if no option + * has been found + */ const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags); -const AVOption *av_set_string(void *obj, const char *name, const char *val); + +#if LIBAVCODEC_VERSION_MAJOR < 53 +/** + * @see av_set_string2() + */ +attribute_deprecated const AVOption *av_set_string(void *obj, const char *name, const char *val); + +/** + * @return a pointer to the AVOption corresponding to the field set or + * NULL if no matching AVOption exists, or if the value \p val is not + * valid + * @see av_set_string3() + */ +attribute_deprecated const AVOption *av_set_string2(void *obj, const char *name, const char *val, int alloc); +#endif + +/** + * Sets the field of obj with the given name to value. + * + * @param[in] obj A struct whose first element is a pointer to an + * AVClass. + * @param[in] name the name of the field to set + * @param[in] val The value to set. If the field is not of a string + * type, then the given string is parsed. + * SI postfixes and some named scalars are supported. + * If the field is of a numeric type, it has to be a numeric or named + * scalar. Behavior with more than one scalar and +- infix operators + * is undefined. + * If the field is of a flags type, it has to be a sequence of numeric + * scalars or named flags separated by '+' or '-'. Prefixing a flag + * with '+' causes it to be set without affecting the other flags; + * similarly, '-' unsets a flag. + * @param[out] o_out if non-NULL put here a pointer to the AVOption + * found + * @param alloc when 1 then the old value will be av_freed() and the + * new av_strduped() + * when 0 then no av_free() nor av_strdup() will be used + * @return 0 if the value has been set, an AVERROR* error code if no + * matching option exists, or if the value \p val is not valid + */ +int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out); + const AVOption *av_set_double(void *obj, const char *name, double n); const AVOption *av_set_q(void *obj, const char *name, AVRational n); const AVOption *av_set_int(void *obj, const char *name, int64_t n); @@ -99,4 +153,4 @@ int av_opt_show(void *obj, void *av_log_obj); void av_opt_set_defaults(void *s); void av_opt_set_defaults2(void *s, int mask, int flags); -#endif /* FFMPEG_OPT_H */ +#endif /* AVCODEC_OPT_H */