[FFmpeg-cvslog] av_gettime: support Win32 without gettimeofday()

Mans Rullgard git at videolan.org
Wed Jun 20 21:25:32 CEST 2012


ffmpeg | branch: master | Mans Rullgard <mans at mansr.com> | Wed Jun 20 13:46:52 2012 +0100| [61183b5ab4c203363ee0ee696bdf4819be307230] | committer: Mans Rullgard

av_gettime: support Win32 without gettimeofday()

Based on patch by Ronald S. Bultje.

Signed-off-by: Mans Rullgard <mans at mansr.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=61183b5ab4c203363ee0ee696bdf4819be307230
---

 configure        |    4 ++++
 libavutil/time.c |   16 ++++++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/configure b/configure
index 0baa755..07608c4 100755
--- a/configure
+++ b/configure
@@ -1084,7 +1084,9 @@ HAVE_LIST="
     GetProcessAffinityMask
     GetProcessMemoryInfo
     GetProcessTimes
+    GetSystemTimeAsFileTime
     getrusage
+    gettimeofday
     gnu_as
     ibm_asm
     inet_aton
@@ -2832,6 +2834,7 @@ check_func  getaddrinfo $network_extralibs
 check_func  gethrtime
 check_func  getrusage
 check_struct "sys/time.h sys/resource.h" "struct rusage" ru_maxrss
+check_func  gettimeofday
 check_func  inet_aton $network_extralibs
 check_func  isatty
 check_func  localtime_r
@@ -2851,6 +2854,7 @@ check_func_headers io.h setmode
 check_lib2 "windows.h psapi.h" GetProcessMemoryInfo -lpsapi
 check_func_headers windows.h GetProcessAffinityMask
 check_func_headers windows.h GetProcessTimes
+check_func_headers windows.h GetSystemTimeAsFileTime
 check_func_headers windows.h MapViewOfFile
 check_func_headers windows.h VirtualAlloc
 
diff --git a/libavutil/time.c b/libavutil/time.c
index a0b713e..80c4029 100644
--- a/libavutil/time.c
+++ b/libavutil/time.c
@@ -16,15 +16,31 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "config.h"
+
 #include <stddef.h>
 #include <stdint.h>
+#if HAVE_GETTIMEOFDAY
 #include <sys/time.h>
+#elif HAVE_GETSYSTEMTIMEASFILETIME
+#include <windows.h>
+#endif
 
 #include "libavutil/time.h"
 
 int64_t av_gettime(void)
 {
+#if HAVE_GETTIMEOFDAY
     struct timeval tv;
     gettimeofday(&tv, NULL);
     return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec;
+#elif HAVE_GETSYSTEMTIMEASFILETIME
+    FILETIME ft;
+    int64_t t;
+    GetSystemTimeAsFileTime(&ft);
+    t = (int64_t)ft.dwHighDateTime << 32 | ft.dwLowDateTime;
+    return t / 10 - 11644473600000000; /* Jan 1, 1601 */
+#else
+    return -1;
+#endif
 }



More information about the ffmpeg-cvslog mailing list