aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCosimo Tribe <cosimo.tribe@gmail.com>2022-09-28 10:06:00 +0200
committerCosimo Tribe <cosimo.tribe@gmail.com>2022-09-28 10:06:00 +0200
commitdd11d0dbbb7e39137f5e3bd9fae69f273340a5a2 (patch)
tree6b7dbf9b39eece1074a9e5fc1a4a8e7ccb07c719
parent49e5d8b196993db7d352fd046f6ded7ff407fc30 (diff)
downloadODR-PadEnc-dd11d0dbbb7e39137f5e3bd9fae69f273340a5a2.tar.gz
ODR-PadEnc-dd11d0dbbb7e39137f5e3bd9fae69f273340a5a2.tar.bz2
ODR-PadEnc-dd11d0dbbb7e39137f5e3bd9fae69f273340a5a2.zip
Don't delay DLS transmission on overlap
-rw-r--r--src/odr-padenc.cpp22
-rw-r--r--src/odr-padenc.h1
2 files changed, 16 insertions, 7 deletions
diff --git a/src/odr-padenc.cpp b/src/odr-padenc.cpp
index 76439e7..9dd0c29 100644
--- a/src/odr-padenc.cpp
+++ b/src/odr-padenc.cpp
@@ -456,13 +456,20 @@ int PadEncoder::EncodeSlide() {
int PadEncoder::EncodeLabel() {
// skip insertion, if previous one not yet finished
if (pad_packetizer.QueueContainsDG(DLSEncoder::APPTYPE_START)) {
- fprintf(stderr, "ODR-PadEnc Warning: skipping label insertion, as previous one still in transmission!\n");
+ if(!label_warn_shown) {
+ fprintf(stderr, "ODR-PadEnc Warning: there is a label already in transmission, delaying until the previous one ends.\n");
+ label_warn_shown = true;
+ }
+ return 0;
}
else {
+ if(label_warn_shown) {
+ fprintf(stderr, "Previous label ended transmission, sending the new one.\n");
+ label_warn_shown = false;
+ }
dls_encoder.encodeLabel(options.dls_files[curr_dls_file], options.item_state_file, options.dl_params);
+ return 1;
}
-
- return 0;
}
@@ -533,12 +540,13 @@ int PadEncoder::Encode(PadInterface& intf) {
if (pad_timeline >= next_label_insertion) {
// encode label
- result = EncodeLabel();
- next_label_insertion += std::chrono::milliseconds(options.label_insertion);
+ int label_encode_result = 0;
+ label_encode_result = EncodeLabel();
+ if(label_encode_result > 0) {
+ next_label_insertion += std::chrono::milliseconds(options.label_insertion);
+ }
}
}
- if (result)
- return result;
// flush one PAD (considering X-PAD output interval)
auto pad = pad_packetizer.GetNextPAD(xpad_interval_counter == 0);
diff --git a/src/odr-padenc.h b/src/odr-padenc.h
index c493d95..6a48516 100644
--- a/src/odr-padenc.h
+++ b/src/odr-padenc.h
@@ -82,6 +82,7 @@ protected:
SLSEncoder sls_encoder;
SlideStore slides;
bool slides_success;
+ bool label_warn_shown;
int curr_dls_file;
steady_clock::time_point next_slide;
steady_clock::time_point next_label;