diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2013-01-15 16:09:00 -0500 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2013-10-15 17:00:28 +0100 |
commit | 479a52795526a5ad6628e37d9614dee5e32dc773 (patch) | |
tree | c3e601c843671888f1ad4b9b2820ced73032f34a | |
parent | bc31a7a3b6bcd7409e4440d7d8124006813fe15a (diff) | |
download | ffmpeg-479a52795526a5ad6628e37d9614dee5e32dc773.tar.gz |
cos_tablegen: Don't use lrint
You cannot count on it being present on all systems, and you
cannot include libm.h in a host tool, so just hard code a baseline
implementation.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
-rw-r--r-- | libavcodec/cos_tablegen.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libavcodec/cos_tablegen.c b/libavcodec/cos_tablegen.c index 8a9085704e..9cf9cef6aa 100644 --- a/libavcodec/cos_tablegen.c +++ b/libavcodec/cos_tablegen.c @@ -37,11 +37,16 @@ static int clip_f15(int v) static void printval(double val, int fixed) { - if (fixed) - printf(" "FIXEDFMT",", clip_f15(lrint(val * (double)(1<<15)))); - else - printf(" "FLOATFMT",", val); + if (fixed) { + /* lrint() isn't always available, so round and cast manually. */ + double new_val = val * (double) (1 << 15); + + new_val = new_val >= 0 ? floor(new_val + 0.5) : ceil(new_val - 0.5); + printf(" "FIXEDFMT",", clip_f15((long int) new_val)); + } else { + printf(" "FLOATFMT",", val); + } } int main(int argc, char *argv[]) |