On 06/18/2011 08:52 AM, Anton Khirnov wrote:
> ---
> cmdutils.c | 108
> +-----------------------------------------------------------
> cmdutils.h | 3 --
> 2 files changed, 1 insertions(+), 110 deletions(-)
>
> diff --git a/cmdutils.c b/cmdutils.c
> index b3c8e63..8295baa 100644
> --- a/cmdutils.c
> +++ b/cmdutils.c
> @@ -49,9 +49,6 @@
> #include <sys/resource.h>
> #endif
>
> -const char **opt_names;
> -const char **opt_values;
> -static int opt_name_count;
> AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
> AVFormatContext *avformat_opts;
> struct SwsContext *sws_opts;
> @@ -81,17 +78,6 @@ void uninit_opts(void)
> sws_freeContext(sws_opts);
> sws_opts = NULL;
> #endif
> - for (i = 0; i < opt_name_count; i++) {
> - //opt_values are only stored for codec-specific options in which case
> - //both the name and value are dup'd
> - if (opt_values[i]) {
> - av_freep(&opt_names[i]);
> - av_freep(&opt_values[i]);
> - }
> - }
> - av_freep(&opt_names);
> - av_freep(&opt_values);
> - opt_name_count = 0;
> av_dict_free(&format_opts);
> av_dict_free(&video_opts);
> av_dict_free(&audio_opts);
> @@ -302,7 +288,7 @@ unknown_opt:
> #define SET_PREFIXED_OPTS(ch, flag, output) \
> if (opt[0] == ch && avcodec_opts[0] && (o = av_opt_find(avcodec_opts[0],
> opt+1, NULL, flag, 0)))\
> av_dict_set(&output, opt+1, arg, FLAGS);
> -static int opt_default2(const char *opt, const char *arg)
> +int opt_default(const char *opt, const char *arg)
> {
> const AVOption *o;
> if ((o = av_opt_find(avcodec_opts[0], opt, NULL, 0,
> AV_OPT_SEARCH_CHILDREN))) {
> @@ -335,66 +321,6 @@ static int opt_default2(const char *opt, const char *arg)
> return AVERROR_OPTION_NOT_FOUND;
> }
>
> -int opt_default(const char *opt, const char *arg){
> - int type;
> - int ret= 0;
> - const AVOption *o= NULL;
> - int opt_types[]={AV_OPT_FLAG_VIDEO_PARAM, AV_OPT_FLAG_AUDIO_PARAM, 0,
> AV_OPT_FLAG_SUBTITLE_PARAM, 0};
> -
> - for(type=0; *avcodec_opts && type<AVMEDIA_TYPE_NB && ret>= 0; type++){
> - const AVOption *o2 = av_opt_find(avcodec_opts[0], opt, NULL,
> opt_types[type], 0);
> - if(o2)
> - ret = av_set_string3(avcodec_opts[type], opt, arg, 1, &o);
> - }
> - if(!o && avformat_opts)
> - ret = av_set_string3(avformat_opts, opt, arg, 1, &o);
> - if(!o && sws_opts)
> - ret = av_set_string3(sws_opts, opt, arg, 1, &o);
> - if(!o){
> - if (opt[0] == 'a' && avcodec_opts[AVMEDIA_TYPE_AUDIO])
> - ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_AUDIO], opt+1,
> arg, 1, &o);
> - else if(opt[0] == 'v' && avcodec_opts[AVMEDIA_TYPE_VIDEO])
> - ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_VIDEO], opt+1,
> arg, 1, &o);
> - else if(opt[0] == 's' && avcodec_opts[AVMEDIA_TYPE_SUBTITLE])
> - ret = av_set_string3(avcodec_opts[AVMEDIA_TYPE_SUBTITLE], opt+1,
> arg, 1, &o);
> - }
> - if (o && ret < 0) {
> - fprintf(stderr, "Invalid value '%s' for option '%s'\n", arg, opt);
> - exit(1);
> - }
> - if (!o) {
> - AVCodec *p = NULL;
> - AVOutputFormat *oformat = NULL;
> - while ((p=av_codec_next(p))){
> - const AVClass *c = p->priv_class;
> - if(c && av_opt_find(&c, opt, NULL, 0, 0))
> - break;
> - }
> - if (!p) {
> - while ((oformat = av_oformat_next(oformat))) {
> - const AVClass *c = oformat->priv_class;
> - if (c && av_opt_find(&c, opt, NULL, 0, 0))
> - break;
> - }
> - }
> - }
> -
> - if ((ret = opt_default2(opt, arg)) < 0)
> - return ret;
> -
> -// av_log(NULL, AV_LOG_ERROR, "%s:%s: %f 0x%0X\n", opt, arg,
> av_get_double(avcodec_opts, opt, NULL), (int)av_get_int(avcodec_opts, opt,
> NULL));
> -
> - //FIXME we should always use avcodec_opts, ... for storing options so
> there will not be any need to keep track of what i set over this
> - opt_values= av_realloc(opt_values, sizeof(void*)*(opt_name_count+1));
> - opt_values[opt_name_count]= o ? NULL : av_strdup(arg);
> - opt_names= av_realloc(opt_names, sizeof(void*)*(opt_name_count+1));
> - opt_names[opt_name_count++]= o ? o->name : av_strdup(opt);
> -
> - if ((*avcodec_opts && avcodec_opts[0]->debug) || (avformat_opts &&
> avformat_opts->debug))
> - av_log_set_level(AV_LOG_DEBUG);
> - return 0;
> -}
> -
> int opt_loglevel(const char *opt, const char *arg)
> {
> const struct { const char *name; int level; } log_levels[] = {
> @@ -443,38 +369,6 @@ int opt_timelimit(const char *opt, const char *arg)
> return 0;
> }
>
> -void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec)
> -{
> - int i;
> - void *priv_ctx=NULL;
> - if(!strcmp("AVCodecContext", (*(AVClass**)ctx)->class_name)){
> - AVCodecContext *avctx= ctx;
> - if(codec && codec->priv_class && avctx->priv_data){
> - priv_ctx= avctx->priv_data;
> - }
> - } else if (!strcmp("AVFormatContext", (*(AVClass**)ctx)->class_name)) {
> - AVFormatContext *avctx = ctx;
> - if (avctx->oformat && avctx->oformat->priv_class) {
> - priv_ctx = avctx->priv_data;
> - }
> - }
> -
> - for(i=0; i<opt_name_count; i++){
> - char buf[256];
> - const AVOption *opt;
> - const char *str= av_get_string(opts_ctx, opt_names[i], &opt, buf,
> sizeof(buf));
> - /* if an option with name opt_names[i] is present in opts_ctx then
> str is non-NULL */
> - if(str && ((opt->flags & flags) == flags))
> - av_set_string3(ctx, opt_names[i], str, 1, NULL);
> - /* We need to use a differnt system to pass options to the private
> context because
> - it is not known which codec and thus context kind that will be
> when parsing options
> - we thus use opt_values directly instead of opts_ctx */
> - if(!str && priv_ctx && av_get_string(priv_ctx, opt_names[i], &opt,
> buf, sizeof(buf))){
> - av_set_string3(priv_ctx, opt_names[i], opt_values[i], 1, NULL);
> - }
> - }
> -}
> -
> void print_error(const char *filename, int err)
> {
> char errbuf[128];
> diff --git a/cmdutils.h b/cmdutils.h
> index 749d822..f09ffe9 100644
> --- a/cmdutils.h
> +++ b/cmdutils.h
> @@ -39,7 +39,6 @@ extern const char program_name[];
> */
> extern const int program_birth_year;
>
> -extern const char **opt_names;
> extern AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
> extern AVFormatContext *avformat_opts;
> extern struct SwsContext *sws_opts;
> @@ -149,8 +148,6 @@ void show_help_options(const OptionDef *options, const
> char *msg, int mask, int
> void parse_options(int argc, char **argv, const OptionDef *options,
> void (* parse_arg_function)(const char*));
>
> -void set_context_opts(void *ctx, void *opts_ctx, int flags, AVCodec *codec);
> -
> /**
> * Setup AVCodecContext options for avformat_find_stream_info.
> */
This looks ok, but it need to be throughly tested to make sure nothing
breaks accidentally.
-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel