libgsmhr: Add some code cleanup / speedup patches for reference codec

Mostly this will help witht the upcoming bss switcheroo patch

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
laforge/rtp
Sylvain Munaut 7 years ago
parent 59a6c2dc62
commit 5e2e0442e0
  1. 2
      libgsmhr/Makefile.am
  2. 22
      libgsmhr/patches/0003-Remove-unused-variables.patch
  3. 175
      libgsmhr/patches/0004-Make-sure-all-constants-are-marked-as-such.patch
  4. 48
      libgsmhr/patches/0005-Remove-globals-initialization.patch
  5. 142
      libgsmhr/patches/0006-Allow-inlining-of-most-of-the-math-function-for-bett.patch

@ -6,7 +6,7 @@ EXTRA_DIST=fetch_sources.py
LIBVERSION=0:0:0
REFSRC_PATH=refsrc
REFSRC_SRC=refsrc/dtx.c refsrc/globdefs.c refsrc/host.c refsrc/mathhalf.c refsrc/sp_enc.c refsrc/sp_rom.c refsrc/vad.c refsrc/err_conc.c refsrc/homing.c refsrc/mathdp31.c refsrc/sp_dec.c refsrc/sp_frm.c refsrc/sp_sfrm.c
REFSRC_SRC=refsrc/dtx.c refsrc/globdefs.c refsrc/host.c refsrc/sp_enc.c refsrc/sp_rom.c refsrc/vad.c refsrc/err_conc.c refsrc/homing.c refsrc/mathdp31.c refsrc/sp_dec.c refsrc/sp_frm.c refsrc/sp_sfrm.c
${REFSRC_PATH}/.downloaded:
$(srcdir)/fetch_sources.py "${REFSRC_PATH}"

@ -0,0 +1,22 @@
From 22bf213844de942c6692c4f11d7561f4ff87a183 Mon Sep 17 00:00:00 2001
From: Sylvain Munaut <tnt@246tNt.com>
Date: Wed, 30 Dec 2015 09:50:58 +0100
Subject: [PATCH 3/6] Remove unused variables
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
---
dtx.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git refsrc/dtx.c refsrc/dtx.c
index 4ec8edb..27dcb0d 100644
--- refsrc/dtx.c
+++ refsrc/dtx.c
@@ -748 +747,0 @@
- pswFlatsRc[NP], /* Unquantized Rc's computed by FLAT */
@@ -754 +753 @@
- int i,
+ int
--
2.4.10

@ -0,0 +1,175 @@
From 8344eeb802a60a52bde844e4cf0ee81cffc9c329 Mon Sep 17 00:00:00 2001
From: Sylvain Munaut <tnt@246tNt.com>
Date: Wed, 30 Dec 2015 09:56:12 +0100
Subject: [PATCH 4/6] Make sure all constants are marked as such
This removes 'static' and moves stuff from .data to .rodata
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
---
dtx.c | 4 ++--
homing.c | 4 ++--
sp_dec.c | 22 ++++++++++++----------
sp_dec.h | 8 ++++----
sp_enc.c | 8 ++++----
sp_frm.c | 10 +++++-----
sp_frm.h | 4 ++--
sp_rom.c | 2 +-
sp_rom.h | 2 +-
sp_sfrm.c | 7 +++----
typedefs.h | 4 ++--
11 files changed, 38 insertions(+), 37 deletions(-)
diff --git refsrc/dtx.c refsrc/dtx.c
index 27dcb0d..918dc88 100644
--- refsrc/dtx.c
+++ refsrc/dtx.c
@@ -103 +103 @@
-Shortword psrCNNewFactor[12] = {0x0aaa, 0x1554, 0x1ffe, 0x2aa8, 0x3552,
+const Shortword psrCNNewFactor[12] = {0x0aaa, 0x1554, 0x1ffe, 0x2aa8, 0x3552,
@@ -110 +110 @@
-LongwordRom ppLr_gsTable[4][32] =
+const LongwordRom ppLr_gsTable[4][32] =
diff --git refsrc/homing.c refsrc/homing.c
index b45ea03..9901ac8 100644
--- refsrc/homing.c
+++ refsrc/homing.c
@@ -120 +120 @@
- static int n[] = {5, 11, 9, 8, 1, 2, 7, 7, 5, 7, 7, 5, 7, 7, 5, 7, 7, 5};
+ const int n[] = {5, 11, 9, 8, 1, 2, 7, 7, 5, 7, 7, 5, 7, 7, 5, 7, 7, 5};
@@ -122 +122 @@
- static Shortword dhf_mask[] =
+ const Shortword dhf_mask[] =
diff --git refsrc/sp_dec.c refsrc/sp_dec.c
index 07398a7..6022f5a 100644
--- refsrc/sp_dec.c
+++ refsrc/sp_dec.c
@@ -733 +733 @@
- static ShortwordRom psrSST[NP + 1] = {0x7FFF,
+ const ShortwordRom psrSST[NP + 1] = {0x7FFF,
@@ -1477,2 +1477,2 @@
- Shortword *ppswSynthAs[], Shortword *ppswPFNumAs[],
- Shortword *ppswPFDenomAs[])
+ Shortword * const ppswSynthAs[], Shortword * const ppswPFNumAs[],
+ Shortword * const ppswPFDenomAs[])
@@ -4621 +4620,0 @@
- *pswLtpStateOut = &pswLtpStateBaseDec[LTP_LEN],
@@ -4624,2 +4623,5 @@
- pswPFDenomAsSpace[NP * N_SUB],
- *ppswSynthAs[N_SUB] = {
+ pswPFDenomAsSpace[NP * N_SUB];
+
+ static Shortword
+ * const pswLtpStateOut = &pswLtpStateBaseDec[LTP_LEN],
+ * const ppswSynthAs[N_SUB] = {
@@ -4632 +4634 @@
- *ppswPFNumAs[N_SUB] = {
+ * const ppswPFNumAs[N_SUB] = {
@@ -4638 +4640 @@
- *ppswPFDenomAs[N_SUB] = {
+ * const ppswPFDenomAs[N_SUB] = {
@@ -4645 +4647 @@
- static ShortwordRom
+ const ShortwordRom
@@ -5429 +5431 @@
-void v_con(Shortword pswBVects[], Shortword pswOutVect[],
+void v_con(const Shortword pswBVects[], Shortword pswOutVect[],
diff --git refsrc/sp_dec.h refsrc/sp_dec.h
index b18e3cb..2d3bd71 100644
--- refsrc/sp_dec.h
+++ refsrc/sp_dec.h
@@ -38,3 +38,3 @@
- Shortword *ppswSynthAs[],
- Shortword *ppswPFNumAs[],
- Shortword *ppswPFDenomAs[]);
+ Shortword * const ppswSynthAs[],
+ Shortword * const ppswPFNumAs[],
+ Shortword * const ppswPFDenomAs[]);
@@ -97 +97 @@
- void v_con(Shortword pswBVects[], Shortword pswOutVect[],
+ void v_con(const Shortword pswBVects[], Shortword pswOutVect[],
diff --git refsrc/sp_enc.c refsrc/sp_enc.c
index 6dcb985..5f7eeef 100644
--- refsrc/sp_enc.c
+++ refsrc/sp_enc.c
@@ -133 +133 @@
- static Shortword *pswLpcStart = &pswSpeech[LPCSTARTINDEX];
+ Shortword * const pswLpcStart = &pswSpeech[LPCSTARTINDEX];
@@ -136 +136 @@
- static Shortword *pswNewSpeech = &pswSpeech[NUMSTARTUPSMP];
+ Shortword * const pswNewSpeech = &pswSpeech[NUMSTARTUPSMP];
@@ -139 +139 @@
- static Shortword *pswWgtSpeech = &pswWgtSpeechSpace[LSMAX];
+ Shortword * const pswWgtSpeech = &pswWgtSpeechSpace[LSMAX];
@@ -141 +141 @@
- static struct NormSw *psnsWSfrmEng = &psnsWSfrmEngSpace[N_SUB];
+ struct NormSw * const psnsWSfrmEng = &psnsWSfrmEngSpace[N_SUB];
diff --git refsrc/sp_frm.c refsrc/sp_frm.c
index c4854ad..bb26381 100644
--- refsrc/sp_frm.c
+++ refsrc/sp_frm.c
@@ -2142 +2142 @@
-void filt4_2nd(Shortword pswCoeff[], Shortword pswIn[],
+void filt4_2nd(const Shortword pswCoeff[], Shortword pswIn[],
@@ -3106 +3106 @@
- static Shortword pswPCoefE[3] =
+ const Shortword pswPCoefE[3] =
@@ -3230 +3230 @@
- static Shortword
+ const Shortword
@@ -3938 +3938 @@
-void iir_d(Shortword pswCoeff[], Shortword pswIn[], Shortword pswXstate[],
+void iir_d(const Shortword pswCoeff[], Shortword pswIn[], Shortword pswXstate[],
@@ -5279 +5279 @@
- static ShortwordRom psrSubMultFactor[] = {0x0aab, /* 1.0/12.0 */
+ const ShortwordRom psrSubMultFactor[] = {0x0aab, /* 1.0/12.0 */
diff --git refsrc/sp_frm.h refsrc/sp_frm.h
index 92317d9..8e2fb14 100644
--- refsrc/sp_frm.h
+++ refsrc/sp_frm.h
@@ -24 +24 @@
-void iir_d(Shortword pswCoeff[], Shortword pswIn[],
+void iir_d(const Shortword pswCoeff[], Shortword pswIn[],
@@ -32 +32 @@
- void filt4_2nd(Shortword pswCoeff[],
+ void filt4_2nd(const Shortword pswCoeff[],
diff --git refsrc/sp_rom.c refsrc/sp_rom.c
index e666774..f9349d1 100644
--- refsrc/sp_rom.c
+++ refsrc/sp_rom.c
@@ -6416 +6416 @@
-struct IsubLHn psvqIndex[QUANT_NUM_OF_TABLES] =
+const struct IsubLHn psvqIndex[QUANT_NUM_OF_TABLES] =
diff --git refsrc/sp_rom.h refsrc/sp_rom.h
index 8ac7d91..92a1537 100644
--- refsrc/sp_rom.h
+++ refsrc/sp_rom.h
@@ -128 +128 @@
-extern struct IsubLHn psvqIndex[QUANT_NUM_OF_TABLES];
+extern const struct IsubLHn psvqIndex[QUANT_NUM_OF_TABLES];
diff --git refsrc/sp_sfrm.c refsrc/sp_sfrm.c
index d4f0cd6..f20837a 100644
--- refsrc/sp_sfrm.c
+++ refsrc/sp_sfrm.c
@@ -1961 +1961 @@
- static Shortword
+ const Shortword
@@ -2054,0 +2055,2 @@
+ const Shortword *pswBIndex, *pswUIndex, *pswModNextBit;
+
@@ -2062,3 +2063,0 @@
- *pswUIndex,
- *pswBIndex,
- *pswModNextBit,
diff --git refsrc/typedefs.h refsrc/typedefs.h
index 15200cc..819f999 100644
--- refsrc/typedefs.h
+++ refsrc/typedefs.h
@@ -26,2 +26,2 @@
-typedef short int ShortwordRom; /* 16 bit ROM data (sr*) */
-typedef int LongwordRom; /* 32 bit ROM data (L_r*) */
+typedef const short int ShortwordRom; /* 16 bit ROM data (sr*) */
+typedef const int LongwordRom; /* 32 bit ROM data (L_r*) */
--
2.4.10

@ -0,0 +1,48 @@
From f91b68f12fe184640122db53f624cdad18c7e5be Mon Sep 17 00:00:00 2001
From: Sylvain Munaut <tnt@246tNt.com>
Date: Wed, 30 Dec 2015 09:58:23 +0100
Subject: [PATCH 5/6] Remove globals initialization
Theses will also be reset by calling resetDec / resetEnc, so we don't
need them initialized here.
This will move them from .data to .bss
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
---
dtx.c | 2 +-
sp_dec.c | 8 ++++----
sp_enc.c | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git refsrc/dtx.c refsrc/dtx.c
index 918dc88..254aff3 100644
--- refsrc/dtx.c
+++ refsrc/dtx.c
@@ -72 +72 @@
-Shortword swNElapsed = 50;
+Shortword swNElapsed;
diff --git refsrc/sp_dec.c refsrc/sp_dec.c
index 6022f5a..b6f065d 100644
--- refsrc/sp_dec.c
+++ refsrc/sp_dec.c
@@ -168 +168 @@
- Shortword swRxDTXState = CNINTPER - 1; /* DTX State at the rx.
+ Shortword swRxDTXState; /* DTX State at the rx.
@@ -173,3 +173,3 @@
- Shortword swDecoMode = SPEECH;
- Shortword swDtxMuting = 0;
- Shortword swDtxBfiCnt = 0;
+ Shortword swDecoMode;
+ Shortword swDtxMuting;
+ Shortword swDtxBfiCnt;
diff --git refsrc/sp_enc.c refsrc/sp_enc.c
index 5f7eeef..c71473c 100644
--- refsrc/sp_enc.c
+++ refsrc/sp_enc.c
@@ -72 +72 @@
-Shortword swPtch = 1;
+Shortword swPtch;
--
2.4.10

@ -0,0 +1,142 @@
From 6449c83295a4307a6cc7e7fb3a8b53c944116d27 Mon Sep 17 00:00:00 2001
From: Sylvain Munaut <tnt@246tNt.com>
Date: Wed, 30 Dec 2015 10:16:50 +0100
Subject: [PATCH 6/6] Allow inlining of most of the math function for better
speed
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
---
mathhalf.c | 29 +++++++++++++++++++++++++++++
mathhalf.h | 31 +++++++++++++++++++++++++++++++
2 files changed, 60 insertions(+)
diff --git refsrc/mathhalf.c refsrc/mathhalf.c
index 40a2152..fe5d192 100644
--- refsrc/mathhalf.c
+++ refsrc/mathhalf.c
@@ -139,0 +140 @@
+static __attribute__((unused))
@@ -201,0 +203 @@
+static __attribute__((unused))
@@ -251,0 +254 @@
+static __attribute__((unused))
@@ -304,0 +308 @@
+static __attribute__((unused))
@@ -345,0 +350 @@
+static __attribute__((unused))
@@ -385,0 +391 @@
+static __attribute__((unused))
@@ -448,0 +455 @@
+static __attribute__((unused))
@@ -514,0 +522 @@
+static __attribute__((unused))
@@ -552,0 +561 @@
+static __attribute__((unused))
@@ -613,0 +623 @@
+static __attribute__((unused))
@@ -671,0 +682 @@
+static __attribute__((unused))
@@ -717,0 +729 @@
+static __attribute__((unused))
@@ -763,0 +776 @@
+static __attribute__((unused))
@@ -831,0 +845 @@
+static __attribute__((unused))
@@ -899,0 +914 @@
+static __attribute__((unused))
@@ -1008,0 +1024 @@
+static __attribute__((unused))
@@ -1104,0 +1121 @@
+static __attribute__((unused))
@@ -1184,0 +1202 @@
+static __attribute__((unused))
@@ -1247,0 +1266 @@
+static __attribute__((unused))
@@ -1292,0 +1312 @@
+static __attribute__((unused))
@@ -1348,0 +1369 @@
+static __attribute__((unused))
@@ -1385,0 +1407 @@
+static __attribute__((unused))
@@ -1454,0 +1477 @@
+static __attribute__((unused))
@@ -1546,0 +1570 @@
+static __attribute__((unused))
@@ -1597,0 +1622 @@
+static __attribute__((unused))
@@ -1660,0 +1686 @@
+static __attribute__((unused))
@@ -1740,0 +1767 @@
+static __attribute__((unused))
@@ -1843,0 +1871 @@
+static __attribute__((unused))
@@ -1943,0 +1972 @@
+static __attribute__((unused))
diff --git refsrc/mathhalf.h refsrc/mathhalf.h
index 247cfde..81c4004 100644
--- refsrc/mathhalf.h
+++ refsrc/mathhalf.h
@@ -14,0 +15 @@
+static
@@ -15,0 +17 @@
+static
@@ -16,0 +19 @@
+static
@@ -17,0 +21 @@
+static
@@ -22,0 +27 @@
+static
@@ -23,0 +29 @@
+static
@@ -24,0 +31 @@
+static
@@ -30,0 +38 @@
+static
@@ -31,0 +40 @@
+static
@@ -32,0 +42 @@
+static
@@ -33,0 +44 @@
+static
@@ -34,0 +46 @@
+static
@@ -35,0 +48 @@
+static
@@ -40,0 +54 @@
+static
@@ -41,0 +56 @@
+static
@@ -47,0 +63 @@
+static
@@ -49,0 +66 @@
+static
@@ -51,0 +69 @@
+static
@@ -53,0 +72 @@
+static
@@ -59,0 +79 @@
+static
@@ -60,0 +81 @@
+static
@@ -66,0 +88 @@
+static
@@ -67,0 +90 @@
+static
@@ -68,0 +92 @@
+static
@@ -69,0 +94 @@
+static
@@ -74,0 +100 @@
+static
@@ -79,0 +106 @@
+static
@@ -80,0 +108 @@
+static
@@ -84,0 +113 @@
+static
@@ -96,0 +126,2 @@
+#include "mathhalf.c"
+
--
2.4.10
Loading…
Cancel
Save