Browse Source

av_gettime: support Win32 without gettimeofday()

Based on patch by Ronald S. Bultje.

Signed-off-by: Mans Rullgard <mans@mansr.com>
tags/n1.0
Mans Rullgard 13 years ago
parent
commit
61183b5ab4
2 changed files with 20 additions and 0 deletions
  1. +4
    -0
      configure
  2. +16
    -0
      libavutil/time.c

+ 4
- 0
configure View File

@@ -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



+ 16
- 0
libavutil/time.c View File

@@ -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
}

Loading…
Cancel
Save