You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The only truly correct way to pass FR/HR/EFR traffic from an
incoming RTP stream to TRAU-DL frames is to apply the transform
of TS 28.062 section C.3.2.1.1, originally specified for TFO
but also necessary in the non-3GPP-specified case of GSM TrFO
as it happens here. Unlike the situation with EFR, a FOSS
implementation of TFO transform for FRv1 does exist in Themyscira
libgsmfr2 - however, making these Themyscira codec libraries
usable from mainline Osmocom programs by way of a proposed
libosmocore DSO plugin mechanism, followed by a major redesign
of OsmoMGW-E1 to pass all DL traffic through this TFO transform,
would be a major project, difficult to justify prior to development
of a proper TFO transform for EFR to complement the one for FRv1.
Hence no change is being made currently to the arguably flawed
general architecture of OsmoMGW-E1, which consists of passing
through unaltered all valid codec frames that are received in RTP,
and inserting fixed dummy TRAU-DL frames when no RTP-derived ones
are available.
The original dummy TRAU-DL frame for FRv1 exhibited the following
defects:
* The payload frame transmitted to the MS consisted of all zero
bits. Standard type-approved GSM MS would interpret this bit
pattern as a SID frame, even though the BTS is told via C16 bit
"this frame is not a SID". Passing a SID is not inherently bad
in itself in this context, but a SID with all LARc parameters
set to 0 is a strange/poor choice.
* The setting of C-bits (defined in TS 48.060 section 5.5.1.1.1)
was a mish-mash between TRAU-UL and TRAU-DL frame formats,
thereby not matching the standard TRAU-DL C-bits fill produced
by osmo_rtp2trau().
The replacement fill frame introduced here differs as follows:
* The payload bit content is the silence frame of GSM 46.011
Table 1: certainly better than a SID with all LARc parameters
set to 0, and arguably better than any SID at all.
* The full TRAU-DL frame (C-bits pattern, peculiar ordering of
D-bits) was generated by passing said silence frame through
osmo_rtp2trau(), using this ad hoc tool:
https://gitea.osmocom.org/themwi/dummy-dl-frames
Change-Id: I995824586058e4e4ed77e900d4b57e5113f9eff6
0 commit comments