# HG changeset patch # User gpoirier # Date 1157919700 0 # Node ID 7e7d8a3fe080f487534043c39c5a9f6b8516fe54 # Parent 4ba77dc980f14453c76a8565d5c6b9cbb1558d43 make AVOptions default value field work. Patch by Panagiotis Issaris % takis P issaris A uhasselt P be % Original thread: Date: Sep 8, 2006 3:22 PM Subject: [Ffmpeg-devel] [PATCH 1/2] Enable usage of AVOption default value diff -r 4ba77dc980f1 -r 7e7d8a3fe080 opt.c --- a/opt.c Sun Sep 10 18:16:19 2006 +0000 +++ b/opt.c Sun Sep 10 20:21:40 2006 +0000 @@ -299,3 +299,40 @@ } return 0; } + +void av_opt_set_defaults(void *s) +{ + AVOption *opt = NULL; + while ((opt = av_next_option(s, opt)) != NULL) { + switch(opt->type) { + case FF_OPT_TYPE_CONST: + /* Nothing to be done here */ + break; + case FF_OPT_TYPE_FLAGS: + case FF_OPT_TYPE_INT: { + int val; + val = opt->default_val; + av_set_int(s, opt->name, val); + } + break; + case FF_OPT_TYPE_FLOAT: { + double val; + val = opt->default_val; + av_set_double(s, opt->name, val); + } + break; + case FF_OPT_TYPE_RATIONAL: { + AVRational val; + val = av_d2q(opt->default_val, INT_MAX); + av_set_q(s, opt->name, val); + } + break; + case FF_OPT_TYPE_STRING: + /* Cannot set default for string as default_val is of type * double */ + break; + default: + av_log(s, AV_LOG_DEBUG, "AVOption type %d of option %s not implemented yet\n", opt->type, opt->name); + } + } +} + diff -r 4ba77dc980f1 -r 7e7d8a3fe080 opt.h --- a/opt.h Sun Sep 10 18:16:19 2006 +0000 +++ b/opt.h Sun Sep 10 20:21:40 2006 +0000 @@ -76,5 +76,6 @@ const char *av_get_string(void *obj, const char *name, AVOption **o_out, char *buf, int buf_len); AVOption *av_next_option(void *obj, AVOption *last); int av_opt_show(void *obj, void *av_log_obj); +void av_opt_set_defaults(void *s); #endif diff -r 4ba77dc980f1 -r 7e7d8a3fe080 utils.c --- a/utils.c Sun Sep 10 18:16:19 2006 +0000 +++ b/utils.c Sun Sep 10 20:21:40 2006 +0000 @@ -765,6 +765,9 @@ memset(s, 0, sizeof(AVCodecContext)); s->av_class= &av_codec_context_class; + + av_opt_set_defaults(s); + s->bit_rate= 800*1000; s->bit_rate_tolerance= s->bit_rate*10; s->qmin= 2;