changeset 525:c95e89367321

libgsmfr2: add gsmfr_preproc_good_frame_hm()
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 19 Sep 2024 06:42:01 +0000
parents ddb2b00d582b
children 405a84110997
files libgsmfr2/Makefile libgsmfr2/pp_homing.c libgsmfr2/tw_gsmfr.h
diffstat 3 files changed, 24 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libgsmfr2/Makefile	Thu Sep 19 05:02:45 2024 +0000
+++ b/libgsmfr2/Makefile	Thu Sep 19 06:42:01 2024 +0000
@@ -1,8 +1,8 @@
 OBJS=	add.o comfort_noise.o dec_main.o dec_wrap.o dhf.o ed_state.o \
 	enc_homing.o enc_main.o enc_wrap.o full_dec.o long_term.o lpc.o \
-	pack_frame.o pack_frame2.o pp_bad.o pp_good.o pp_state.o preprocess.o \
-	prng.o rpe.o short_term.o sidclass.o silence_frame.o table.o \
-	unpack_frame.o unpack_frame2.o xmaxc_mean.o
+	pack_frame.o pack_frame2.o pp_bad.o pp_good.o pp_homing.o pp_state.o \
+	preprocess.o prng.o rpe.o short_term.o sidclass.o silence_frame.o \
+	table.o unpack_frame.o unpack_frame2.o xmaxc_mean.o
 HDRS=	ed_internal.h ed_state.h pp_internal.h pp_state.h tw_gsmfr.h typedef.h
 LIB=	libgsmfr2.a
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmfr2/pp_homing.c	Thu Sep 19 06:42:01 2024 +0000
@@ -0,0 +1,19 @@
+/*
+ * gsmfr_preproc_good_frame_hm() is a wrapper around gsmfr_preproc_good_frame()
+ * that adds homing of the Rx DTX handler preprocessor block.  This homing
+ * version of good frame preproc is not used in the full decoder (the latter
+ * implements its own homing logic as specified by 3GPP), but it will be used
+ * when our Rx DTX handler preprocessor functions as a TFO transform.
+ */
+
+#include <stdint.h>
+#include <string.h>
+#include "tw_gsmfr.h"
+
+void gsmfr_preproc_good_frame_hm(struct gsmfr_preproc_state *st, uint8_t *frame)
+{
+	if (memcmp(frame, gsmfr_decoder_homing_frame, GSMFR_RTP_FRAME_LEN))
+		gsmfr_preproc_good_frame(st, frame);
+	else
+		gsmfr_preproc_reset(st);
+}
--- a/libgsmfr2/tw_gsmfr.h	Thu Sep 19 05:02:45 2024 +0000
+++ b/libgsmfr2/tw_gsmfr.h	Thu Sep 19 06:42:01 2024 +0000
@@ -84,6 +84,8 @@
 /* main processing functions */
 void gsmfr_preproc_good_frame(struct gsmfr_preproc_state *state,
 				uint8_t *frame);
+void gsmfr_preproc_good_frame_hm(struct gsmfr_preproc_state *state,
+				 uint8_t *frame);
 void gsmfr_preproc_bfi(struct gsmfr_preproc_state *state, int taf,
 			uint8_t *frame_out);