diff --git a/configure b/configure index 146eb6ca57..c95d900553 100755 --- a/configure +++ b/configure @@ -706,6 +706,8 @@ HAVE_LIST=" getrusage imlib2 inet_aton + llrint + lrint lrintf machine_ioctl_bt848_h machine_ioctl_meteor_h @@ -714,6 +716,8 @@ HAVE_LIST=" mkstemp mlib ppc64 + round + roundf sdl sdl_video_size soundcard_h @@ -1593,12 +1597,14 @@ done check_lib math.h sin -lm -# test for lrintf in math.h -check_exec < -int main(void) { return (lrintf(3.999f) > 0)?0:1; } +int main(void) { return ($func(3.999f) > 0)?0:1; } EOF +done enabled_any libamr_nb libamr_wb && enable libamr diff --git a/libavutil/internal.h b/libavutil/internal.h index 93f8a02500..cbb8236071 100644 --- a/libavutil/internal.h +++ b/libavutil/internal.h @@ -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 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 */ +#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 */