2 #include "parseval.hpp"
4 timemarker::timemarker()
9 timemarker::timemarker(const std::string
& tspec
)
12 if(r
= regex("(0|[1-9][0-9]*)", tspec
)) {
14 frame
= parse_value
<uint64_t>(r
[1]);
15 } else if(r
= regex("(0|[1-9][0-9]*):([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])(\\.([0-9]+))?", tspec
)) {
17 timepos
= parse_value
<uint64_t>(r
[1]) * 3600 +
18 parse_value
<uint64_t>(r
[2]) * 60 +
19 parse_value
<uint64_t>(r
[3]);
21 timepos
+= parse_value
<double>("0" + r
[4]);
22 } else if(r
= regex("([0-9]|[0-5][0-9]):([0-9]|[0-5][0-9])(\\.([0-9]+))?", tspec
)) {
24 timepos
= parse_value
<uint64_t>(r
[1]) * 60 +
25 parse_value
<uint64_t>(r
[2]);
27 timepos
+= parse_value
<double>("0" + r
[3]);
28 } else if(r
= regex("(0|[1-9][0-9]*)(\\.([0-9]+))?", tspec
)) {
30 timepos
= parse_value
<uint64_t>(r
[1]);
32 timepos
+= parse_value
<double>("0" + r
[2]);
34 throw std::runtime_error("Bad timespec");
37 uint64_t timemarker::get_frame(double fps
, uint64_t dflt
) const
44 return fps
* timepos
+ 0.5;