Commit 71171eed authored by diego's avatar diego

Check for the presence of llrint(), lrint(), round() and roundf()

and provide simple replacements if they are unavailable.
patch by Michael Kostylev, mik niipt ru


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@11326 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 73589a92
...@@ -706,6 +706,8 @@ HAVE_LIST=" ...@@ -706,6 +706,8 @@ HAVE_LIST="
getrusage getrusage
imlib2 imlib2
inet_aton inet_aton
llrint
lrint
lrintf lrintf
machine_ioctl_bt848_h machine_ioctl_bt848_h
machine_ioctl_meteor_h machine_ioctl_meteor_h
...@@ -714,6 +716,8 @@ HAVE_LIST=" ...@@ -714,6 +716,8 @@ HAVE_LIST="
mkstemp mkstemp
mlib mlib
ppc64 ppc64
round
roundf
sdl sdl
sdl_video_size sdl_video_size
soundcard_h soundcard_h
...@@ -1593,12 +1597,14 @@ done ...@@ -1593,12 +1597,14 @@ done
check_lib math.h sin -lm check_lib math.h sin -lm
# test for lrintf in math.h # test for C99 functions in math.h
check_exec <<EOF && enable lrintf || disable lrintf for func in llrint lrint lrintf round roundf; do
check_exec <<EOF && enable $func || disable $func
#define _ISOC9X_SOURCE 1 #define _ISOC9X_SOURCE 1
#include <math.h> #include <math.h>
int main(void) { return (lrintf(3.999f) > 0)?0:1; } int main(void) { return ($func(3.999f) > 0)?0:1; }
EOF EOF
done
enabled_any libamr_nb libamr_wb && enable libamr enabled_any libamr_nb libamr_wb && enable libamr
......
...@@ -270,6 +270,20 @@ if((y)<(x)){\ ...@@ -270,6 +270,20 @@ if((y)<(x)){\
}\ }\
} }
#ifndef HAVE_LLRINT
static av_always_inline long long llrint(double x)
{
return rint(x);
}
#endif /* HAVE_LLRINT */
#ifndef HAVE_LRINT
static av_always_inline long int lrint(double x)
{
return rint(x);
}
#endif /* HAVE_LRINT */
#ifndef HAVE_LRINTF #ifndef HAVE_LRINTF
static av_always_inline long int lrintf(float x) static av_always_inline long int lrintf(float x)
{ {
...@@ -277,4 +291,18 @@ static av_always_inline long int lrintf(float x) ...@@ -277,4 +291,18 @@ static av_always_inline long int lrintf(float x)
} }
#endif /* HAVE_LRINTF */ #endif /* HAVE_LRINTF */
#ifndef HAVE_ROUND
static av_always_inline double round(double x)
{
return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5);
}
#endif /* HAVE_ROUND */
#ifndef HAVE_ROUNDF
static av_always_inline float roundf(float x)
{
return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5);
}
#endif /* HAVE_ROUNDF */
#endif /* FFMPEG_INTERNAL_H */ #endif /* FFMPEG_INTERNAL_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment