# HG changeset patch # User takis # Date 1158233021 0 # Node ID 73626972ccbbb8cfc61f34b5470c2c1de025b811 # Parent ea9fe1c9d126e0db0a7173a8daa5a2cac2859238 Allow parameter values (AVOptions) to use the 'k', 'M', 'G' and 'B' postfixes. diff -r ea9fe1c9d126 -r 73626972ccbb opt.c --- a/opt.c Thu Sep 14 00:38:03 2006 +0000 +++ b/opt.c Thu Sep 14 11:23:41 2006 +0000 @@ -27,11 +27,38 @@ #include "avcodec.h" #include "opt.h" -static double av_parse_num(const char *name, char **tail){ +/** + * strtod() function extended with 'k', 'M' and 'B' postfixes. + * This allows using kB, MB, k, M and B as a postfix. This function + * assumes that the unit of numbers is bits not bytes. + */ +static double av_strtod(const char *name, char **tail) { double d; d= strtod(name, tail); + if(*tail>name && (**tail=='k')) { + d*=1000; + (*tail)++; + } + else if(*tail && (**tail=='M')) { + d*=1000000; + (*tail)++; + } + else if(*tail && (**tail=='G')) { + d*=1000000000; + (*tail)++; + } + if(*tail && (**tail=='B')) { + d*=8; + (*tail)++; + } + return d; +} + +static double av_parse_num(const char *name, char **tail){ + double d; + d= av_strtod(name, tail); if(*tail>name && (**tail=='/' || **tail==':')) - d/=strtod((*tail)+1, tail); + d/=av_strtod((*tail)+1, tail); return d; }