aboutsummaryrefslogtreecommitdiffstats
path: root/src/DabMultiplexer.cpp
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2025-06-11 20:43:40 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2025-06-11 20:43:40 +0200
commit6d90eb23c4a86906b5157feb34e1698bdbf58dd5 (patch)
tree45f74346408ce072e21dddcb199be7fc82cdb792 /src/DabMultiplexer.cpp
parent4205ff220c5f7dc71fedb93bce38bddc18aa5b5c (diff)
downloaddabmux-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.cpp22
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);