diff options
author | diego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-11-21 09:25:10 +0000 |
---|---|---|
committer | diego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2007-11-21 09:25:10 +0000 |
commit | a80b002687a0eb6fcf4bd3550e9c58dcaa00be73 (patch) | |
tree | e41d11d9610218889faf379ff77e7b0a660cb98d /osdep/timer-linux.c | |
parent | 4bb3d604d530cd87d8c981eee4aa65a7867cc359 (diff) | |
download | mpv-a80b002687a0eb6fcf4bd3550e9c58dcaa00be73.tar.bz2 mpv-a80b002687a0eb6fcf4bd3550e9c58dcaa00be73.tar.xz |
Rename timer-lx.c --> timer-linux.c.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@25129 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'osdep/timer-linux.c')
-rw-r--r-- | osdep/timer-linux.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/osdep/timer-linux.c b/osdep/timer-linux.c new file mode 100644 index 0000000000..5b6010b154 --- /dev/null +++ b/osdep/timer-linux.c @@ -0,0 +1,74 @@ +// Precise timer routines for LINUX (C) LGB & A'rpi/ASTRAL + +#include <unistd.h> +#ifdef __BEOS__ +#define usleep(t) snooze(t) +#endif +#include <stdlib.h> +#include <time.h> +#include <sys/time.h> +#include "config.h" + +const char *timer_name = +#ifdef HAVE_NANOSLEEP + "nanosleep()"; +#else + "usleep()"; +#endif + +int usec_sleep(int usec_delay) +{ +#ifdef HAVE_NANOSLEEP + struct timespec ts; + ts.tv_sec = usec_delay / 1000000; + ts.tv_nsec = (usec_delay % 1000000) * 1000; + return nanosleep(&ts, NULL); +#else + return usleep(usec_delay); +#endif +} + +// Returns current time in microseconds +unsigned int GetTimer(void){ + struct timeval tv; +// float s; + gettimeofday(&tv,NULL); +// s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; + return (tv.tv_sec*1000000+tv.tv_usec); +} + +// Returns current time in milliseconds +unsigned int GetTimerMS(void){ + struct timeval tv; +// float s; + gettimeofday(&tv,NULL); +// s=tv.tv_usec;s*=0.000001;s+=tv.tv_sec; + return (tv.tv_sec*1000+tv.tv_usec/1000); +} + +static unsigned int RelativeTime=0; + +// Returns time spent between now and last call in seconds +float GetRelativeTime(void){ +unsigned int t,r; + t=GetTimer(); +// t*=16;printf("time=%ud\n",t); + r=t-RelativeTime; + RelativeTime=t; + return (float)r * 0.000001F; +} + +// Initialize timer, must be called at least once at start +void InitTimer(void){ + GetRelativeTime(); +} + + +#if 0 +void main(void){ + float t=0; + InitTimer(); + while(1){ t+=GetRelativeTime();printf("time= %10.6f\r",t);fflush(stdout); } +} +#endif + |