summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Outputs.cpp17
-rw-r--r--src/Outputs.h6
-rw-r--r--src/odr-audioenc.cpp25
3 files changed, 36 insertions, 12 deletions
diff --git a/src/Outputs.cpp b/src/Outputs.cpp
index 97caaee..01156ce 100644
--- a/src/Outputs.cpp
+++ b/src/Outputs.cpp
@@ -1,6 +1,6 @@
/* ------------------------------------------------------------------
* Copyright (C) 2011 Martin Storsjo
- * Copyright (C) 2019 Matthias P. Braendli
+ * Copyright (C) 2020 Matthias P. Braendli
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -141,6 +141,11 @@ EDI::EDI() :
EDI::~EDI() { }
+void EDI::set_odr_version_tag(const std::string& odr_version_tag)
+{
+ m_odr_version_tag = odr_version_tag;
+}
+
void EDI::add_udp_destination(const std::string& host, unsigned int port)
{
auto dest = make_shared<edi::udp_destination_t>();
@@ -224,15 +229,7 @@ bool EDI::write_frame(const uint8_t *buf, size_t len)
edi::TagODRAudioLevels edi_tagAudioLevels(m_audio_left, m_audio_right);
- stringstream ss;
- ss << PACKAGE_NAME << " " <<
-#if defined(GITVERSION)
- GITVERSION;
-#else
- PACKAGE_VERSION;
-#endif
- edi::TagODRVersion edi_tagVersion(ss.str(), m_num_seconds_sent);
-
+ edi::TagODRVersion edi_tagVersion(m_odr_version_tag, m_num_seconds_sent);
// The above Tag Items will be assembled into a TAG Packet
edi::TagPacket edi_tagpacket(m_edi_conf.tagpacket_alignment);
diff --git a/src/Outputs.h b/src/Outputs.h
index 0f1f34f..3a302b1 100644
--- a/src/Outputs.h
+++ b/src/Outputs.h
@@ -1,6 +1,6 @@
/* ------------------------------------------------------------------
* Copyright (C) 2011 Martin Storsjo
- * Copyright (C) 2019 Matthias P. Braendli
+ * Copyright (C) 2020 Matthias P. Braendli
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -133,6 +133,8 @@ class EDI: public Base {
EDI& operator=(const EDI&) = delete;
virtual ~EDI() override;
+ void set_odr_version_tag(const std::string& odr_version_tag);
+
void add_udp_destination(const std::string& host, unsigned int port);
void add_tcp_destination(const std::string& host, unsigned int port);
@@ -143,6 +145,8 @@ class EDI: public Base {
virtual bool write_frame(const uint8_t *buf, size_t len) override;
private:
+ std::string m_odr_version_tag;
+
edi::configuration_t m_edi_conf;
std::shared_ptr<edi::Sender> m_edi_sender;
diff --git a/src/odr-audioenc.cpp b/src/odr-audioenc.cpp
index 61317e5..e0b38f5 100644
--- a/src/odr-audioenc.cpp
+++ b/src/odr-audioenc.cpp
@@ -1,6 +1,6 @@
/* ------------------------------------------------------------------
* Copyright (C) 2011 Martin Storsjo
- * Copyright (C) 2019 Matthias P. Braendli
+ * Copyright (C) 2020 Matthias P. Braendli
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -182,6 +182,7 @@ void usage(const char* name)
" -B, --bandwidth=VALUE Set the AAC encoder bandwidth to VALUE [Hz].\n"
" --decode=FILE Decode the AAC back to a wav file (loopback test).\n"
" Output and PAD parameters:\n"
+ " --identifier=ID An identifier string that is sent in the ODRv EDI TAG. Max 32 characters length.\n"
" -o, --output=URI Output ZMQ uri. (e.g. 'tcp://localhost:9000')\n"
" -or- Output file uri. (e.g. 'file.dabp')\n"
" -or- a single dash '-' to denote stdout\n"
@@ -433,6 +434,7 @@ public:
shared_ptr<Output::File> file_output;
shared_ptr<Output::ZMQ> zmq_output;
Output::EDI edi_output;
+ string identifier;
bool tist_enabled = false;
uint32_t tist_delay_ms = 0;
@@ -611,6 +613,16 @@ int AudioEnc::run()
if (not edi_output_uris.empty()) {
edi_output.set_tist(tist_enabled, tist_delay_ms);
+
+ stringstream ss;
+ ss << PACKAGE_NAME << " " <<
+#if defined(GITVERSION)
+ GITVERSION <<
+#else
+ PACKAGE_VERSION <<
+#endif
+ " " << identifier;
+ edi_output.set_odr_version_tag(ss.str());
}
if (padlen != 0) {
@@ -1322,6 +1334,7 @@ int main(int argc, char *argv[])
{"timestamp-delay", required_argument, 0, 'T'},
{"decode", required_argument, 0, 6 },
{"format", required_argument, 0, 'f'},
+ {"identifier", required_argument, 0, 7 },
{"input", required_argument, 0, 'i'},
{"jack", required_argument, 0, 'j'},
{"output", required_argument, 0, 'o'},
@@ -1405,6 +1418,16 @@ int main(int argc, char *argv[])
case 6: // Enable loopback decoder for AAC
audio_enc.decode_wavfilename = optarg;
break;
+ case 7: // Identifier for in-band version information
+ audio_enc.identifier = optarg;
+ /* The 32 character length restriction is arbitrary, but guarantees
+ * that the EDI packet will not grow too large */
+ if (audio_enc.identifier.size() > 32) {
+ fprintf(stderr, "Output Identifier too long!\n");
+ usage(argv[0]);
+ return 1;
+ }
+ break;
case 'a':
audio_enc.selected_encoder = encoder_selection_t::toolame_dab;
break;