Mercurial > mplayer.hg
diff osdep/timer-lx.c @ 9380:edfe34c5405d
linux->osdep
author | arpi |
---|---|
date | Sun, 09 Feb 2003 20:18:23 +0000 |
parents | linux/timer-lx.c@f297030ef5ab |
children | f9755d9c479a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/osdep/timer-lx.c Sun Feb 09 20:18:23 2003 +0000 @@ -0,0 +1,67 @@ +// Precise timer routines for LINUX (C) LGB & A'rpi/ASTRAL + +#include <unistd.h> +#include <stdlib.h> +#include <time.h> +#include <sys/time.h> +#include "../config.h" + +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(){ + struct timeval tv; + struct timezone tz; +// float s; + gettimeofday(&tv,&tz); +// 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(){ + struct timeval tv; + struct timezone tz; +// float s; + gettimeofday(&tv,&tz); +// 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(){ +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(){ + GetRelativeTime(); +} + + +#if 0 +void main(){ + float t=0; + InitTimer(); + while(1){ t+=GetRelativeTime();printf("time= %10.6f\r",t);fflush(stdout); } +} +#endif +