summaryrefslogtreecommitdiffstats
path: root/doc/servicelinking.mux
blob: d10b97e6e46d00c1c42b2e09a05df9f9ac2aaa42 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
; This is an example configuration file that illustrates
; how to define service linking

; More information about the usage of the tools is available
; in the guide, which can be found on the
; www.opendigitalradio.org website.
;
general {
    dabmode 1
    nbframes 20000

    syslog false
    tist false
    managementport 12720
}

remotecontrol {
    telnetport 12721
}

; Service linking sets
linking {
    ; Every child section declares one linkage sets according to
    ; TS 103 176 Clause 5.2.3 "Linkage sets". This information will
    ; be encoded in FIG 0/6
    set-fu {
        ; Linkage Set Number is a 12-bit number that identifies the linkage set
        ; in a country (requires coordination between multiplex operators in a country)
        ; (mandatory)
        lsn 0xabc

        ; Hard link means that all services carry the same programme, soft links means
        ; that the programmes are related in some way. (default true)
        hard true

        ; Linkage actuator flag. Set to false to disable a link
        active true

        ; Whether this linkage set affects only one country or several. Linkage sets that
        ; include AMSS or DRM services need to have this set to true. (default false)
        ; Linkage sets whose key service has a different ECC than the ensemble ECC need to
        ; set this to true.
        international false

        ; If the keyservice and list are absent, a FIG with an empty list will be transmitted for
        ; this linkage set. This instructs receivers to delete their corresponding database entry
        ; (Change Event Indicator for FIG0/6)

        ; Every linkage set has to contain a service from the current ensemble. keyservice may be omitted.
        keyservice srv-fu

        ; List of services to be included (mandatory if keyservice given)
        list {
            ; Every service has a uid that can be used as a human-readable description

            ; The first example is a link to a DAB service on another ensemble.
            fu-on-my-friends-mux {
                ; Possible options: dab, fm, drm, amss (mandatory)
                type dab

                ; if type is dab, the id is a DAB service ID (mandatory)
                id 0x8daf

                ; Since this link set has international false, we do not need to specify
                ; the ECC. With internation true, the following would be needed
                ; (mandatory if internation true)
                ;ecc 0xec
            }

            ; The second example is a link to an FM transmission
            fu-on-fm {
                ; Possible options: dab, fm, drm, amss
                type fm

                ; if type is fm, the id is a PI-code
                id 0x1A2B

                ; Also here, ECC declaration is not required
            }
        }
    }

    ; And now an international true to test more options
    set-ri {
        lsn 0xdef
        hard soft
        international true
        keyservice srv-ri

        list {
            ri-on-drm {
                type drm
                id 0x1298
                ecc 0xec
            }

            ri-on-amss {
                type amss
                id 0x1A2B
                ecc 0xea
            }

            ri-on-fm {
                type fm
                id 0x4C5D
                ecc 0x4f
            }
        }
    }
}

; According to ETSI TR 101 496-2 Clause 3.6.10.
; Each entry corresponds to one frequence information
; database entry. The multiplexer then transmits this
; information inside FIG 0/21 defined in
; ETSI EN 300 401 Clause 8.1.8
frequency_information {
    fi_dab_4fff {
        ; The database key comprises oe, range_modulation and
        ; either eid, pi_code, drm_id or amss_id.
        ; The database key must be unique among all the fi entries.
        ; RegionId and signalling FI for data services are not implemented.
        oe false
        range_modulation dab
        eid 0x4fff

        continuity true
        frequencies {
            freq_a {
                signal_mode_1 true
                adjacent true
                frequency 234.208
            }
            freq_b {
                signal_mode_1 true
                adjacent true
                frequency 188.928
            }
            freq_c {
                signal_mode_1 true
                adjacent false
                frequency 230.784
            }
        }
    }
    fi_fm_1234 {
        oe false
        range_modulation fm
        pi_code 0x1234

        continuity true
        frequencies "87.6 105.2"
    }
    fi_dab_4fee {
        oe true
        range_modulation dab
        eid 0x4fee

        continuity true
        frequencies {
            freq_a {
                signal_mode_1 true
                adjacent false
                frequency 230.784
            }
        }
    }
    fi_drm_12ab45 {
        oe false
        range_modulation drm
        drm_id 0x12ab45

        continuity true
        frequencies "15.21 22.4"
    }
    fi_amss_33cc88 {
        range_modulation amss
        amss_id 0x33cc88

        continuity true
        frequencies "14.8"
    }
}

; We can announce the presence of a service in another ensemble using FIG0/24,
; both for services we carry in this ensemble (OE=0) and for services that
; only exist in another ensemble (OE=1)
other-services {
    ; you can freely chose the unique id
    srv-fu {
        ; If this ensemble contains a service with this id, OE will be set to 0.
        ; Otherwise, OE=1
        id 0x8daa

        ; If this service is present in other ensembles, it can be announced
        ; through FIG0/24. other_ensembles is a comma separated list of
        ; ensemble IDs (decimal or hexadecimal with 0x prefix).
        ; Add the current ensemble Id to the list if you carry this service too.
        other_ensembles "0x4ffe,0x4ffd,0x4fff"
    }

    ; For a more efficient usage of the FIC capacity, it is better to first enumerate
    ; the services that we carry in the ensemble (OE=0), followed by the foreign services.
    ; This avoids having to send FIG0 headers every time the OE flag switches.
    srv-foreign {
        id 0x8daf
        other_ensembles "0x4ffd"

        ; Only Audio type services are supported
    }
}

; For information about the ensemble, service, subchannels, components and outputs,
; please see doc/example.mux and doc/advanced.mux
ensemble {
    id 0x4fff
    ecc 0xec

    local-time-offset auto
    label "OpenDigitalRadio"
    shortlabel "ODR"
}

services {
    srv-fu {
        id 0x8daa
        label "Funk"
    }
    srv-ri {
        id 0x8dab
        label "Rick"
    }
}

subchannels {
    sub-fu {
        type dabplus
        inputfile "tcp://*:9000"
        bitrate 96
        id 1
        protection 3
        zmq-buffer 40
        zmq-prebuffering 20
    }
    sub-ri {
        type dabplus
        inputfile "tcp://*:9001"
        bitrate 96
        id 2
        protection 3
        zmq-buffer 40
        zmq-prebuffering 20
    }
}

components {
    comp-fu {
        service srv-fu
        subchannel sub-fu
    }

    comp-ri {
        service srv-ri
        subchannel sub-ri
    }
}

outputs {
    file "file://./test.eti?type=raw"
    ;throttle "simul://"
}