aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/odr-padenc.cpp24
-rw-r--r--src/odr-padenc.h1
2 files changed, 17 insertions, 8 deletions
diff --git a/src/odr-padenc.cpp b/src/odr-padenc.cpp
index 5bba914..5862d17 100644
--- a/src/odr-padenc.cpp
+++ b/src/odr-padenc.cpp
@@ -457,15 +457,22 @@ int PadEncoder::EncodeSlide() {
}
int PadEncoder::EncodeLabel() {
- // skip insertion, if previous one not yet finished
+ // delay 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, "ODR-PadEnc 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;
}
@@ -536,12 +543,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;