diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-09-10 18:08:39 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2025-09-10 18:08:39 +0200 |
commit | 14724a1722c18821678d95b7aba44bed6c3a2da7 (patch) | |
tree | 1af2bf3c74eec7b46f72d693a6ece65cd11d7128 /src | |
parent | 64694dc8561aa0a3b6399c59aad770a38a2f9ae2 (diff) | |
parent | 42bba9781feb5bf2a299a505abab32d92bf5fc10 (diff) | |
download | ODR-PadEnc-14724a1722c18821678d95b7aba44bed6c3a2da7.tar.gz ODR-PadEnc-14724a1722c18821678d95b7aba44bed6c3a2da7.tar.bz2 ODR-PadEnc-14724a1722c18821678d95b7aba44bed6c3a2da7.zip |
Merge 'cosimo-tribe/dont-delay-dls-on-overlap' into next
Diffstat (limited to 'src')
-rw-r--r-- | src/odr-padenc.cpp | 24 | ||||
-rw-r--r-- | src/odr-padenc.h | 1 |
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; |