falconia has uploaded this change for review.
trau2rtp: rm defunct AMR WIP code
When the present TRAU<->RTP conversion module was initially introduced
in 2020, there was a WIP plan to eventually extend it to support AMR
in addition to FR/HR/EFR. Defunct code for a beginning of trau2rtp
implementation for AMR has sat in trau_rtp_conv.c under '#if 0' all
these years - but it never became anything beyond dead code. When
the time came to implement AMR TRAU support for real, the existing
TRAU<->RTP API from 2020 design turned out to be insufficient; the
AMR support that was merged just before 2025-12 major release takes
the form of an entirely new AMR TRAU frame interworking facility
with its own API. As a result of these developments, the original
defunct AMR code from 2020 now only adds confusion - remove it.
Change-Id: Ieeee8eb6dbf9c753458a91e13f2bf22311936259
---
M src/trau/trau_rtp_conv.c
1 file changed, 0 insertions(+), 136 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmo-abis refs/changes/44/41744/1
diff --git a/src/trau/trau_rtp_conv.c b/src/trau/trau_rtp_conv.c
index 9b1dc58..56cc109 100644
--- a/src/trau/trau_rtp_conv.c
+++ b/src/trau/trau_rtp_conv.c
@@ -1121,142 +1121,6 @@
return 0;
}
-#if 0
-static inline memcpy_inc(uint8_t *out, const uint8_t *in, size_t len, unsigned int *idx)
-{
- memcpy_inc(out, in, len);
- *idx += len;
-}
-
-static int amr_speech_extract_sbits(ubit_t *s_bits, const struct osmo_trau_frame *tf,
- enum osmo_amr_mode mode)
-{
- unsigned int s_idx = 0;
-
- switch (mode) {
- case AMR_4_75:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 44, 67 - 44, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 67, 92 - 67, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 108 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 111, 132 - 111, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 135, 148 - 135, &s_idx);
- break;
- case AMR_5_15:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 46, 96 - 46, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 69, 92 - 69, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 114 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 117, 136 - 117, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 139, 158 - 139, &s_idx);
- break;
- case AMR_5_90:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 41, 67 - 41, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 67, 92 - 67, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 116 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 119, 144 - 119, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 147, 168 - 147, &s_idx);
- break;
- case AMR_6_70:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 37, 63 - 37, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 63, 92 - 63, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 120 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 123, 152 - 123, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 155, 180 - 155, &s_idx);
- break;
- case AMR_7_40:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 34, 60 - 34, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 60, 92 - 60, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 124 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 127, 159 - 127, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 162, 191 - 162, &s_idx);
- break;
- case AMR_7_95:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 31, 58 - 31, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 58, 92 - 58, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 127 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 130, 164 - 130, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 167, 199 - 167, &s_idx);
- break;
- case AMR_10_2:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 20, 46 - 20, &s_idx); /* D21..D46 */
- memcpy_inc(s_bits + s_idx, tf->d_bits + 46, 92 - 46, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 95, 138 - 95, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 141, 187 - 141, &s_idx);
- memcpy_inc(s_bits + s_idx, tf->d_bits + 190, 233 - 190, &s_idx);
- break;
- case AMR_12_2:
- memcpy_inc(s_bits + s_idx, tf->d_bits + 0, 38 - 0, &s_idx); /* D1..D38 */
- memcpy_inc(s_bits + s_idx, tf->d_bits + 38, 91 - 38, &s_idx); /* D39..D91 */
- memcpy_inc(s_bits + s_idx, tf->d_bits + 94, 144 - 94, &s_idx); /* D95..D144 */
- memcpy_inc(s_bits + s_idx, tf->d_bits + 147, 200 - 147, &s_idx);/* D148..D200 */
- memcpy_inc(s_bits + s_idx, tf->d_bits + 203, 253 - 203, &s_idx);/* D204..D253 */
- break;
- }
-
- return s_idx;
-}
-
-/* TS 48.060 Section 5.5.1.2.2 */
-static int trau2rtp_16(uint8_t *out, const struct osmo_trau_frame *tf, enum osmo_amr_mode last_cmi)
-{
- enum osmo_amr_mode mode = last_cmi;
- uint8_t frame_class = tf->c_bits[21] << 1 | tf->c_bits[20];
- uint8_t cmr_cmi = tf->c_bits[23] << 2 | tf->c_bits[24] << 1 | tf->cb_bits[25];
- uint8_t no_speech_cls;
- uint8_t s_bits[242];
- uint8_t d_bits[242];
- unsigned int s_idx = 0;
- ubit_t rif = FIXME;
-
- if (tf->type != OSMO_TRAU16_FT_AMR)
- return -EINVAL;
-
- if (rif == 0)
- mode = cmr_cmi;
-
- switch (frame_class) {
- case 0: // no speech
- no_speech_cls = tf->d_bits[32] << 2 | tf->d_bits[33] << 1 | tf->d_bits[34];
- cmi_abs = tf->d_bits[35] << 2 | tf->d_bits[36] < 1 || tf->d_bits[37];
- cmr_abs = tf->d_bits[38] << 2 | tf->d_bits[39] < 1 || tf->d_bits[40];
- switch (no_speech_cls) {
- case 7: // sid first
- break;
- case 6: // onset
- break;
- case 5: // sid_update
- break;
- case 4: // sid_bad
- break;
- case 0: // no_data
- break;
- }
- break;
- case 1: // speech bad
- break;
- case 2:
- case 3:
- /* Extract the s-bits from the TRAU frame */
- amr_speech_extract_sbits(s_bits, tf, mode);
- /* Convert the s-bits to d-bits */
- osmo_amr_s_to_d(d_bits, s_bits, mode);
- break;
- }
-}
-
-int trau2rtp_amr(uint8_t *out, const struct osmo_trau_frame *tf, enum osmo_amr_mode last_cmi))
-{
- switch (tf->type) {
- case OSMO_TRAU16_FT_AMR:
- return trau2rtp_16(out, tf, last_cmi);
- case OSMO_TRAU8_AMR_LOW:
- case OSMO_TRAU8_AMR_6k7:
- case OSMO_TRAU8_AMR_7k4:
- default:
- return -EINVAL;
- }
-}
-#endif
-
/*
* CSD support: converting TRAU frames of type 'data' to 64 kbit/s
* like the RA part of TRAU, using RTP clearmode representation.
To view, visit change 41744. To unsubscribe, or for help writing mail filters, visit settings.