From 4a0515e01ab51dfc42889bbd2d3ce33fdb7c18ca Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Sun, 13 Sep 2015 18:53:06 +0200 Subject: Prepare release v0.8.0 --- ChangeLog | 16 ++++++++++++++++ INSTALL.md | 12 +++++++----- README.md | 39 +++++++++++++++++++++------------------ configure.ac | 4 ++-- doc/README.md | 43 +++++++++++++++++++++++++++++++++++++++++++ doc/example.mux | 3 --- doc/remote_control.txt | 4 +++- gui/README.md | 4 ++-- src/MuxElements.cpp | 2 +- 9 files changed, 95 insertions(+), 32 deletions(-) create mode 100644 doc/README.md diff --git a/ChangeLog b/ChangeLog index 5e7430e..b9b9b88 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,22 @@ This file contains information about the changes done to the ODR-DabMux in this repository +2015-09-13: Matthias P. Braendli + (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 (v0.7.5): Fix segmentation fault in short label check logic. diff --git a/INSTALL.md b/INSTALL.md index 73a3471..6f1fedb 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -28,7 +28,7 @@ Install odr-dabmux % tar xjf odr-dabmux-x.y.z.tar.bz2 # Unpack the source % cd odr-dabmux-x.y.z # Change to the source directory - % ./configure --enable-input-zeromq --enable-output-zeromq + % ./configure # Run the configure script % make # Build ODR-DabMux [ as root ] @@ -37,12 +37,14 @@ Install odr-dabmux Nearly as simple install procedure using repository: ==================================================== -The code in the repository is more recent than the latest -release and could be less stable, but already have new -features. +The *master* branch in the repository always points to the +latest release. If you are looking for a new feature or bug-fix +that did not yet make its way into a release, you can clone the +*next* branch from the repository. -* Download and install fec as above +* Download and install the dependencies as above * Clone the git repository +* Switch to the *next* branch * Bootstrap autotools:
% ./bootstrap.sh
* Then use ./configure as above diff --git a/README.md b/README.md index 88b3bf4..d237977 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,29 @@ Overview ======== -*ODR-DabMux* is a fork of CRC-DabMux, which was developed by the Communications -Research Center Canada. It has been forked by the +ODR-DabMux is a *DAB (Digital Audio Broadcasting) multiplexer* compliant to +ETSI EN 300 401. It is the continuation of the work started by which was +developed by the Communications Research Center Canada on CRC-DabMux, and +is now pursued in the [Opendigitalradio project](http://opendigitalradio.org). -ODR-DabMux is a *DAB (Digital Audio Broadcasting) multiplexer* compliant to -ETSI EN 300 401. - -In addition to the features of CRC-DabMux, this fork contains: - -- configuration file support, see doc/example.mux -- timestamping support required for SFN -- a ZeroMQ ETI output that can be used with ODR-DabMod -- a ZeroMQ dabplus input that can be used with fdk-aac-dabplus - and toolame-dab, and supports CURVE authentication -- supports logging to syslog -- supports ZMQ input monitoring with munin tool -- includes a Telnet Remote Control for setting/getting parameters - (can change subchannel and component labels, and ZMQ input buffer - parameters) -- an experimental EDI output +ODR-DabMux is part of the ODR-mmbTools tool set. More information about the +ODR-mmbTools is available in the *guide*, available on the +[Opendigitalradio mmbTools page](http://www.opendigitalradio.org/mmbtools). + +Features of ODR-DabMux: +- Standards-compliant DAB multiplexer +- Configuration file, see doc/example.mux +- Timestamping support required for SFN +- ZeroMQ ETI output that can be used with ODR-DabMod +- ZeroMQ input that can be used with FDK-AAC-DABplus + and Toolame-DAB, and supports CURVE authentication +- Logging to syslog +- Monitoring using munin tool +- Includes a Telnet and ZMQ Remote Control for setting/getting parameters +- EDI output +- Something that will one day become a nice GUI for configuration, + see gui/README.md The src/ directory contains the source code of ODR-DabMux. diff --git a/configure.ac b/configure.ac index bdc7328..265b853 100644 --- a/configure.ac +++ b/configure.ac @@ -17,7 +17,7 @@ # along with ODR-DabMux. If not, see . AC_PREREQ(2.61) -AC_INIT([ODR-DabMux], [0.7.5], [matthias.braendli@mpb.li]) +AC_INIT([ODR-DabMux], [0.8.0], [matthias.braendli@mpb.li]) AC_CONFIG_AUX_DIR([build-aux]) AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE([-Wall subdir-objects foreign]) @@ -56,7 +56,7 @@ AX_CXX_COMPILE_STDCXX_11(noext,mandatory) # Checks for libraries. AC_CHECK_LIB([pthread], [pthread_create], [], AC_MSG_ERROR([libpthread is required])) -AX_BOOST_BASE([1.41.0], [], AC_MSG_ERROR([BOOST 1.41 or later is required])) +AX_BOOST_BASE([1.48.0], [], AC_MSG_ERROR([BOOST 1.48 or later is required])) # we need to check for libm before checking for fec AC_CHECK_LIB([m], [sin]) diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..b35d77d --- /dev/null +++ b/doc/README.md @@ -0,0 +1,43 @@ +Description +=========== +ODR-DabMux is a software multiplexer that generates an ETI stream from audio +and data streams. Because of its software based architecture, many typical DAB +services can be generated and multiplexed on a single PC platform with live or +pre-recorded sources. + +A DAB multiplex configuration is composed of one ensemble. An ensemble is the +entity that receivers tune to and process. An ensemble contains several +services. A service is the listener-selectable output. Each service contains +one mandatory service component which is called primary component. An audio +primary component define a program service while a data primary component +define a data service. Service can contain additional components which are +called secondary components. Maximum total number of components is 12 for +program services and 11 for data services. A service component is a link to one +subchannel (or Fast Information Data Channel). A subchannel is the physical +space used within the common interleaved frame. + + __________________________________________________ + ENSEMBLE | ODR-Ensemble | + |__________________________________________________| + | | | + | | | + _______V______ _______V______ _______V______ + SERVICES | ODR-Service1 | | ODR-Service2 | | ODR-Service3 | + |______________| |______________| |______________| + | | | | |______ | + | | | | | | + __V__ __V__ __V__ __V__ __V__ __V__ + SERVICE | SC1 | | SC2 | | SC3 | | SC4 | | SC5 | | SC6 | + COMPONENTS |_____| |_____| |_____| |_____| |_____| |_____| + | | _____| | | ____| + | | | | | | + _________________ __V________V__V______________V________V___V_______ + | MCI | SI | FIDC | | SubCh1 | SubCh9 | ... | SubCh3 | SubCh60 | ... | + |_____|____|______| |________|________|_______|________|_________|_____| + Fast Information Ch. Main Service Channel + COMMON INTERLEAVED FRAME + +Configuration +============= +The configuration is given in a file, please see the example in doc/example.mux + diff --git a/doc/example.mux b/doc/example.mux index 1141006..4f4a2bc 100644 --- a/doc/example.mux +++ b/doc/example.mux @@ -9,9 +9,6 @@ ; It consists of six mandatory sections, whose relative order in this ; file are of no importance. -; In case of questions or ambiguities, the documentation for the -; command-line configuration interface still mostly applies. - ; The general section defines global multiplex parameters. general { ; the DAB Transmission mode (values 1-4 accepted) diff --git a/doc/remote_control.txt b/doc/remote_control.txt index 35d0e1d..ff2fed9 100644 --- a/doc/remote_control.txt +++ b/doc/remote_control.txt @@ -2,7 +2,9 @@ Telnet Remote Control ===================== ODR-DabMux can be configured to set up a simple telnet remote control that can -be used to modify some parameters without restarting the multiplexer. +be used to modify some parameters without restarting the multiplexer. The same +functionality available through telnet is also available over a ZeroMQ REQ/REP +socket, to make automation easier. The server only listens on localhost for security reasons. Remote access should be done using a VPN or SSH port forwarding. diff --git a/gui/README.md b/gui/README.md index 985efa5..06869e9 100644 --- a/gui/README.md +++ b/gui/README.md @@ -12,8 +12,8 @@ impressed. Usage ----- -Launch ODR-DabMux with your preferred multiplex, and enable the statsserver -(which will soon be renamed) in the configuration file to port 12720. +Launch ODR-DabMux with your preferred multiplex, and enable the statistics and +management server in the configuration file to port 12720. Start the gui/odr-dabmux-gui.py script on the same machine diff --git a/src/MuxElements.cpp b/src/MuxElements.cpp index 60056e4..be0906e 100644 --- a/src/MuxElements.cpp +++ b/src/MuxElements.cpp @@ -49,7 +49,7 @@ std::string AnnouncementCluster::tostring() const { stringstream ss; ss << "cluster id(" << (int)cluster_id; - ss << "flags 0x" << boost::format("%04x") % flags; + ss << ", flags 0x" << boost::format("%04x") % flags; ss << ", subchannel " << subchanneluid; if (m_active) { ss << " *"; -- cgit v1.2.3