changeset 429:3ce30a95769e

libtwamr: implement test sequence input
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 07 May 2024 22:34:11 +0000
parents ffd87f972f86
children edbbbf1c4ab1
files libtwamr/Makefile libtwamr/tseq_in.c
diffstat 2 files changed, 51 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libtwamr/Makefile	Tue May 07 22:15:23 2024 +0000
+++ b/libtwamr/Makefile	Tue May 07 22:34:11 2024 +0000
@@ -17,8 +17,8 @@
 	q_plsf3_tab.o q_plsf5_tab.o q_plsf_3.o q_plsf_5.o qgain475.o qgain795.o\
 	qua_gain.o qua_gain_tab.o r_fft.o reorder.o residu.o s10_8pf.o \
 	set_sign.o sid_sync.o spreproc.o spstproc.o sqrt_l.o syn_filt.o \
-	tls_flags.o ton_stab.o tseq_out.o vad1.o vad2.o vad_reset.o weight_a.o \
-	window.o
+	tls_flags.o ton_stab.o tseq_in.o tseq_out.o vad1.o vad2.o vad_reset.o \
+	weight_a.o window.o
 HDRS=	a_refl.h agc.h autocorr.h az_lsp.h b_cn_cod.h basic_op.h bgnscd.h \
 	bitno.h bits2prm.h c1035pf.h c2_11pf.h c2_9pf.h c3_14pf.h c4_17pf.h \
 	c8_31pf.h c_g_aver.h calc_cor.h calc_en.h cbsearch.h cl_ltp.h cnst.h \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/tseq_in.c	Tue May 07 22:34:11 2024 +0000
@@ -0,0 +1,49 @@
+/*
+ * In this module we implement decoder input conversion from 3GPP
+ * test sequence format to our internal struct amr_param_frame.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "tw_amr.h"
+#include "namespace.h"
+#include "typedef.h"
+#include "cnst.h"
+#include "bits2prm.h"
+
+int amr_frame_from_tseq(const uint16_t *cod, int use_rxtype,
+			struct amr_param_frame *frame)
+{
+	enum RXFrameType rx_type;
+	int rc;
+
+	if (use_rxtype) {
+		if (cod[0] >= RX_N_FRAMETYPES)
+			return -1;
+		rx_type = cod[0];
+	} else {
+		rc = amr_txtype_to_rxtype(cod[0], &rx_type);
+		if (rc < 0)
+			return -1;
+	}
+	frame->type = rx_type;
+	if (rx_type == RX_NO_DATA) {
+		frame->mode = 0xFF;
+		return 0;
+	}
+	if (cod[MAX_SERIAL_SIZE+1] > 7)
+		return -2;
+	frame->mode = cod[MAX_SERIAL_SIZE+1];
+	switch (rx_type) {
+	case RX_SPEECH_GOOD:
+	case RX_SPEECH_DEGRADED:
+	case RX_SPEECH_BAD:
+		Bits2prm(frame->mode, cod + 1, frame->param);
+		break;
+	case RX_SID_UPDATE:
+	case RX_SID_BAD:
+		Bits2prm(MRDTX, cod + 1, frame->param);
+		break;
+	}
+	return 0;
+}