[FFmpeg-devel] [PATCH] Use hi-res timer under win32 builds
Måns Rullgård
mans
Mon Oct 15 09:54:56 CEST 2007
Fred Rothganger <fred at rothganger.org> writes:
> I am compiling ffmpeg under cygwin with -mno-cygwin, and then linking
> the resulting static libs under MSVC 2005 edition. There are three
> symbols that remain undefined at link time:
>
> _snprintf
> _gettimeofday
> _round
>
> This patch addresses _gettimeofday. It is supplying a microsecond
> resolution time value for general use. Under cygwin, the resolution
> of _gettimeofday is much more coarse, on the order of 10ms. Also, as
> noted above, this breaks linkage with the MSVC runtime. Instead, we
> can use a high resolution timer calls in the win32 api.
>
> -- Fred
> Index: utils.c
> ===================================================================
> --- utils.c (revision 10737)
> +++ utils.c (working copy)
> @@ -22,8 +22,12 @@
> #include "opt.h"
> #include "avstring.h"
> #include "riff.h"
> -#include <sys/time.h>
> -#include <time.h>
> +#if defined(WIN32) || defined(__CYGWIN__)
> +# include <windows.h>
> +#else
> +# include <sys/time.h>
> +# include <time.h>
> +#endif
You really haven't been paying much attention recently, have you?
We've worked long and hard to get rid of all such #ifdeffery, and
we're not likely to start accepting such patches again.
> #undef NDEBUG
> #include <assert.h>
> @@ -2579,9 +2583,21 @@
> */
> int64_t av_gettime(void)
> {
> +# if defined(WIN32) || defined(__CYGWIN__)
> +
> + LARGE_INTEGER count;
> + LARGE_INTEGER frequency;
> + QueryPerformanceCounter (&count);
> + QueryPerformanceFrequency (&frequency);
> + return count.QuadPart * 1000000 / frequency.QuadPart;
> +
> +# else
> +
> struct timeval tv;
> gettimeofday(&tv,NULL);
> return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec;
> +
> +# endif
Why is it that everything in Windows is so hideously, appallingly,
abominably ugly?
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list