aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2020-12-29 11:54:36 +0100
committerMatthias P. Braendli <matthias.braendli@mpb.li>2020-12-29 11:54:36 +0100
commitac13498dc219c74d8214a314d0341574ada0ceb3 (patch)
tree38be2f08137006bb94a763016f289359132d7c7d
parentfbf20c6eb5c989687d2dcb8e97c8a2af9c51cc90 (diff)
downloadODR-AudioEnc-ac13498dc219c74d8214a314d0341574ada0ceb3.tar.gz
ODR-AudioEnc-ac13498dc219c74d8214a314d0341574ada0ceb3.tar.bz2
ODR-AudioEnc-ac13498dc219c74d8214a314d0341574ada0ceb3.zip
Make EDI output FEC configurable
-rw-r--r--src/Outputs.cpp8
-rw-r--r--src/Outputs.h3
-rw-r--r--src/odr-audioenc.cpp5
3 files changed, 14 insertions, 2 deletions
diff --git a/src/Outputs.cpp b/src/Outputs.cpp
index 27ab365..66335cb 100644
--- a/src/Outputs.cpp
+++ b/src/Outputs.cpp
@@ -155,8 +155,6 @@ void EDI::add_udp_destination(const std::string& host, unsigned int port)
// We cannot carry AF packets over UDP, because they would be too large.
m_edi_conf.enable_pft = true;
-
- // TODO make FEC configurable
}
void EDI::add_tcp_destination(const std::string& host, unsigned int port)
@@ -172,6 +170,12 @@ void EDI::add_tcp_destination(const std::string& host, unsigned int port)
m_edi_conf.dump = false;
}
+void EDI::set_fec(int fec)
+{
+ m_edi_conf.enable_pft = true;
+ m_edi_conf.fec = fec;
+}
+
bool EDI::enabled() const
{
return not m_edi_conf.destinations.empty();
diff --git a/src/Outputs.h b/src/Outputs.h
index 1211841..7184206 100644
--- a/src/Outputs.h
+++ b/src/Outputs.h
@@ -138,6 +138,9 @@ class EDI: public Base {
void add_udp_destination(const std::string& host, unsigned int port);
void add_tcp_destination(const std::string& host, unsigned int port);
+ // Enables PFT layer and sets FEC
+ void set_fec(int fec);
+
void set_tist(bool enable, uint32_t delay_ms);
bool enabled() const;
diff --git a/src/odr-audioenc.cpp b/src/odr-audioenc.cpp
index f6b8b94..db3447b 100644
--- a/src/odr-audioenc.cpp
+++ b/src/odr-audioenc.cpp
@@ -197,6 +197,7 @@ static void usage(const char* name)
" If more than one ZMQ output is given, the socket\n"
" will be connected to all listed endpoints.\n"
" -e, --edi=URI EDI output uri, (e.g. 'tcp://localhost:7000')\n"
+ " --fec=FEC Set EDI output FEC\n"
" -T, --timestamp-delay=DELAY_MS Enabled timestamps in EDI (requires TAI clock bulletin download) and\n"
" add a delay (in milliseconds) to the timestamps carried in EDI\n"
" -k, --secret-key=FILE Enable ZMQ encryption with the given secret key.\n"
@@ -1356,6 +1357,7 @@ int main(int argc, char *argv[])
{"dabpsy", required_argument, 0, 5 },
{"device", required_argument, 0, 'd'},
{"edi", required_argument, 0, 'e'},
+ {"fec", required_argument, 0, 8 },
{"timestamp-delay", required_argument, 0, 'T'},
{"decode", required_argument, 0, 6 },
{"format", required_argument, 0, 'f'},
@@ -1467,6 +1469,9 @@ int main(int argc, char *argv[])
return 1;
}
break;
+ case 8: // EDI output FEC
+ audio_enc.edi_output.set_fec(std::stoi(optarg));
+ break;
case 'a':
audio_enc.selected_encoder = encoder_selection_t::toolame_dab;
break;