diff options
author | Mychaela N. Falconia <falcon@freecalypso.org> | 2023-05-29 21:04:07 +0000 |
---|---|---|
committer | Mychaela N. Falconia <falcon@freecalypso.org> | 2023-05-29 21:04:07 +0000 |
commit | 405368b6974e4da9b0775f557330833e13f069d4 (patch) | |
tree | 5c36f95ac7db80e686e9ceba5a486c991da27b22 /include | |
parent | 1dd710944f9bf1eb19bcc11f71cb30fdd6a9c309 (diff) |
HR1 codec: act on SID indication in RFC5993 RTP input
Suppose we receive RTP from the uplink of another BTS, and the
UL-handling BTS has channel-decoded an HR1 frame which it deems
(per GSM 06.41 section 6.1.1) to be a valid SID, even though it is
not a perfect, error-free SID. How will this SID frame be
represented in RFC 5993 transport? My reading of the RFC tells me
that the UL-handling BTS will need to apply an operation like our
osmo_hr_sid_reset() to the payload before sending it out in RTP -
but because the text of the RFC does not explicitly address this
scenario, others may have interpreted it differently.
If we receive an RFC 5993 RTP payload in which FT is set to 2,
indicating good SID, but the actual HR payload is not a perfect SID
(the SID field is not all 1s), the only reasonable interpretation
of such occurrence is that the sender of this payload was another
BTS whose implementors interpreted the RFC as not requiring them
to rejuvenate the SID codeword prior to RTP output. Therefore, let's
treat such payloads as valid SID for our DTXd logic, and rejuvenate
the SID codeword ourselves.
Change-Id: Ife00de6220a8ca7cc180a61734497f1acb7f5b83
Diffstat (limited to 'include')
-rw-r--r-- | include/osmo-bts/msg_utils.h | 3 | ||||
-rw-r--r-- | include/osmo-bts/rtp_input_preen.h | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/include/osmo-bts/msg_utils.h b/include/osmo-bts/msg_utils.h index 7ddbe88f..fb8e11a5 100644 --- a/include/osmo-bts/msg_utils.h +++ b/include/osmo-bts/msg_utils.h @@ -22,6 +22,9 @@ struct msgb; /* Access 3rd part of msgb control buffer */ #define rtpmsg_ts(x) ((x)->cb[2]) +/* Access 4th part of msgb control buffer */ +#define rtpmsg_is_rfc5993_sid(x) ((x)->cb[3]) + /** * Classification of OML message. ETSI for plain GSM 12.21 * messages and IPA/Osmo for manufacturer messages. diff --git a/include/osmo-bts/rtp_input_preen.h b/include/osmo-bts/rtp_input_preen.h index 822ee4a4..744ae2a9 100644 --- a/include/osmo-bts/rtp_input_preen.h +++ b/include/osmo-bts/rtp_input_preen.h @@ -17,4 +17,4 @@ enum pl_input_decision { enum pl_input_decision rtp_payload_input_preen(struct gsm_lchan *lchan, const uint8_t *rtp_pl, - unsigned rtp_pl_len); + unsigned rtp_pl_len, bool *rfc5993_sid_flag); |