Attention is currently required from: laforge, pespin.
falconia has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/32110 )
Change subject: common+trx: add rtp ecu-downstream vty option ......................................................................
Patch Set 3:
(2 comments)
Commit Message:
https://gerrit.osmocom.org/c/osmo-bts/+/32110/comment/2c26fd29_9ec4c4a8 PS3, Line 9: Current osmo-bts-trx includes a provision for invoking ECUs from : libosmocodec in the UL path from the channel decoder to the RTP : output; no other models currently do likewise, but there is no : particular reason why this ECU invokation couldn't be moved into : model-independent code.
Some background knowledge: AFAIR, osmo-bts-sysmo (and hence liekly its relatives oc2g + lc15) already do some ECU magic in the DSP.
At least in the case of FR1 and EFR codecs, I am very certain that sysmoBTS DSP does NOT apply any kind of ECU on UL, at least not in the GSM 06.11/06.61 sense of this term/concept. Any time there is a BFI condition on the uplink (i.e., the PHY heard radio noise rather than a traffic frame from the MS), the output from the PHY is a zero-length payload, and l1if_tch_rx() pushes this empty payload to l1sap, where we now do the option of "rtp continuous-streaming". An ECU in the GSM 06.11 sense (like the one implemented in libosmocodec) would be substituting a synthetic frame in this condition, which sysmoBTS PHY most certainly does NOT do. I am speaking with such certainty because ever since you graciously sold me that discounted sysmoBTS almost a year ago, I've been working with nothing but FR1 and EFR voice calls, I've been looking at its RTP output from day 1, and I recently started sniffing TCH DL on the MS to see what the PHY puts out in that direction too...
Then some user discovered that audio sounded worse on -trx than on -sysmo,
It is entirely possible (and quite likely) that the trx version still has various defects and shortcomings in need of fixing - and because I am very interested in CSD which won't happen in the sysmo version, I would like to acquire some suitable hw for osmo-bts-trx and start improving FR/EFR voice in that version too. Distant plans...
and they implemented the "provision for invoking ECUs" in -trx [only].
Two new problems with this attempt at solving the original perceived problem:
* The ECU implemented in libosmocodec is pretty bad - see OS#6027. As promised in that ticket, I will be submitting an improved ECU implementation shortly - but:
* Even with a fully proper ECU implementation like Themyscira libgsmfrp, the UL path from the PHY to the RTP output inside OsmoBTS is the wrong place for this ECU. Instead the two correct places for the ECU are (1) in the network-side speech transcoder that turns GSM codecs into G.711 for calls to and from the outside world and (2) in the *downlink* (not uplink!) RTP handler in OsmoBTS or OsmoMGW (for T1/E1 BTS) in the case of TrFO calls, following the principles of TS 28.062 section C.3.2.1.1, adapted for the evolution from TFO to TrFO.
The ECU-in-the-wrong-place problem is the main reason why the present patch will remain necessary even after I submit my improved FR codec ECU to libosmocodec and get it merged (hopefully).
Patchset:
PS1:
I think rather than specifying that an ECU happens somewhere "downstream" I think it's more logical […]
I actually came to the same conclusion myself. Out of your proposed names, I like "rtp internal-uplink-ecu" the most. Emphasizing that it is for UL is important - see my other comment about the current ECU invokation being in the wrong place, and the possibility of doing a more proper (per TS 28.062 section C.3.2.1.1) downlink ECU application at some future point.