aboutsummaryrefslogtreecommitdiffstats
path: root/src/TimestampDecoder.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2019-01-23 11:00:02 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2019-01-23 11:00:02 +0100
commit201d711a1d3dfbe46d622871731005937598e790 (patch)
treee43a95ee027e1be6ca8621f9e2c78aaf932a3421 /src/TimestampDecoder.cpp
parent674228bedb325384f12602350ab36d075b5509a3 (diff)
parente0abfc3728fb56519fa2507d2468214e2a633c98 (diff)
downloaddabmod-201d711a1d3dfbe46d622871731005937598e790.tar.gz
dabmod-201d711a1d3dfbe46d622871731005937598e790.tar.bz2
dabmod-201d711a1d3dfbe46d622871731005937598e790.zip
Merge branch 'next' into lime
Diffstat (limited to 'src/TimestampDecoder.cpp')
-rw-r--r--src/TimestampDecoder.cpp24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/TimestampDecoder.cpp b/src/TimestampDecoder.cpp
index 4aaaf67..a561237 100644
--- a/src/TimestampDecoder.cpp
+++ b/src/TimestampDecoder.cpp
@@ -35,6 +35,28 @@
//#define MDEBUG(fmt, args...) fprintf (LOG, "*****" fmt , ## args)
#define MDEBUG(fmt, args...) PDEBUG(fmt, ## args)
+frame_timestamp& frame_timestamp::operator+=(const double& diff)
+{
+ double offset_pps, offset_secs;
+ offset_pps = modf(diff, &offset_secs);
+
+ this->timestamp_sec += lrint(offset_secs);
+ int64_t new_pps = (int64_t)this->timestamp_pps + llrint(offset_pps * 16384000.0);
+
+ while (new_pps < 0) {
+ this->timestamp_sec -= 1;
+ new_pps += 16384000;
+ }
+
+ while (new_pps > 16384000) {
+ this->timestamp_sec += 1;
+ new_pps -= 16384000;
+ }
+
+ this->timestamp_pps = new_pps;
+ return *this;
+}
+
TimestampDecoder::TimestampDecoder(double& offset_s) :
RemoteControllable("tist"),
timestamp_offset(offset_s)
@@ -65,8 +87,6 @@ std::shared_ptr<frame_timestamp> TimestampDecoder::getTimestamp()
ts->timestamp_refresh = offset_changed;
offset_changed = false;
- MDEBUG("time_secs=%d, time_pps=%f\n", time_secs,
- (double)time_pps / 16384000.0);
*ts += timestamp_offset;
return ts;