1 /***************************************************************************** 2 * vlc_mtime.h: high resolution time management functions 3 ***************************************************************************** 4 * This header provides portable high precision time management functions, 5 * which should be the only ones used in other segments of the program, since 6 * functions like gettimeofday() and ftime() are not always supported. 7 * Most functions are declared as inline or as macros since they are only 8 * interfaces to system calls and have to be called frequently. 9 * 'm' stands for 'micro', since maximum resolution is the microsecond. 10 * Functions prototyped are implemented in interface/mtime.c. 11 ***************************************************************************** 12 * Copyright (C) 1996, 1997, 1998, 1999, 2000 VLC authors and VideoLAN 13 * $Id: 311eb670eb7b9f35668196b78c9fa3c5cf1779db $ 14 * 15 * Authors: Vincent Seguin <seguin@via.ecp.fr> 16 * 17 * This program is free software; you can redistribute it and/or modify it 18 * under the terms of the GNU Lesser General Public License as published by 19 * the Free Software Foundation; either version 2.1 of the License, or 20 * (at your option) any later version. 21 * 22 * This program is distributed in the hope that it will be useful, 23 * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 * GNU Lesser General Public License for more details. 26 * 27 * You should have received a copy of the GNU Lesser General Public License 28 * along with this program; if not, write to the Free Software Foundation, 29 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. 30 *****************************************************************************/ 31 32 #ifndef __VLC_MTIME_H 33 # define __VLC_MTIME_H 1 34 35 /***************************************************************************** 36 * LAST_MDATE: date which will never happen 37 ***************************************************************************** 38 * This date can be used as a 'never' date, to mark missing events in a function 39 * supposed to return a date, such as nothing to display in a function 40 * returning the date of the first image to be displayed. It can be used in 41 * comparaison with other values: all existing dates will be earlier. 42 *****************************************************************************/ 43 #define LAST_MDATE ((mtime_t)((uint64_t)(-1)/2)) 44 45 /***************************************************************************** 46 * MSTRTIME_MAX_SIZE: maximum possible size of mstrtime 47 ***************************************************************************** 48 * This values is the maximal possible size of the string returned by the 49 * mstrtime() function, including '-' and the final '\0'. It should be used to 50 * allocate the buffer. 51 *****************************************************************************/ 52 #define MSTRTIME_MAX_SIZE 22 53 54 /***************************************************************************** 55 * Prototypes 56 *****************************************************************************/ 57 VLC_API char * secstotimestr( char *psz_buffer, int32_t secs ); 58 59 /***************************************************************************** 60 * date_t: date incrementation without long-term rounding errors 61 *****************************************************************************/ 62 struct date_t 63 { 64 mtime_t date; 65 uint32_t i_divider_num; 66 uint32_t i_divider_den; 67 uint32_t i_remainder; 68 }; 69 70 VLC_API void date_Init( date_t *, uint32_t, uint32_t ); 71 VLC_API void date_Change( date_t *, uint32_t, uint32_t ); 72 VLC_API void date_Set( date_t *, mtime_t ); 73 VLC_API mtime_t date_Get( const date_t * ); 74 VLC_API void date_Move( date_t *, mtime_t ); 75 VLC_API mtime_t date_Increment( date_t *, uint32_t ); 76 VLC_API mtime_t date_Decrement( date_t *, uint32_t ); 77 VLC_API uint64_t NTPtime64( void ); 78 #endif /* !__VLC_MTIME_ */ 79