# HG changeset patch
# User Mychaela Falconia <falcon@freecalypso.org>
# Date 1713063963 0
# Node ID 5fbb323b29784c1020113db3c7c61c8e66ca8a6f
# Parent  52c667f17d2cb486e5aa2e1b3ed7d8aec63f4cf5
libgsmfr2: implement encoder homing

diff -r 52c667f17d2c -r 5fbb323b2978 libgsmfr2/Makefile
--- a/libgsmfr2/Makefile	Sun Apr 14 02:57:18 2024 +0000
+++ b/libgsmfr2/Makefile	Sun Apr 14 03:06:03 2024 +0000
@@ -1,9 +1,10 @@
 CC=	gcc
 CFLAGS=	-O2
-OBJS=	add.o comfort_noise.o dec_main.o dec_wrap.o ed_state.o enc_main.o \
-	enc_wrap.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
+OBJS=	add.o comfort_noise.o dec_main.o dec_wrap.o ed_state.o enc_homing.o \
+	enc_main.o enc_wrap.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
 HDRS=	ed_internal.h ed_state.h pp_internal.h pp_state.h tw_gsmfr.h typedef.h
 LIB=	libgsmfr2.a
 
diff -r 52c667f17d2c -r 5fbb323b2978 libgsmfr2/enc_homing.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmfr2/enc_homing.c	Sun Apr 14 03:06:03 2024 +0000
@@ -0,0 +1,18 @@
+/*
+ * This module contains our implementation of the optional homing feature
+ * for our GSM 06.10 encoder.
+ */
+
+#include <stdint.h>
+#include "tw_gsmfr.h"
+
+void gsmfr_0610_encoder_homing(struct gsmfr_0610_state *st, const int16_t *pcm)
+{
+	int i;
+
+	for (i = 0; i < 160; i++) {
+		if (pcm[i] != 0x0008)
+			return;
+	}
+	gsmfr_0610_reset(st);
+}