ITK Release 4/Video/Time Stamp: Difference between revisions
From KitwarePublic
< ITK Release 4 | Video
Jump to navigationJump to search
(→Scales) |
(→Scales) |
||
Line 40: | Line 40: | ||
= Scales = | = Scales = | ||
If counting from a given starting point: | If counting from a given starting point (forward): | ||
Line 53: | Line 53: | ||
** 2**64 / ( 1000000 * 3600 * 24.0 * 365 ) = 584942 | ** 2**64 / ( 1000000 * 3600 * 24.0 * 365 ) = 584942 | ||
** (or in nanoseconds up to 584 years) | ** (or in nanoseconds up to 584 years) | ||
If counting relative times: | |||
* int32 -> will use the sign, and can count (-2.4, +2.4) years | |||
* double -> and can count (-142, +142) years | |||
= Units = | = Units = |
Revision as of 14:44, 29 November 2010
Reference Systems
VRPN - UNC
URL
http://www.cs.unc.edu/Research/vrpn/vrpn_getting_started.html
Time Stamp Structure
<source lang="cpp"> struct timeval
{ __time_t tv_sec; /* Seconds. */ __suseconds_t tv_usec; /* Microseconds. */ };
</source>
OpenCV
- include/opencv/cv.h: double timestamp
- src/cv/_cvipp.h: float timestamp
- 3rdparty/include/ffmpeg_/avformat.h: int64_t timestamp;
KWSys
- static double GetTime();
ITK RealTimeClock
System Time
Scales
If counting from a given starting point (forward):
- int32 : can count in microseconds, up to 4.5 years
- 2**32 / (30 * 3600 * 24.0 * 365 ) = 4.5 years
- double : can count in microseconds, up to 285 years (before losing any precision)
- 2^53 / ( 1000000 * 3600 * 24.0 * 365 ) = 285
- after that it will be counting in tens of microseconds...
- int64 : can count in microseconds, up to 584942 years
- 2**64 / ( 1000000 * 3600 * 24.0 * 365 ) = 584942
- (or in nanoseconds up to 584 years)
If counting relative times:
- int32 -> will use the sign, and can count (-2.4, +2.4) years
- double -> and can count (-142, +142) years
Units
- Should the time units be specified ?
- Use microseconds ?
Proposal
- Use double as internal representation
- Use micro-seconds as unit
- Have convenience methods to return time in other units
- seconds, hours, days
- Have convenience methods for computing differences between two times
- Encapsulated type:
- External time representation = double in microseconds
- Internal time representation is private and is not exposed
- Two Classes
- TimeStamp
- TimeInterval
- TimeInterval = TimeStamp - TimeStamp
- TimeStamp = TimeStamp + TimeInterval