Mercurial > mplayer.hg
annotate osdep/timer-linux.c @ 36319:4e5239ebd43d
Avoid some code duplication.
author | reimar |
---|---|
date | Fri, 09 Aug 2013 20:11:22 +0000 |
parents | 514016233368 |
children |
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> | |
5297 | 23 #include <stdlib.h> |
2476 | 24 #include <time.h> |
1 | 25 #include <sys/time.h> |
16985 | 26 #include "config.h" |
30554 | 27 #include "timer.h" |
1 | 28 |
31464
1453fc56d49c
Change timer_name type from char* to char[]; patch taken from Uoti's tree.
diego
parents:
31461
diff
changeset
|
29 const char timer_name[] = |
12954 | 30 #ifdef HAVE_NANOSLEEP |
29157 | 31 "nanosleep()"; |
12954 | 32 #else |
29157 | 33 "usleep()"; |
12954 | 34 #endif |
35 | |
2273 | 36 int usec_sleep(int usec_delay) |
37 { | |
3090 | 38 #ifdef HAVE_NANOSLEEP |
2273 | 39 struct timespec ts; |
40 ts.tv_sec = usec_delay / 1000000; | |
41 ts.tv_nsec = (usec_delay % 1000000) * 1000; | |
42 return nanosleep(&ts, NULL); | |
43 #else | |
44 return usleep(usec_delay); | |
45 #endif | |
46 } | |
47 | |
99 | 48 // Returns current time in microseconds |
29157 | 49 unsigned int GetTimer(void) |
50 { | |
51 struct timeval tv; | |
52 //float s; | |
53 gettimeofday(&tv,NULL); | |
54 //s = tv.tv_usec; s *= 0.000001; s += tv.tv_sec; | |
55 return tv.tv_sec * 1000000 + tv.tv_usec; | |
56 } | |
1 | 57 |
4385 | 58 // Returns current time in milliseconds |
29157 | 59 unsigned int GetTimerMS(void) |
60 { | |
61 struct timeval tv; | |
62 //float s; | |
63 gettimeofday(&tv,NULL); | |
64 //s = tv.tv_usec; s *= 0.000001; s += tv.tv_sec; | |
65 return tv.tv_sec * 1000 + tv.tv_usec / 1000; | |
66 } | |
4385 | 67 |
29157 | 68 static unsigned int RelativeTime = 0; |
1 | 69 |
70 // Returns time spent between now and last call in seconds | |
29157 | 71 float GetRelativeTime(void) |
72 { | |
73 unsigned int t,r; | |
74 t = GetTimer(); | |
75 //t *= 16; printf("time = %ud\n", t); | |
76 r = t - RelativeTime; | |
77 RelativeTime = t; | |
78 return (float) r * 0.000001F; | |
1 | 79 } |
80 | |
81 // Initialize timer, must be called at least once at start | |
29157 | 82 void InitTimer(void) |
83 { | |
84 GetRelativeTime(); | |
1 | 85 } |