Mercurial > mplayer.hg
annotate osdep/timer-linux.c @ 31835:73f85fc599e0
Add sanity-check for sector size to avoid strange crashes if it is
too large.
author | reimar |
---|---|
date | Tue, 03 Aug 2010 16:01:40 +0000 |
parents | 1453fc56d49c |
children | 514016233368 |
rev | line source |
---|---|
28744 | 1 /* |
2 * precise timer routines for Linux | |
3 * copyright (C) LGB & A'rpi/ASTRAL | |
4 * | |
5 * This file is part of MPlayer. | |
6 * | |
7 * MPlayer is free software; you can redistribute it and/or modify | |
8 * it under the terms of the GNU General Public License as published by | |
9 * the Free Software Foundation; either version 2 of the License, or | |
10 * (at your option) any later version. | |
11 * | |
12 * MPlayer is distributed in the hope that it will be useful, | |
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 * GNU General Public License for more details. | |
16 * | |
17 * You should have received a copy of the GNU General Public License along | |
18 * with MPlayer; if not, write to the Free Software Foundation, Inc., | |
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |
20 */ | |
1 | 21 |
22 #include <unistd.h> | |
13612 | 23 #ifdef __BEOS__ |
24 #define usleep(t) snooze(t) | |
25 #endif | |
5297 | 26 #include <stdlib.h> |
2476 | 27 #include <time.h> |
1 | 28 #include <sys/time.h> |
16985 | 29 #include "config.h" |
30554 | 30 #include "timer.h" |
1 | 31 |
31464
1453fc56d49c
Change timer_name type from char* to char[]; patch taken from Uoti's tree.
diego
parents:
31461
diff
changeset
|
32 const char timer_name[] = |
12954 | 33 #ifdef HAVE_NANOSLEEP |
29157 | 34 "nanosleep()"; |
12954 | 35 #else |
29157 | 36 "usleep()"; |
12954 | 37 #endif |
38 | |
2273 | 39 int usec_sleep(int usec_delay) |
40 { | |
3090 | 41 #ifdef HAVE_NANOSLEEP |
2273 | 42 struct timespec ts; |
43 ts.tv_sec = usec_delay / 1000000; | |
44 ts.tv_nsec = (usec_delay % 1000000) * 1000; | |
45 return nanosleep(&ts, NULL); | |
46 #else | |
47 return usleep(usec_delay); | |
48 #endif | |
49 } | |
50 | |
99 | 51 // Returns current time in microseconds |
29157 | 52 unsigned int GetTimer(void) |
53 { | |
54 struct timeval tv; | |
55 //float s; | |
56 gettimeofday(&tv,NULL); | |
57 //s = tv.tv_usec; s *= 0.000001; s += tv.tv_sec; | |
58 return tv.tv_sec * 1000000 + tv.tv_usec; | |
59 } | |
1 | 60 |
4385 | 61 // Returns current time in milliseconds |
29157 | 62 unsigned int GetTimerMS(void) |
63 { | |
64 struct timeval tv; | |
65 //float s; | |
66 gettimeofday(&tv,NULL); | |
67 //s = tv.tv_usec; s *= 0.000001; s += tv.tv_sec; | |
68 return tv.tv_sec * 1000 + tv.tv_usec / 1000; | |
69 } | |
4385 | 70 |
29157 | 71 static unsigned int RelativeTime = 0; |
1 | 72 |
73 // Returns time spent between now and last call in seconds | |
29157 | 74 float GetRelativeTime(void) |
75 { | |
76 unsigned int t,r; | |
77 t = GetTimer(); | |
78 //t *= 16; printf("time = %ud\n", t); | |
79 r = t - RelativeTime; | |
80 RelativeTime = t; | |
81 return (float) r * 0.000001F; | |
1 | 82 } |
83 | |
84 // Initialize timer, must be called at least once at start | |
29157 | 85 void InitTimer(void) |
86 { | |
87 GetRelativeTime(); | |
1 | 88 } |