summaryrefslogtreecommitdiffstats
path: root/osdep/timer-linux.c
diff options
context:
space:
mode:
authordiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-11-21 09:25:10 +0000
committerdiego <diego@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-11-21 09:25:10 +0000
commita80b002687a0eb6fcf4bd3550e9c58dcaa00be73 (patch)
treee41d11d9610218889faf379ff77e7b0a660cb98d /osdep/timer-linux.c
parent4bb3d604d530cd87d8c981eee4aa65a7867cc359 (diff)
downloadmpv-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.c74
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
+