diff --git a/configure b/configure index cf52539edb..466174c2ac 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 3539ae0bbf..ac52d7a2bb 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 +#endif + #if defined(HAVE_TERMIOS_H) #include #include @@ -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 }