This file contains information about the changes done to
ODR-DabMux in this repository

2026-05-08: Matthias P. Braendli <matthias@mpb.li>
	(v5.5.0):
		Update project to C++20, libboost 1.71.
		Add hot-reload for frequency_information and other ensembles information.
		Add HTTP server for stats.
		Add FIG0/20.
		Improve FIG repetition for highly-loaded ensembles (Three fic-schedulers now exist)
		Add manual TAI offset setting, bypassing bulletin parsing.
		Improve UDP multicast EDI input.

2025-10-01: Matthias P. Braendli <matthias@mpb.li>
	(v5.4.1):
		Fix race condition in TCP output stats that can lock up
		odr-dabmux on some systems.
		Add linkage-set hot-reload.

2025-09-10: Matthias P. Braendli <matthias@mpb.li>
	(v5.4.0):
		Add support for UDP EDI input to specify local interface IP.
		Make sourceport optional in EDI output config.

2025-06-25: Matthias P. Braendli <matthias@mpb.li>
	(v5.3.0):
		Remove broken gui/ and point towards ODR-DabMux-GUI in README instead.
		Improve logging about SSnn zero.
		Rework FCT and TIST startup initialisation to guarantee TIST@FCT0 setting

2025-05-19: Matthias P. Braendli <matthias@mpb.li>
	(v5.2.0):
		Rework FIG0/10 DAB time indication to match EDI time.
		Make PFT per-output configurable.

2025-03-18: Matthias P. Braendli <matthias@mpb.li>
	(v5.1.0):
		Fix startup value of DLFC and FCT.
		Add statistics for EDI/TCP outputs.

2024-10-03: Matthias P. Braendli <matthias@mpb.li>
	(v5.0.0):
		Remove odr-zmq2edi.
		Make compatible with easydab again.
		Fix timestamp issue with EDI streams that have seconds=0.
		Fix receiving multicast streams, when several multicast groups are
		on the same port.

2024-05-05: Matthias P. Braendli <matthias@mpb.li>
	(v4.5.0):
		Switch project to C++17.
		Update common code, with ClockTAI improvements among others.
		Add uatype journaline to config.
		Add ZMQ output to odr-zmq2edi.
		Increase repetition rate for labels.
		Add showjson to remote control.

2024-03-23: Matthias P. Braendli <matthias@mpb.li>
	(v2.3.2):
		This is a patch version for v2.3.1
		Fix compilation issues with recent boost and compiler versions

2023-08-12: Matthias P. Braendli <matthias@mpb.li>
	(v4.4.1):
		Fix some compilation issues.

2023-05-09: Matthias P. Braendli <matthias@mpb.li>
	(v4.4.0):
		Ensure CIF count continuity on startup, and make CIF
		count consistent with timestamp across restarts.
		Ensure EDI output inserts ESTn tags in the order given
		in the config file.

2022-10-18: Matthias P. Braendli <matthias@mpb.li>
	(v4.3.0):
		Add "load_entire_file" configuration setting for file inputs.
		Add EDI/TCP output pre-roll burst to reduce downtime on new connections.
		Support reading the mux config in JSON format.
		Fix a 32-bit SId parse issue on 32-bit systems.
		Improve installation instructions in INSTALL.md.

2022-04-19: Matthias P. Braendli <matthias@mpb.li>
	(v4.2.1):
		Fix `make dist`

2022-04-19: Matthias P. Braendli <matthias@mpb.li>
	(v4.2.0):
		Add FIG 0/14 FEC scheme defintion, for enhancedpacket mode subchannels.
		Remove useless List Terminator for FIG0/13, and add support for Broadcast WebSite.
		Add timestamps to log output.
		Update manpages.

2022-03-15: Matthias P. Braendli <matthias@mpb.li>
	(v4.1.0):
		Improve EDI input.
		Fix crash when FIG0/7 doesn't have enough space.
		Fix FIG0/6 (service linking) database continuation flag.
		Simplify compilation on ARM.
		Rework web GUI (Thanks to Robin)

2021-06-03: Matthias P. Braendli <matthias@mpb.li>
	(v4.0.0):
		Incompatible change: Replace EDI packet interleaving by packet spreading (changes configuration
		file format for ODR-DabMux and command line options for zmq2edi).
		Add configurability for EDI UDP multicast input.
		Simplify FIG 0/9, avoid sending an empty subfield list.
		FIG 0/13 improvements for packet services, deprecate 'figtype' component setting which is replaced by 'user-application'.
		Improvements for timestamped input.
		Add --version command line option to all tools.
		EDI output: make transport addressing optional.

2020-05-26: Matthias P. Braendli <matthias@mpb.li>
	(v3.1.1):
		Fix FIG2 segment count issue.
		Handle disconnects better in EDI output.
		Fix buffering issue with timestamped EDI input.

2020-04-15: Matthias P. Braendli <matthias@mpb.li>
	(v3.1.0):
		Initialise TIST on startup rounded to 24ms, as it was done before
		v2.4.0 (see '5b1dea7').
		Refresh TAI bulletin before it expires.
		Set SO_REUSEADDR for TCP listening sockets (avoids some startup failures).
		Add EDI input TIST delay setting, and improve EDI input stats and error handling.
		Add FIG 0/7 and Alarm announcement support (Thanks to Mathias Kuntze).
		Add startupcheck functionality to ODR-DabMux and ODR-ZMQ2EDI.
		ZMQ2EDI will not quit anymore in case of input issues.
		Handle FCT discontinuity in ZMQ2EDI, and display better statistics
		which are usable by the new munin stats script doc/stats_zmq2edi_munin.py.

2019-10-30: Matthias P. Braendli <matthias@mpb.li>
	(v3.0.1):
		Fix compilation on older systems (like debian jessie)

2019-10-29: Matthias P. Braendli <matthias@mpb.li>
	(v3.0.0):
		Add EDI input with support for timestamps, which requires a change
		in the configuration file format for the input specification. This
		marks the beginning of a transition away from the ZMQ contribution
		protocol towards the standard EDI, including EDI-over-TCP.
		Move code shared with other mmbTools into a separate `common`
		repository.
		Change default TAI clock cache storage location to
		`/var/tmp/odr-leap-seconds.cache`.
		Add encoder version and uptime to stats if available (carried over
		EDI, not ZMQ).
		Fix nonblocking file input.
		Modify ODR-zmq2edi and ODR-zmq2farsync timeout behaviour.

2019-12-20: Matthias P. Braendli <matthias@mpb.li>
	(v2.4.2):
		Backport the file input nonblock fix to v2.4.1.

2019-06-25: Matthias P. Braendli <matthias@mpb.li>
	(v2.4.1):
		Fix bug when odr-zmq2edi is used with more than one destination.

2019-06-07: Matthias P. Braendli <matthias@mpb.li>
	(v2.4.0):
		Add timestamp offset setting, and fix bug due to UTCO offset
		not being properly applied. See doc/TIMESTAMPS.rst for more
		details.
		Implement FIG2 labels.
		Fix bug for DAB MP2 in EEP_A.
		Fix FIG0/24 for DAB+ services.
		ODR-ZMQ2EDI: fix MNSC endianness swap bug.
		Pull some RC changes from ODR-DabMod.
		Implement EDI-over-TCP output.

2019-01-07: Matthias P. Braendli <matthias@mpb.li>
	(v2.3.1):
		Happy new year!
		Fix TAI bulletin parsing on systems where long is 32 bit.
		Add configurable URLs to download TAI clock bulletin and
		rework the download logic.
		Do not read TAI clock cache file from /tmp anymore, only
		use /var/tmp.

2018-10-30: Matthias P. Braendli <matthias@mpb.li>
	(v2.3.0):
		Correct FIG0/6 output for services with different ECC.
		Add support for transmitting empty Linkage Sets.
		Save leap-second cache to /var/tmp, which doesn't get
		cleared across reboots.
		Rework audio level measurement in the statistics server to
		alleviate some timing-related issues.
		odr-zmq2edi: Add option to drop late packets.

2018-07-31: Matthias P. Braendli <matthias@mpb.li>
	(v2.2.0):
		Fix delays and FIG repetition burst on announcement switching.
		Add support for services with different ECC (Signalled in FIG0/9).
		Improve ODR-ZMQ2EDI statistics.

2018-05-29: Matthias P. Braendli <matthias@mpb.li>
	(v2.1.2):
		A couple of internal changes and fixes for
		compilation warnings.

2018-03-27: Matthias P. Braendli <matthias@mpb.li>
	(v2.1.1):
		Fix segmentation fault in peak audio statistics
		calculation.

2018-03-23: Matthias P. Braendli <matthias@mpb.li>
	(v2.1.0):
		Add version string to management server.
		Introduce slow audio peak statistic.
		Avoid doing useless copies in the RAW output.

2018-03-01: Matthias P. Braendli <matthias@mpb.li>
	(v2.0.0):
		Configuration file syntax changed for Frequency Information
		and Other Services settings.
		Statistics server changes: audio-level peak information is
		measured over the last second, and not anymore since the last
		request. Same for buffers, where min/max are measured over
		thirty seconds.
		Make nonblock available again for file inputs.

2018-02-09: Matthias P. Braendli <matthias@mpb.li>
	(v1.3.3):
		Add dynamic/static PTy setting to configuration.
		Add UTF-8 to EBU Latin character set converter for labels.
		Show TAI bulletin expiration in RC.
		Stop using SUBDIRS in automake, and build the executable in ./ and not
		in ./src anymore.

2018-01-23: Matthias P. Braendli <matthias@mpb.li>
	(v1.3.2):
		Add clock selection to RAW output.
		zmq2edi: intentionnally crash after timeout.
		Add command "state" to the monitoring interface and add to Munin
		script.
		Fix TAI bulletin download failure handling.
		Improve portability for non-Linux POSIX systems, and improve
		autoconf checks.
		Default international-table to 1.

2017-08-23: Matthias P. Braendli <matthias@mpb.li>
	(v1.3.1):
		Add retords.pl script for Xymon monitoring tool.
		Add odr-zmq2edi tool, and add necessary metadata to
		the ZMQ output of ODR-DabMux. The configuration file
		was extended in a backward-compatible way. Handling
		of the TAI clock subsystem has been adapted too.

2017-06-30: Matthias P. Braendli <matthias@mpb.li>
	(v1.3.0):
		Add support for FIG0/24 to announce that a service is present
		in another ensemble. This completes the implementation of all
		service linking FIGs according to ETSI TS 103 176 Figure 1.
		Allow EDI packet lengths up to 1400 bytes.
		Add local cache for the leap second information downloaded from
		IETF, remove download from USNO servers, as they don't give validity
		information.

2017-06-05: Matthias P. Braendli <matthias@mpb.li>
	(v1.2.2):
		Add support for FIG0/21 "Frequency Information".
		Improve EDI fragment interleaver.
		Avoid stalling the multiplexer when the TCP output is used.

2017-01-29: Matthias P. Braendli <matthias@mpb.li>
	(v1.2.1):
		Bugfix for illegal memory access in EDI PFT layer.
		Add experimental STI-D(PI, X)/RTP input.

2017-01-24: Matthias P. Braendli <matthias@mpb.li>
	(v1.2.0):
		Remove the libfec dependency.
		Adapt several FIGs to EN 300 401 V2.1.1.
		Add FIG0/6 for service linking information.
		Big overhaul of all inputs.
		TCP output improvements, stability and handling of multiple
		connections.
		Fix ZeroMQ input encryption for MPEG inputs.
		Rework PRBS source and describe it better.
		Remove unused bridge, SLIP, Test and nonfunctional
		DMB input.
		Add fragment interleaver for the EDI output.
		Fix important issue when both EDI and TIST are enabled.
		Enable syslog logger earlier.

2016-09-02: Matthias P. Braendli <matthias@mpb.li>
	(v1.1.0):
		Switch FIG0/10 to long form, the latest draft spec marks the
		short form as legacy.
		Add RC support for deferred triggering of announcements, see
		doc/remote_control.txt

2016-07-30: Matthias P. Braendli <matthias@mpb.li>
	(v1.0.0):
		Remove old carousel.
		Fix FIGs 0/2 and 0/8 when data services present.
		Fix parsing of TAI-UTC bulletin for EDI TIST.
		ZeroMQ is now a mandatory dependency because of the ManagementServer.
		Minor bugfixes and improvements.

2016-03-26: Matthias P. Braendli <matthias@mpb.li>
	(v0.9.0):
		Enable new carousel by default.
		Integrate munin script improvements.
		EDI bugfix when many CU are used.
		EDI: add support for PFT with FEC=0 (only fragmentation).
		EDI: backward-incompatible configuration change.
		EDI: transmit timestamp with TAI vs UTC correction (experimental).
		Get compilation working under FreeBSD and OSX.
		Add ability to specify source and TTL for UDP output.
		Split example.mux into a simple and a more advanced example.

2015-11-27: Matthias P. Braendli <matthias@mpb.li>
	(v0.8.1):
		Fix compilation with test input.
		Add PTy to remote control.
		Add EDI options to configuration file for multicast settings.

2015-09-13: Matthias P. Braendli <matthias@mpb.li>
	(v0.8.0):
		Pad labels with spaces instead of terminating them with NUL.
		Modify real-time priority.
		Refactor big mux loop into separate function.
		Add ability to read out full configuration tree in JSON.
		Remove old command-line interface.
		Fix EDI errors.
		Replace TCP socket for Statistics and Management server by ZMQ
		REP/REQ.
		Start activities on a simple web GUI for monitoring and configuration.
		Add new FIG carousel, not enabled by default.
		Add utility to drive a FarSync card from a ZMQ ETI stream.
		Improve FIG0/13 signalling (DG flag, CAOrg removal)
		Add announcement support (FIG0/18 and 0/19)

2015-07-27: Matthias P. Braendli <matthias@mpb.li>
	(v0.7.5):
		Fix segmentation fault in short label check logic.

2015-07-03: Matthias P. Braendli <matthias@mpb.li>
	(v0.7.4):
		Allow empty component labels
		Fix compilation with ZeroMQ 4.1.x

2015-04-10: Matthias P. Braendli <matthias@mpb.li>
	(v0.7.3):
		Security: RC only listens on localhost.
		Change FIG signalisation handling for User Application Type,
		which has an impact on Slideshow.
		-e parameter becomes optional.
		Improve error messages and documentation.
		Start some activities for a web-based GUI.

2014-09-26: Matthias P. Braendli <matthias@mpb.li>
	(v0.7.2):
		Fix a memory leak with the ZMQ input.
		Fix handling of timestamps when using ZMQ input.
		Add the experimental EDI output.
		Support new ZeroMQ frame format also for toolame-dab.
		Update FarSync driver to latest version.
		When used without configuration file, LTO defaults to auto,
		TM defaults to 1.
		Add protection profile option to configuration.

2014-05-20: Matthias P. Braendli <matthias@mpb.li>
	(v0.7.1):
		This is a bugfix release, with a minor update
		to the input state server.
	* odr-dabmux:
		Fix -r command line option.
		Correct internal allocation/deallocation mistakes.
		Add "Silent" state to input states.
		Little changes in munin graph script.

2014-04-25: Matthias P. Braendli <matthias@mpb.li>
	(v0.7.0):
		This version supports a new ZeroMQ frame format. The
		old format is still used by toolame-dab, and by
		older versions of fdk-aac-dabplus, and will stay
		supported.
	* odr-dabmux:
		Add local-time-offset to remote control,
		and support 'auto' setting in configuration file.
		Update the munin script.
		Support the new ZeroMQ framing format.
		Support ZeroMQ CURVE authentication.
		Make ZeroMQ buffering better configurable.
		Include peak audio level in munin statistics.

2014-04-04: Matthias P. Braendli <matthias@mpb.li>
	(v0.6.0):
		Adds support for MOT Slideshow and DLS,
		  compatible with mot-encoder from
		  fdk-aac-dabplus
	* odr-dabmux:
		Add FIG0/13 signalling for MOT slideshow
		Add local-time-offset and intl table options
		Fix some unseen compilation warnings
		Change ZMQ output format to guarantee frame
		  alignment (not backward compatible)

2014-02-14: Matthias P. Braendli <matthias@mpb.li>
	(v0.5.0):
	* odr-dabmux:
		Service and component labels can now be changed on
		  the fly using the remote control.
		ZMQ input buffer size can be changed using the RC.
		Modify the RC 'list' command to simplify usage.
		Clean up the startup configuration dump.
		Added fault checking logic to RC that can restart
		  it in case of a failure.
		Add doc/remote_control.txt

2014-02-12: Matthias P. Braendli <matthias@mpb.li>
	(v0.4.3):
	* odr-dabmux:
		Add support for hexadecimal IDs in configuration file.
		Add ZMQ input for toolame-dab.

2014-02-11: Matthias P. Braendli <matthias@mpb.li>
	(v0.4.2)
	* odr-dabmux:
		Actually add zmq.hpp to Makefile.am
	(v0.4.1)
	* odr-dabmux:
		Include zmq.hpp locally and prefer it over the
		  system one.
		Fix wrong usage of zmq::socket_t.recv

2014-02-07: Matthias P. Braendli <matthias@mpb.li>
	(v0.4.0)
	* odr-dabmux:
		CRC-DabMux renamed to ODR-DabMux
		Version bump to 0.4.0

2014-01-31: Matthias P. Braendli <matthias@mpb.li>
	(tag r12):
	* crc-dabmux:
		Create new object-oriented abstraction for the
		  inputs, with a wrapper for all existing inputs
		Adapt inputZMQ to the new internal interface
		Add a telnet Remote Control interface

2014-01-31: Matthias P. Braendli <matthias@mpb.li>
	(tag r11):
	* crc-dabmux:
		Replace TCPLog by Logger that supports syslog
		Add TCP statistics server
		Make ZMQ input publish buffer statistics
		Add Munin helper script to graph ZMQ input stats
		Fix ZMQ include when inputzmq disabled

2014-01-05: Matthias P. Braendli <matthias@mpb.li>
	(tag r10):
	* crc-dabmux:
		Add ZeroMQ input, compatible with fdk-aac-dabplus-zmq
		Replace CRC-DabMux-cfg with -e option

2013-12-14: Matthias P. Braendli <matthias@mpb.li>
	(tag r9):
	* autotools:
		Remove autogenerated files and add bootstrap
		Fix faulty logic for --enable-output-zeromq
		Update version generation for git

2013-11-10: Matthias P. Braendli <matthias@mpb.li>
	(tag r8):
	* crc-dabmux:
		Some configuration parsing and logging fixes.
		Replaced the C-style function dispatching for the outputs
		  by C++ objects with inheritance.
		Added support for ZeroMQ ETI output.
		ZeroMQ dependency added in configure.ac
		Versioning changed to make hg revision visible
		Completed READMEs and INSTALLs

2012-09-13: Matthias P. Braendli <matthias@mpb.li>
	(tag r7):
	* crc-dabmux/src/*:
		Added shortlabel support to configuration file
		Added Boost version check into autoconf

2012-08-26: Matthias P. Braendli <matthias@mpb.li>
	(tag r6):
	* crc-dabmux/src/DabMux.h:
		Added missing file DabMux.h

2012-08-23: Matthias P. Braendli <matthias@mpb.li>
	(tag r5):
	* crc-dabmux/*:
		Refactoring command line handling for crc-dabmux,
		  added configuration file parser including example.
		When the program is called as CRC-DabMux-cfg, it reads
		  the Ensemble definition from a file rather than from
		  the command line. An example file is in doc/
		DabMux now depends on Boost.

2012-08-17: Matthias P. Braendli <matthias@mpb.li>
	(tags r4, r3, r2 and r1 were relevant to crc-dabmod in the old repository)

2011-05-24  Pascal Charest  <pascal.charest@crc.ca>

    * src/DabMux.cpp:   Changed for more precise messages.
    * src/DabMux.cpp:   Added ECC support.
    * src/dabInputFile.cpp: Removed unused macros, which solved unitialised bug.
    * src/dabInputPacketFile.cpp:   Removed unused macros, which solved unitialised bug.

2010-08-23  Pascal Charest  <pascal.charest@crc.ca>

    * src/DabMux.cpp:   Added UDP input for data subchannel (bug).

2010-06-24  Pascal Charest  <pascal.charest@crc.ca>

    * src/DabMux.cpp:   Added support for timestamp.

2010-06-17  Pascal Charest  <pascal.charest@crc.ca>

    * src/DabMux.cpp:   Solved FIC date bug.

Copyright (C) 2010,2011 Her Majesty the Queen in Right of Canada
(Communications Research Center Canada)

Copyright (C) 2013,2014 Matthias P. Braendli, http://mpb.li

This file is part of ODR-DabMux.

ODR-DabMux is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

ODR-DabMux is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with ODR-DabMux.  If not, see <http://www.gnu.org/licenses/>.
