changeset 37:b4db5366b595

libgsmefr: implement SID code word insertion
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 24 Nov 2022 02:55:24 +0000
parents b5726d659915
children 38326102fc43
files libgsmefr/Makefile libgsmefr/sid_insert.c
diffstat 2 files changed, 27 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
--- /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;
+}