Deprecate av_opt_show() in favor of a new function av_opt_show2(),

which allows to specify only a subset of all the options to show.

Originally committed as revision 25166 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Stefano Sabatini 2010-09-24 00:51:40 +00:00
parent 47941088f9
commit e44c01563f
4 changed files with 40 additions and 10 deletions

View File

@ -3905,11 +3905,11 @@ static void show_help(void)
OPT_GRAB,
OPT_GRAB);
printf("\n");
av_opt_show(avcodec_opts[0], NULL);
av_opt_show2(avcodec_opts[0], NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
printf("\n");
av_opt_show(avformat_opts, NULL);
av_opt_show2(avformat_opts, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
printf("\n");
av_opt_show(sws_opts, NULL);
av_opt_show2(sws_opts, NULL, AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
}
static void opt_target(const char *arg)

View File

@ -31,7 +31,7 @@
#include "libavutil/cpu.h"
#define LIBAVCODEC_VERSION_MAJOR 52
#define LIBAVCODEC_VERSION_MINOR 89
#define LIBAVCODEC_VERSION_MINOR 90
#define LIBAVCODEC_VERSION_MICRO 0
#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
@ -54,6 +54,9 @@
#ifndef FF_API_MM_FLAGS
#define FF_API_MM_FLAGS (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#ifndef FF_API_OPT_SHOW
#define FF_API_OPT_SHOW (LIBAVCODEC_VERSION_MAJOR < 53)
#endif
#define AV_NOPTS_VALUE INT64_C(0x8000000000000000)
#define AV_TIME_BASE 1000000

View File

@ -319,12 +319,13 @@ int64_t av_get_int(void *obj, const char *name, const AVOption **o_out){
return num*intnum/den;
}
static void opt_list(void *obj, void *av_log_obj, const char *unit)
static void opt_list(void *obj, void *av_log_obj, const char *unit,
int req_flags, int rej_flags)
{
const AVOption *opt=NULL;
while((opt= av_next_option(obj, opt))){
if(!(opt->flags & (AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM)))
if (!(opt->flags & req_flags) || (opt->flags & rej_flags))
continue;
/* Don't print CONST's on level one.
@ -383,22 +384,30 @@ static void opt_list(void *obj, void *av_log_obj, const char *unit)
av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help);
av_log(av_log_obj, AV_LOG_INFO, "\n");
if (opt->unit && opt->type != FF_OPT_TYPE_CONST) {
opt_list(obj, av_log_obj, opt->unit);
opt_list(obj, av_log_obj, opt->unit, req_flags, rej_flags);
}
}
}
int av_opt_show(void *obj, void *av_log_obj){
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags)
{
if(!obj)
return -1;
av_log(av_log_obj, AV_LOG_INFO, "%s AVOptions:\n", (*(AVClass**)obj)->class_name);
opt_list(obj, av_log_obj, NULL);
opt_list(obj, av_log_obj, NULL, req_flags, rej_flags);
return 0;
}
#if FF_API_OPT_SHOW
int av_opt_show(void *obj, void *av_log_obj){
return av_opt_show2(obj, av_log_obj,
AV_OPT_FLAG_ENCODING_PARAM|AV_OPT_FLAG_DECODING_PARAM, 0);
}
#endif
/** Set the values of the AVCodecContext or AVFormatContext structure.
* They are set to the defaults specified in the according AVOption options
* array default_val field.

View File

@ -204,7 +204,25 @@ AVRational av_get_q(void *obj, const char *name, const AVOption **o_out);
int64_t av_get_int(void *obj, const char *name, const AVOption **o_out);
const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len);
const AVOption *av_next_option(void *obj, const AVOption *last);
int av_opt_show(void *obj, void *av_log_obj);
#if FF_API_OPT_SHOW
/**
* @deprecated Use av_opt_show2() instead.
*/
attribute_deprecated int av_opt_show(void *obj, void *av_log_obj);
#endif
/**
* Show the obj options.
*
* @param req_flags requested flags for the options to show. Show only the
* options for which it is opt->flags & req_flags.
* @param rej_flags rejected flags for the options to show. Show only the
* options for which it is !(opt->flags & req_flags).
* @param av_log_obj log context to use for showing the options
*/
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags);
void av_opt_set_defaults(void *s);
void av_opt_set_defaults2(void *s, int mask, int flags);