diff pcmu2efr/gen160.c @ 22:f4420403219a

pcmu2efr: change linear input gen to support 2nd frame
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 12 May 2024 03:40:27 +0000
parents 528eef871e23
children
line wrap: on
line diff
--- a/pcmu2efr/gen160.c	Sun May 12 03:15:23 2024 +0000
+++ b/pcmu2efr/gen160.c	Sun May 12 03:40:27 2024 +0000
@@ -1,6 +1,10 @@
 /*
  * The code in this module generates 160 versions of linearized seqsyncu,
  * shifted by one sample each, intended for feeding to EFR and AMR encoders.
+ *
+ * Update: the new version generates a linear array of 480 16-bit PCM samples,
+ * where the first 160 are 0x0008, followed by two copies of linearized
+ * seqsyncu.
  */
 
 #include <stdint.h>
@@ -8,34 +12,18 @@
 extern const uint8_t seqsyncu_last_frame[160];
 extern const uint16_t pcmu_decode_table[256];
 
-uint16_t linear_inputs[160][160];
-
-static void
-gen_first_seq(void)
-{
-	unsigned n;
-
-	for (n = 0; n < 160; n++)
-		linear_inputs[0][n] = pcmu_decode_table[seqsyncu_last_frame[n]];
-}
-
-static void
-gen_sequence_m(unsigned m)
-{
-	unsigned n, s;
-
-	for (n = 0; n < m; n++)
-		linear_inputs[m][n] = 0x0008;
-	for (s = 0; n < 160; n++, s++)
-		linear_inputs[m][n] = linear_inputs[0][s];
-}
+uint16_t linear_input_array[480];
 
 void
 generate_linear_inputs(void)
 {
-	unsigned m;
+	unsigned n;
+	uint16_t lin;
 
-	gen_first_seq();
-	for (m = 1; m < 160; m++)
-		gen_sequence_m(m);
+	for (n = 0; n < 160; n++) {
+		lin = pcmu_decode_table[seqsyncu_last_frame[n]];
+		linear_input_array[n] = 0x0008;
+		linear_input_array[160+n] = lin;
+		linear_input_array[320+n] = lin;
+	}
 }