laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/41744?usp=email )
Change subject: trau2rtp: rm defunct AMR WIP code ......................................................................
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(-)
Approvals: laforge: Looks good to me, approved pespin: Looks good to me, but someone else must approve Jenkins Builder: Verified
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.