Mercurial > mplayer.hg
view osdep/timer-win.c @ 10252:d275152390ee
I've found some time to implement the encoding support for the new
DivX API. Now it's possible to play and encode movies with the
latest DivX release.
One thing that doesn't work is the new Video Buffer Verifier (VBV)
multipass encoding. The encoder segfaults. Maybe it just isn't
supported with the standard profile of the released binary encoder.
Andreas Hess <jaska@gmx.net>
author | arpi |
---|---|
date | Fri, 06 Jun 2003 19:57:37 +0000 |
parents | 2d703cd325ee |
children |
line wrap: on
line source
#include <stdio.h> #include <stdlib.h> #include <windows.h> #include <mmsystem.h> #include <sys/time.h> static LARGE_INTEGER qwTimerFrequency; static LARGE_INTEGER qwTimerStart; static LARGE_INTEGER m_lStartTime; static float m_fuSecsPerTick; static unsigned long RelativeTime = 0; int usec_sleep(int usec_delay) { LARGE_INTEGER qwStartTicks, qwCurrTicks; double dResult; long lTick; double fuSecDelay = ((float) usec_delay) / 1000000.0; QueryPerformanceCounter(&qwStartTicks); do { QueryPerformanceCounter(&qwCurrTicks); dResult = ((double) (qwCurrTicks.QuadPart - qwStartTicks.QuadPart)) / ((double) (qwTimerFrequency.QuadPart)); } while (dResult < fuSecDelay); } // Returns current time in microseconds unsigned long GetTimer() { LARGE_INTEGER qwTime; FLOAT fTime; UINT64 uiQuadPart; QueryPerformanceCounter(&qwTime); qwTime.QuadPart -= m_lStartTime.QuadPart; uiQuadPart = (UINT64) qwTime.QuadPart; uiQuadPart /= ((UINT64) 10); // prevent overflow after 4294.1 secs, now overflows after 42941 secs fTime = ((FLOAT) (uiQuadPart)) / m_fuSecsPerTick; return (unsigned long) fTime; } // Returns current time in microseconds float GetRelativeTime() { unsigned long t, r; t = GetTimer(); r = t - RelativeTime; RelativeTime = t; return (float) r *0.000001F; } // Returns current time in milliseconds unsigned int GetTimerMS() { return GetTimer() / 1000; } void InitTimer() { FLOAT t; QueryPerformanceFrequency(&qwTimerFrequency); // ticks/sec m_fuSecsPerTick = (FLOAT) (((FLOAT) (qwTimerFrequency.QuadPart)) / 1000.0); // tics/msec m_fuSecsPerTick = (FLOAT) (m_fuSecsPerTick / 1000.0); // ticks/usec m_fuSecsPerTick /= 10.0; QueryPerformanceCounter(&m_lStartTime); t = GetRelativeTime(); }