; This is the official configuration file example that
; serves as documentation for the config file reader.
;
; As you can see, comments are defined by semicolons.
;
; The format is called INFO format, and defined by boost property_tree:
; http://www.boost.org/doc/libs/1_41_0/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.info_parser

; 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)
    dabmode 2

    ; the number of ETI frames to generate (set to 0 to get an unlimited number)
    nbframes 10


    ; boolean fileds can accept either false or true as values:

    ; Enable logging to syslog
    syslog false

    ; Write the SCCA field useful for the Factum ETI analyser
    writescca false

    ; Enable timestamp definition necessary for SFN
    ; This also enables time encoding using the MNSC.
    tist false

    ; The statsserver is a simple TCP server that can present
    ; statistics data (buffers, overruns, underruns, etc)
    ; which can then be graphed a tool like Munin
    ; The doc/stats_dabmux_multi.py tool is a suitable
    ; plugin for that.
    ; If the port is zero, or the line commented, the server
    ; is not started.
    statsserverport 12720
}

remotecontrol {
    ; enable the telnet remote control server on the given port
    ; This server allows you to read and define parameters that
    ; some features export
    ; Set the port to 0 to disable the server
    telnetport 12721

    ; the remote control server makes use of the unique identifiers
    ; for the subchannels, services and components. Make sure you
    ; chose them so that you can identify them.
}

; Some ensemble parameters
ensemble {
    id 0x4fff ; you can also use decimal if you want
    ecc 0xec ; Extended Country Code
    label "TuxMux"
    shortlabel "Tux"
}

; Definition of DAB services
services {
    ; Each service has it's own unique identifier, that is
    ; used throughout the configuration file and for the RC.
    srv-fu {
        label "Funk"
        shortlabel "Fu"
        pty 0
        language 0
        ; also supports id
    }
    srv-lu {
        label "Luschtig"
        ; pty, language, shortlabel and id can be omitted, and will take default values
    }
    srv-ri {
        label "rick"
        shortlabel "rick"
    }

}

; The subchannels are defined in the corresponding section.
; supported types are : audio, bridge, data, enhancedpacket,
;                       dabplus, dmb, packet, test
subchannels {
    sub-fu {
        type audio
        ; example file input
        inputfile "funk.mp2"
        ; example zmq input:
        ; accept connections to port 9001 from any interface
        ; use toolame-dab as encoder
        ;inputfile "tcp://*:9001"
        nonblock false
        bitrate 128
        id 10
        protection 5
    }
    sub-lu {
        type audio
        inputfile "luschtig.mp2"
        nonblock false
        bitrate 128
        id 3
        ;protection 5
    }
    sub-ri {
        type dabplus
        ; example file input
        ;inputfile "rick.dabp"
        ; example zmq input:
        ; accept connections to port 9000 from any interface
        ; use fdk-aac-dabplus-zmq as encoder
        inputfile "tcp://*:9000"
        nonblock false
        bitrate 96
        id 1
        protection 1
    }

    sub-ri2 {
        type dabplus
        ; for dabplus types, you can use the ZeroMQ input (if compiled in)
        ; with the following configuration:
        inputfile "tcp://localhost:9000"
        nonblock false
        bitrate 96
        id 1
        protection 1
    }
}

; For now, each component links one service to one subchannel
components {
    ; the component unique identifiers are used for the RC.
    comp-fu {
        ; specifies audio -or- packet type, defaults to zero when not given
        ; 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
        type 0

        label funk
        shortlabel fu
        service srv-fu
        subchannel sub-fu

        ; for packet components, the fields
        ; "user application type in FIG 0/13 for packet mode"
        ;figtype
        ; and "packet address (default: 0x200 + <n> (512))"
        ;address
        ; are supported, with the same syntax as in the manpage
    }

    comp-lu {
        ; labels are maximum 16 characters in length
        label luschtig

        ; a shortlabel is created by dropping some letters from the
        ; label, max length 8
        shortlabel lu
        service srv-lu
        subchannel sub-lu
    }

    comp-ri {
        label "rick"
        shortlabel "rick"
        service srv-ri
        subchannel sub-ri
    }
}

; A list of outputs, in the format
; unique-id "uri"
outputs {
    stdout "fifo:///dev/stdout?type=raw"

; ZeroMQ output example
    ; zmq  "zmq+tcp://*:8080"
}