CRC-DabMux is the free open source DAB Multiplexer developed by Communication Research Center (CRC) from Canada. It is used in command line.
Description can be found on http://mmbtools.crc.ca/content/view/39/65/
Source code is now released (since September 2008).
When building from the source code, be careful to disable debugging, otherwise there will be lot of wasted CPU usage:
./configure --with-debug-malloc=no --disable-debug
CRC-DabMux depend on libfec from Phil Karn. From recent versions of Ubuntu (10.04) or 64bits, libfec has a compilation error (" fec.h:267: Error: bad register name `%dil' ").
Pascal Charest, from CRC, has written a workaround for it that you can find on libfec section of CRC-DABMUX page.
Here's a workaround detail, on line 267 from fec.h: Replace
__asm__ __volatile__ ("test %1,%1;setpo %0" : "=g"(x) : "r" (x));
__asm__ __volatile__ ("test %1,%1;setpo %0" : "=q"(x) : "q" (x));
CRC-DabMux Man page
CRC-DabMux - A software DAB multiplexer
CRC-DabMux [ensemble] [subchannel1 subchannel2 ...] [service1 component1 [component2 ...] service2 ...] [output1 ...] [-h] [-m mode] [-n nbFrames] [-o] [-V] [-z]
Where ensemble = [-i ensembleId] [-L label] [-l sLabel]
Where subchannel = -(A | B | D | E | F | M | P | T) inputName [-b bitrate] [-i subchannelId] [-k] [-p protection]
Where service = -S [-g language] [-i serviceId] [-L label] [-l sLabel] [-y PTy]
Where component = -C [-a address] [-d] [-f figType] [-i subchannelId] [-L label] [-l sLabel] [-t type]
CRC-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 pri- mary component. An audio primary component define a program service while a data primary component define a data service. Service can con- tain additional components which are called secondary components. Maxi- mum total number of components is 12 for program services and 11 for data services. A service component is a link to one subchannel (of Fast Information Data Channel). A subchannel is the physical space used within the common interleaved frame.
__________________________________________________ | CRC-Ensemble | ENSEMBLE |__________________________________________________| | | | | | | _______V______ _______V______ _______V______ | CRC-Service1 | | CRC-Service2 | | CRC-Service3 | SERVICES |______________| |______________| |______________| | | | | |______ | | | | | | | __V__ __V__ __V__ __V__ __V__ __V__ | SC1 | | SC2 | | SC3 | | SC4 | | SC5 | | SC6 | SERVICE |_____| |_____| |_____| |_____| |_____| |_____| COMPONENTS | | _____| | | ____| | | | | | | __V________V__V______________V________V___V_______ COMMON | SubCh1 | SubCh9 | ... | SubCh3 | SubCh60 | ... | INTERLEAVED |________|________|_______|________|_________|_____| FRAME Figure 1: An example of a DAB multiplex configuration
-h : get this help -m : DAB mode (default: 2) -n nbFrames : number of frames to produce -o : turn on TCP log on port 12222 -V : print version information and exit -z : write SCCA field for Factum ETI analyzer
-A : set audio service -A : set CRC-Bridge data service -D : set data service -E : set enhanced packet service -F : set DAB+ service -M : set DMB service -P : set packet service -T : set test service inputName<n> : name of file for audio and packet service and Udp input address for data service ([address]:port) -a : packet address (default: 0x200 (512)) -b bitrate<n> : bitrate (in kbits/s) of the subchannel (default: audio 1st frame, data 384, packet 32) -d : turn on datagroups in packet mode -f figType : user application type in FIG 0/13 for packet mode -g language : Primary service component language: english=9, french=15 -i id<n> : service|subchannel|serviceComponent id <n> (default: <n>) -k : set non-blocking file input (audio and packet only) -L label<n> : label of service <n> (default: CRC-Audio<n>) -l sLabel<n> : short label flag of service <n> (default: 0xf040) -p protection<n> : protection level (default: 3) -t type : audio/data service component type (default: 0) audio: foreground=0, background=1, multi-channel=2 data: unspecified=0, TMC=1, EWS=2, ITTS=3, paging=4, TDC=5, IP=59, MOT=60, proprietary=61 -y PTy : Primary service component program type international code
-O output : name of the output in format scheme://[address][:port][/name] where scheme is (raw|udp|tcp|file|fifo|simul)