[theora] Building theora 1.1.1 with mingw-w64-gcc 7.1 and msys

Edgar Reynaldo edgarreynaldo at members.allegro.cc
Thu Jun 1 19:53:29 UTC 2017


I recently attempted to build theora 1.1.1 with mingw-w64-gcc 7.1 and 
msys and it fails to build the encoder_example.c example program. There 
are multiple declarations of the function 'rint'. The source file 
created its own version of the function that rounds AWAY from zero. 
MinGW-W64 has its own version of the 'rint' function, which does not 
round away from zero. Therefore, encoder_example.c's rint function is 
necessary, but needs to be renamed because it includes math.h, which 
defines "extern __cdecl double rint(double)".

Here is the relevant function from encoder_example.c lines 50-62 :

#ifdef _WIN32
/*supply missing headers and functions to Win32. going to hell, I know*/
#include <fcntl.h>
#include <io.h>

static double rint(double x)
   if (x < 0.0)
     return (double)(int)(x - 0.5);
     return (double)(int)(x + 0.5);

Is this fixed in more recent versions? Should I use 1.2 alpha? Should I 
build from the latest repository source? Ideas?

I'm willing to submit a patch, but I don't know what the resulting 
function should be renamed.


More information about the theora mailing list