Mercurial > libavcodec.hg
changeset 3718:73626972ccbb libavcodec
Allow parameter values (AVOptions) to use the 'k', 'M', 'G'
and 'B' postfixes.
author | takis |
---|---|
date | Thu, 14 Sep 2006 11:23:41 +0000 |
parents | ea9fe1c9d126 |
children | a565d89ff032 |
files | opt.c |
diffstat | 1 files changed, 29 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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; }