# HG changeset patch
# User Mychaela Falconia <falcon@freecalypso.org>
# Date 1669258524 0
# Node ID b4db5366b595a910a958e233441304cb7ef87258
# Parent  b5726d659915f9234fc86873c20d9d605aa16d79
libgsmefr: implement SID code word insertion

diff -r b5726d659915 -r b4db5366b595 libgsmefr/Makefile
--- a/libgsmefr/Makefile	Thu Nov 24 02:36:47 2022 +0000
+++ b/libgsmefr/Makefile	Thu Nov 24 02:55:24 2022 +0000
@@ -1,6 +1,6 @@
 CC=	gcc
 CFLAGS=	-O2
-OBJS=	frame2params.o params2frame.o sid_class.o
+OBJS=	frame2params.o params2frame.o sid_class.o sid_insert.o
 LIB=	libgsmefr.a
 
 INSTALL_PREFIX=	/usr/local
diff -r b5726d659915 -r b4db5366b595 libgsmefr/sid_insert.c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libgsmefr/sid_insert.c	Thu Nov 24 02:55:24 2022 +0000
@@ -0,0 +1,26 @@
+/*
+ * EFR_insert_sid_codeword() inserts the 95 bit wide SID codeword into
+ * an EFR frame in RTP encoding, normally as part of EFR_encode_frame()
+ * processing right after EFR_params2frame().
+ */
+
+#include "gsm_efr.h"
+
+void EFR_insert_sid_codeword(uint8_t *frame)
+{
+	frame[6] |= 0x6F;
+	frame[7]  = 0xFF;
+	frame[8]  = 0xFF;
+	frame[9] |= 0x80;
+	frame[12] |= 0x3B;
+	frame[13]  = 0xFF;
+	frame[14]  = 0xFF;
+	frame[15] |= 0xE0;
+	frame[19]  = 0xFF;
+	frame[20]  = 0xFF;
+	frame[21]  = 0xFF;
+	frame[25]  = 0xFF;
+	frame[26] |= 0xFC;
+	frame[27]  = 0xFF;
+	frame[28] |= 0xC0;
+}