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

Reply via email to