Browse Source

lrintf emulation improvments

Originally committed as revision 3412 to svn://svn.ffmpeg.org/ffmpeg/trunk
tags/v0.5
Michael Niedermayer 21 years ago
parent
commit
91d6655aa7
1 changed files with 11 additions and 2 deletions
  1. +11
    -2
      libavcodec/dsputil.h

+ 11
- 2
libavcodec/dsputil.h View File

@@ -583,11 +583,20 @@ static int name16(void /*MpegEncContext*/ *s, uint8_t *dst, uint8_t *src, int st
/* XXX: add ISOC specific test to avoid specific BSD testing. */
/* better than nothing implementation. */
/* btw, rintf() is existing on fbsd too -- alex */
static inline long int lrintf(float x)
static always_inline long int lrintf(float x)
{
#ifdef CONFIG_WIN32
# ifdef ARCH_X86
int32_t i;
asm volatile(
"fistpl %0\n\t"
: "=m" (i) : "t" (x) : "st"
);
return i;
# else
/* XXX: incorrect, but make it compile */
return (int)(x);
return (int)(x + (x < 0 ? -0.5 : 0.5));
# endif
#else
return (int)(rint(x));
#endif


Loading…
Cancel
Save