Browse Source

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

Originally committed as revision 6224 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Panagiotis Issaris Guillaume Poirier 19 years ago
parent
commit
73a8ceaa17
4 changed files with 45 additions and 0 deletions
  1. +37
    -0
      libavcodec/opt.c
  2. +1
    -0
      libavcodec/opt.h
  3. +3
    -0
      libavcodec/utils.c
  4. +4
    -0
      libavformat/utils.c

+ 37
- 0
libavcodec/opt.c View File

@@ -299,3 +299,40 @@ int av_opt_show(void *obj, void *av_log_obj){
}
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);
}
}
}


+ 1
- 0
libavcodec/opt.h View File

@@ -76,5 +76,6 @@ int64_t av_get_int(void *obj, const char *name, AVOption **o_out);
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

+ 3
- 0
libavcodec/utils.c View File

@@ -765,6 +765,9 @@ void avcodec_get_context_defaults(AVCodecContext *s){
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;


+ 4
- 0
libavformat/utils.c View File

@@ -486,6 +486,10 @@ static
void avformat_get_context_defaults(AVFormatContext *s){
memset(s, 0, sizeof(AVFormatContext));

s->av_class = &av_format_context_class;

av_opt_set_defaults(s);

/* from mpegts.c: 1.0 second at 24Mbit/s */
s->probesize=32000;
}


Loading…
Cancel
Save