diff --git a/configure b/configure index cf52539edb2dd36b14c7b3b5dd4738c0d09ccb19..466174c2ac361d6a7d79366d88845f43f00bdc77 100755 --- a/configure +++ b/configure @@ -667,6 +667,7 @@ HAVE_LIST=" fast_unaligned fork freetype2 + GetProcessTimes getrusage imlib2 inet_aton @@ -1598,6 +1599,7 @@ elif check_func dlopen -ldl; then fi check_func getrusage +check_func2 windows.h GetProcessTimes check_func fork diff --git a/ffmpeg.c b/ffmpeg.c index 3539ae0bbf67656c9b0f24aa81b143198a988909..ac52d7a2bb037e6221b093b0416fc617cecba52c 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -34,6 +34,10 @@ #include "fifo.h" #include "avstring.h" +#if !defined(HAVE_GETRUSAGE) && defined(HAVE_GETPROCESSTIMES) +#include <windows.h> +#endif + #if defined(HAVE_TERMIOS_H) #include <unistd.h> #include <fcntl.h> @@ -3112,7 +3116,13 @@ static int64_t getutime(void) getrusage(RUSAGE_SELF, &rusage); return (rusage.ru_utime.tv_sec * 1000000LL) + rusage.ru_utime.tv_usec; -#elif defined(__MINGW32__) +#elif defined(HAVE_GETPROCESSTIMES) + HANDLE proc; + FILETIME c, e, k, u; + proc = GetCurrentProcess(); + GetProcessTimes(proc, &c, &e, &k, &u); + return ((int64_t) u.dwHighDateTime << 32 | u.dwLowDateTime) / 10; +#else return av_gettime(); #endif }