Over in GroupSockHelper.cpp is a windows implementation of gettimeofday(). There are three implementations for it -- one for CE (?), one that uses
ftime() and another that uses QueryPerformanceCounter().

The version that uses QueryPerformanceCounter() is broken.  With that
implementation, the epoch of the returned times is variant -- seemns to be
last-boot.  gettimeofday() is supposed to return wall clock times with an
invariant epoch.  The ftime() implementation should be used on windows
instead, which one gets by compiling the library with the
USE_OLD_GETTIMEOFDAY_FOR_WINDOWS_CODE symbol defined.

The "QueryPerformaceCounter()" code was introduced - in October 2006 - in response to an email by Dave Arnold, complaining that the old, "ftime()"-based implementation was insufficiently precise. See <http://lists.live555.com/pipermail/live-devel/2006-October/005288.html>. For this reason, I don't want to go back to making the old implementation the default. Instead, I'd rather fix the current implementation, if we can.

Unfortunately I'm not an expert on Windoze-specific API stuff. (Unfortunately Dave Arnold no longer appears to be on this mailing list.) Is there any other Windows function - other than "ftime()" - that returns a correct time, based on a fixed epoch? (If not, then the only possible fix I can think of would be to call "ftime()" just once - for the first call to "gettimeofday()" - to get a fixed 'epoch adjustment' that would be added to the subsequent times returned by "QueryPerformaceCounter()".)
--

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to