-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConstantFpsTimestampFromFile.h
More file actions
executable file
·72 lines (60 loc) · 1.47 KB
/
ConstantFpsTimestampFromFile.h
File metadata and controls
executable file
·72 lines (60 loc) · 1.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/**
* @file ConstantFpsTimestampFromFile.h
* @ingroup DataManagement
* @author Dominique Vaufreydaz, Grenoble Alpes University, Inria
* @copyright All right reserved.
*/
#ifndef __CONSTANT_FPS_TIMESTAMP_FROM_FILE_H__
#define __CONSTANT_FPS_TIMESTAMP_FROM_FILE_H__
#include "ReadTimestamp.h"
namespace MobileRGBD {
class ConstantFpsTimestampFromFile : public ReadTimestamp
{
public :
ConstantFpsTimestampFromFile( const std::string& FileName, float FrameRate = 30.0f )
: ReadTimestamp( FileName )
{
FirstTimeStamp = true;
if ( FrameRate <= 0.0f || ReadTimestamp::GetNextTimestamp() == false )
{
InitTime.time = InitTime.millitm = 0;
TimeStep = 1;
EndTime.time = EndTime.millitm = 0;
}
else
{
InitTime = CurrentTimestamp;
TimeStep = (int)((1.0f/FrameRate)*1000.0f);
// go to get last frame time
while( ReadTimestamp::GetNextTimestamp() == true )
{
EndTime = CurrentTimestamp;
}
}
}
bool GetNextTimestamp()
{
if ( FirstTimeStamp == true )
{
FirstTimeStamp = false;
CurrentTimestamp = InitTime;
return true;
}
TimeB TimeTmp = CurrentTimestamp;
TimeTmp += (int)TimeStep;
if ( CompareTime(TimeTmp, EndTime) > 0 )
{
// ok, out of scope
return false;
}
CurrentTimestamp = TimeTmp;
return true;
}
protected:
TimeB InitTime;
int TimeStep;
TimeB EndTime;
bool FirstTimeStamp;
};
} // namespace MobileRGBD
#endif // __CONSTANT_FPS_TIMESTAMP_FROM_FILE_H__