aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMychaela N. Falconia <falcon@freecalypso.org>2023-05-29 21:04:07 +0000
committerMychaela N. Falconia <falcon@freecalypso.org>2023-05-29 21:04:07 +0000
commit405368b6974e4da9b0775f557330833e13f069d4 (patch)
tree5c36f95ac7db80e686e9ceba5a486c991da27b22 /include
parent1dd710944f9bf1eb19bcc11f71cb30fdd6a9c309 (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.h3
-rw-r--r--include/osmo-bts/rtp_input_preen.h2
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);