diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-06-11 20:43:40 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-06-11 20:43:40 +0200 |
commit | 6d90eb23c4a86906b5157feb34e1698bdbf58dd5 (patch) | |
tree | 45f74346408ce072e21dddcb199be7fc82cdb792 /src/DabMultiplexer.cpp | |
parent | 4205ff220c5f7dc71fedb93bce38bddc18aa5b5c (diff) | |
download | dabmux-6d90eb23c4a86906b5157feb34e1698bdbf58dd5.tar.gz dabmux-6d90eb23c4a86906b5157feb34e1698bdbf58dd5.tar.bz2 dabmux-6d90eb23c4a86906b5157feb34e1698bdbf58dd5.zip |
RC: Fix set tist_offset
Diffstat (limited to 'src/DabMultiplexer.cpp')
-rw-r--r-- | src/DabMultiplexer.cpp | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/DabMultiplexer.cpp b/src/DabMultiplexer.cpp index 31b12bb..f0ffa16 100644 --- a/src/DabMultiplexer.cpp +++ b/src/DabMultiplexer.cpp @@ -98,24 +98,26 @@ void MuxTime::increment_timestamp() void MuxTime::set_tist_offset(double new_tist_offset) { - int32_t new_tist_offset_ms = std::lround(new_tist_offset * 1000.0); - if (new_tist_offset_ms > 0) { - while (new_tist_offset_ms > 0) { + const int32_t new_tist_offset_ms = std::lround(new_tist_offset * 1000.0); + int32_t delta = m_tist_offset_ms - new_tist_offset_ms; + if (delta > 0) { + while (delta > 0) { increment_timestamp(); - new_tist_offset_ms -= 24; + delta -= 24; } } - else if (new_tist_offset_ms < 0) { - while (new_tist_offset_ms < 0) { + else if (delta < 0) { + while (delta < 0) { m_edi_time -= 1; - new_tist_offset_ms += 1000; + delta += 1000; } // compensate the we subtracted too much - while (new_tist_offset_ms > 0) { + while (delta > 0) { increment_timestamp(); - new_tist_offset_ms -= 24; + delta -= 24; } } + m_tist_offset_ms = new_tist_offset_ms; } std::pair<uint32_t, std::time_t> MuxTime::get_tist_seconds() @@ -472,8 +474,10 @@ void DabMultiplexer::mux_frame(std::vector<std::shared_ptr<DabOutput> >& outputs auto tist_edi_time = m_time.get_tist_seconds(); const auto timestamp = tist_edi_time.first; const auto edi_time = tist_edi_time.second; + /* etiLog.level(debug) << "Frame " << currentFrame << " " << edi_time << " + " << (timestamp >> TIMESTAMP_LEVEL_2_SHIFT); + */ // Initialise the ETI frame memset(etiFrame, 0, 6144); |