libeffects: Added support for 88.2kHz and 176.4kHz
Test: local native test (lvmtest)
Bug: 120806181
Change-Id: Idb06f6917a86634dfabcb51f3a80a5ab579fa91c
diff --git a/media/libeffects/lvm/lib/Bass/lib/LVDBE.h b/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
index a1fa79a..cc066b0 100644
--- a/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
+++ b/media/libeffects/lvm/lib/Bass/lib/LVDBE.h
@@ -199,8 +199,10 @@
#define LVDBE_CAP_FS_44100 128
#define LVDBE_CAP_FS_48000 256
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
-#define LVDBE_CAP_FS_96000 512
-#define LVDBE_CAP_FS_192000 1024
+#define LVDBE_CAP_FS_88200 512
+#define LVDBE_CAP_FS_96000 1024
+#define LVDBE_CAP_FS_176400 2048
+#define LVDBE_CAP_FS_192000 4096
#endif
typedef enum
@@ -215,8 +217,10 @@
LVDBE_FS_44100 = 7,
LVDBE_FS_48000 = 8,
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
- LVDBE_FS_96000 = 9,
- LVDBE_FS_192000 = 10,
+ LVDBE_FS_88200 = 9,
+ LVDBE_FS_96000 = 10,
+ LVDBE_FS_176400 = 11,
+ LVDBE_FS_192000 = 12,
#endif
LVDBE_FS_MAX = LVM_MAXINT_32
} LVDBE_Fs_en;
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Coeffs.h b/media/libeffects/lvm/lib/Bass/src/LVDBE_Coeffs.h
index 4ecaf14..8f058e8 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Coeffs.h
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Coeffs.h
@@ -580,12 +580,24 @@
#define HPF_Fs48000_Fc55_B2 0.989882f
#ifdef HIGHER_FS
+#define HPF_Fs88200_Fc55_A0 0.985818f
+#define HPF_Fs88200_Fc55_A1 (-1.971636f)
+#define HPF_Fs88200_Fc55_A2 0.985818f
+#define HPF_Fs88200_Fc55_B1 (-1.994466f)
+#define HPF_Fs88200_Fc55_B2 0.994481f
+
#define HPF_Fs96000_Fc55_A0 0.986040f
#define HPF_Fs96000_Fc55_A1 (-1.972080f)
#define HPF_Fs96000_Fc55_A2 0.986040f
#define HPF_Fs96000_Fc55_B1 (-1.994915f)
#define HPF_Fs96000_Fc55_B2 0.994928f
+#define HPF_Fs176400_Fc55_A0 0.987183f
+#define HPF_Fs176400_Fc55_A1 (-1.974366f)
+#define HPF_Fs176400_Fc55_A2 0.987183f
+#define HPF_Fs176400_Fc55_B1 (-1.997233f)
+#define HPF_Fs176400_Fc55_B2 0.997237f
+
#define HPF_Fs192000_Fc55_A0 0.987294f
#define HPF_Fs192000_Fc55_A1 (-1.974588f)
#define HPF_Fs192000_Fc55_A2 0.987294f
@@ -642,12 +654,24 @@
#define HPF_Fs48000_Fc66_B2 0.987871f
#ifdef HIGHER_FS
+#define HPF_Fs88200_Fc66_A0 0.985273f
+#define HPF_Fs88200_Fc66_A1 (-1.970546f)
+#define HPF_Fs88200_Fc66_A2 0.985273f
+#define HPF_Fs88200_Fc66_B1 (-1.993359f)
+#define HPF_Fs88200_Fc66_B2 0.993381f
+
#define HPF_Fs96000_Fc66_A0 0.985539f
#define HPF_Fs96000_Fc66_A1 (-1.971077f)
#define HPF_Fs96000_Fc66_A2 0.985539f
#define HPF_Fs96000_Fc66_B1 (-1.993898f)
#define HPF_Fs96000_Fc66_B2 0.993917f
+#define HPF_Fs176400_Fc66_A0 0.986910f
+#define HPF_Fs176400_Fc66_A1 (-1.973820f)
+#define HPF_Fs176400_Fc66_A2 0.986910f
+#define HPF_Fs176400_Fc66_B1 (-1.996679f)
+#define HPF_Fs176400_Fc66_B2 0.996685f
+
#define HPF_Fs192000_Fc66_A0 0.987043f
#define HPF_Fs192000_Fc66_A1 (-1.974086f)
#define HPF_Fs192000_Fc66_A2 0.987043f
@@ -703,12 +727,24 @@
#define HPF_Fs48000_Fc78_B2 0.985681f
#ifdef HIGHER_FS
+#define HPF_Fs88200_Fc78_A0 0.984678f
+#define HPF_Fs88200_Fc78_A1 (-1.969356f)
+#define HPF_Fs88200_Fc78_A2 0.984678f
+#define HPF_Fs88200_Fc78_B1 (-1.992151f)
+#define HPF_Fs88200_Fc78_B2 0.992182f
+
#define HPF_Fs96000_Fc78_A0 0.984992f
#define HPF_Fs96000_Fc78_A1 (-1.969984f)
#define HPF_Fs96000_Fc78_A2 0.984992f
#define HPF_Fs96000_Fc78_B1 (-1.992789f)
#define HPF_Fs96000_Fc78_B2 0.992815f
+#define HPF_Fs176400_Fc78_A0 0.986612f
+#define HPF_Fs176400_Fc78_A1 (-1.973224f)
+#define HPF_Fs176400_Fc78_A2 0.986612f
+#define HPF_Fs176400_Fc78_B1 (-1.996076f)
+#define HPF_Fs176400_Fc78_B2 0.996083f
+
#define HPF_Fs192000_Fc78_A0 0.986769f
#define HPF_Fs192000_Fc78_A1 (-1.973539f)
#define HPF_Fs192000_Fc78_A2 0.986769f
@@ -764,12 +800,24 @@
#define HPF_Fs48000_Fc90_B2 0.983497f
#ifdef HIGHER_FS
+#define HPF_Fs88200_Fc90_A0 0.984084f
+#define HPF_Fs88200_Fc90_A1 (-1.968168f)
+#define HPF_Fs88200_Fc90_A2 0.984084f
+#define HPF_Fs88200_Fc90_B1 (-1.990944f)
+#define HPF_Fs88200_Fc90_B2 0.990985f
+
#define HPF_Fs96000_Fc90_A0 0.984446f
#define HPF_Fs96000_Fc90_A1 (-1.968892f)
#define HPF_Fs96000_Fc90_A2 0.984446f
#define HPF_Fs96000_Fc90_B1 (-1.991680f)
#define HPF_Fs96000_Fc90_B2 0.991714f
+#define HPF_Fs176400_Fc90_A0 0.986314f
+#define HPF_Fs176400_Fc90_A1 (-1.972629f)
+#define HPF_Fs176400_Fc90_A2 0.986314f
+#define HPF_Fs176400_Fc90_B1 (-1.995472f)
+#define HPF_Fs176400_Fc90_B2 0.995482f
+
#define HPF_Fs192000_Fc90_A0 0.986496f
#define HPF_Fs192000_Fc90_A1 (-1.972992f)
#define HPF_Fs192000_Fc90_A2 0.986496f
@@ -831,12 +879,24 @@
#define BPF_Fs48000_Fc55_B2 0.996875f
#ifdef HIGHER_FS
+#define BPF_Fs88200_Fc55_A0 0.000831f
+#define BPF_Fs88200_Fc55_A1 0.000000f
+#define BPF_Fs88200_Fc55_A2 (-0.000831f)
+#define BPF_Fs88200_Fc55_B1 (-1.998321f)
+#define BPF_Fs88200_Fc55_B2 0.998338f
+
#define BPF_Fs96000_Fc55_A0 0.000762f
#define BPF_Fs96000_Fc55_A1 0.000000f
#define BPF_Fs96000_Fc55_A2 (-0.000762f)
#define BPF_Fs96000_Fc55_B1 (-1.998461f)
#define BPF_Fs96000_Fc55_B2 0.998477f
+#define BPF_Fs176400_Fc55_A0 0.000416f
+#define BPF_Fs176400_Fc55_A1 0.000000f
+#define BPF_Fs176400_Fc55_A2 (-0.000416f)
+#define BPF_Fs176400_Fc55_B1 (-1.999164f)
+#define BPF_Fs176400_Fc55_B2 0.999169f
+
#define BPF_Fs192000_Fc55_A0 0.000381f
#define BPF_Fs192000_Fc55_A1 0.000000f
#define BPF_Fs192000_Fc55_A2 (-0.000381f)
@@ -892,12 +952,24 @@
#define BPF_Fs48000_Fc66_B2 0.995690f
#ifdef HIGHER_FS
+#define BPF_Fs88200_Fc66_A0 0.001146f
+#define BPF_Fs88200_Fc66_A1 0.000000f
+#define BPF_Fs88200_Fc66_A2 (-0.001146f)
+#define BPF_Fs88200_Fc66_B1 (-1.997684f)
+#define BPF_Fs88200_Fc66_B2 0.997708f
+
#define BPF_Fs96000_Fc66_A0 0.001055f
#define BPF_Fs96000_Fc66_A1 0.000000f
#define BPF_Fs96000_Fc66_A2 (-0.001055f)
#define BPF_Fs96000_Fc66_B1 (-1.997868f)
#define BPF_Fs96000_Fc66_B2 0.997891f
+#define BPF_Fs176400_Fc66_A0 0.000573f
+#define BPF_Fs176400_Fc66_A1 0.000000f
+#define BPF_Fs176400_Fc66_A2 (-0.000573f)
+#define BPF_Fs176400_Fc66_B1 (-1.998847f)
+#define BPF_Fs176400_Fc66_B2 0.998853f
+
#define BPF_Fs192000_Fc66_A0 0.000528f
#define BPF_Fs192000_Fc66_A1 0.000000f
#define BPF_Fs192000_Fc66_A2 (-0.000528f)
@@ -953,12 +1025,24 @@
#define BPF_Fs48000_Fc78_B2 0.993639f
#ifdef HIGHER_FS
+#define BPF_Fs88200_Fc78_A0 0.001693f
+#define BPF_Fs88200_Fc78_A1 0.000000f
+#define BPF_Fs88200_Fc78_A2 (-0.001693f)
+#define BPF_Fs88200_Fc78_B1 (-1.996582f)
+#define BPF_Fs88200_Fc78_B2 0.996615f
+
#define BPF_Fs96000_Fc78_A0 0.001555f
#define BPF_Fs96000_Fc78_A1 0.000000f
#define BPF_Fs96000_Fc78_A2 (-0.0015555f)
#define BPF_Fs96000_Fc78_B1 (-1.996860f)
#define BPF_Fs96000_Fc78_B2 0.996891f
+#define BPF_Fs176400_Fc78_A0 0.000847f
+#define BPF_Fs176400_Fc78_A1 0.000000f
+#define BPF_Fs176400_Fc78_A2 (-0.000847f)
+#define BPF_Fs176400_Fc78_B1 (-1.998298f)
+#define BPF_Fs176400_Fc78_B2 0.998306f
+
#define BPF_Fs192000_Fc78_A0 0.000778f
#define BPF_Fs192000_Fc78_A1 0.000000f
#define BPF_Fs192000_Fc78_A2 (-0.000778f)
@@ -1014,12 +1098,24 @@
#define BPF_Fs48000_Fc90_B2 0.992177f
#ifdef HIGHER_FS
+#define BPF_Fs88200_Fc90_A0 0.002083f
+#define BPF_Fs88200_Fc90_A1 0.000000f
+#define BPF_Fs88200_Fc90_A2 (-0.002083f)
+#define BPF_Fs88200_Fc90_B1 (-1.995791f)
+#define BPF_Fs88200_Fc90_B2 0.995835f
+
#define BPF_Fs96000_Fc90_A0 0.001913f
#define BPF_Fs96000_Fc90_A1 0.000000f
#define BPF_Fs96000_Fc90_A2 (-0.001913f)
#define BPF_Fs96000_Fc90_B1 (-1.996134f)
#define BPF_Fs96000_Fc90_B2 0.996174f
+#define BPF_Fs176400_Fc90_A0 0.001042f
+#define BPF_Fs176400_Fc90_A1 0.000000f
+#define BPF_Fs176400_Fc90_A2 (-0.001042f)
+#define BPF_Fs176400_Fc90_B1 (-1.997904f)
+#define BPF_Fs176400_Fc90_B2 0.997915f
+
#define BPF_Fs192000_Fc90_A0 0.000958f
#define BPF_Fs192000_Fc90_A1 0.000000f
#define BPF_Fs192000_Fc90_A2 (-0.000958f)
@@ -1045,7 +1141,9 @@
#define AGC_ATTACK_Fs48000 0.971628f
#ifdef HIGHER_FS
+#define AGC_ATTACK_Fs88200 0.984458f
#define AGC_ATTACK_Fs96000 0.985712f
+#define AGC_ATTACK_Fs176400 0.992199f
#define AGC_ATTACK_Fs192000 0.992830f
#endif
@@ -1062,7 +1160,9 @@
#define AGC_DECAY_Fs48000 0.000007f
#ifdef HIGHER_FS
+#define AGC_DECAY_Fs88200 0.0000038f
#define AGC_DECAY_FS96000 0.0000035f
+#define AGC_DECAY_Fs176400 0.00000188f
#define AGC_DECAY_FS192000 0.00000175f
#endif
@@ -1125,7 +1225,9 @@
#define VOL_TC_Fs44100 0.004525f
#define VOL_TC_Fs48000 0.004158f
#ifdef HIGHER_FS
+#define VOL_TC_Fs88200 0.002263f
#define VOL_TC_Fs96000 0.002079f
+#define VOL_TC_Fs176400 0.001131f
#define VOL_TC_Fs192000 0.001039f
#endif
#define MIX_TC_Fs8000 29365 /* Floating point value 0.896151 */
@@ -1138,9 +1240,13 @@
#define MIX_TC_Fs44100 32097 /* Floating point value 0.979515 */
#define MIX_TC_Fs48000 32150 /* Floating point value 0.981150 */
#ifdef HIGHER_FS
+/* Floating point value 0.989704 */
+#define MIX_TC_Fs88200 32430
#define MIX_TC_Fs96000 32456 /* Floating point value 0.990530 */
+/* Floating point value 0.994838 */
+#define MIX_TC_Fs176400 32598
#define MIX_TC_Fs192000 32611 /* Floating point value 0.992524 */
#endif
#endif /*BUILD_FLOAT*/
-#endif
\ No newline at end of file
+#endif
diff --git a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
index c4a9b14..a2ce404 100644
--- a/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
+++ b/media/libeffects/lvm/lib/Bass/src/LVDBE_Tables.c
@@ -88,11 +88,21 @@
-HPF_Fs48000_Fc55_B2,
-HPF_Fs48000_Fc55_B1},
#ifdef HIGHER_FS
+ {HPF_Fs88200_Fc55_A2, /* 88kS/s coefficients */
+ HPF_Fs88200_Fc55_A1,
+ HPF_Fs88200_Fc55_A0,
+ -HPF_Fs88200_Fc55_B2,
+ -HPF_Fs88200_Fc55_B1},
{HPF_Fs96000_Fc55_A2, /* 96kS/s coefficients */
HPF_Fs96000_Fc55_A1,
HPF_Fs96000_Fc55_A0,
-HPF_Fs96000_Fc55_B2,
-HPF_Fs96000_Fc55_B1},
+ {HPF_Fs176400_Fc55_A2, /* 176kS/s coefficients */
+ HPF_Fs176400_Fc55_A1,
+ HPF_Fs176400_Fc55_A0,
+ -HPF_Fs176400_Fc55_B2,
+ -HPF_Fs176400_Fc55_B1},
{HPF_Fs192000_Fc55_A2, /* 192kS/s coefficients */
HPF_Fs192000_Fc55_A1,
HPF_Fs192000_Fc55_A0,
@@ -147,11 +157,21 @@
-HPF_Fs48000_Fc66_B2,
-HPF_Fs48000_Fc66_B1},
#ifdef HIGHER_FS
+ {HPF_Fs88200_Fc66_A2, /* 88kS/s coefficients */
+ HPF_Fs88200_Fc66_A1,
+ HPF_Fs88200_Fc66_A0,
+ -HPF_Fs88200_Fc66_B2,
+ -HPF_Fs88200_Fc66_B1},
{HPF_Fs96000_Fc66_A2, /* 96kS/s coefficients */
HPF_Fs96000_Fc66_A1,
HPF_Fs96000_Fc66_A0,
-HPF_Fs96000_Fc66_B2,
-HPF_Fs96000_Fc66_B1},
+ {HPF_Fs176400_Fc66_A2, /* 176kS/s coefficients */
+ HPF_Fs176400_Fc66_A1,
+ HPF_Fs176400_Fc66_A0,
+ -HPF_Fs176400_Fc66_B2,
+ -HPF_Fs176400_Fc66_B1},
{HPF_Fs192000_Fc66_A2, /* 192kS/s coefficients */
HPF_Fs192000_Fc66_A1,
HPF_Fs192000_Fc66_A0,
@@ -207,11 +227,21 @@
-HPF_Fs48000_Fc78_B2,
-HPF_Fs48000_Fc78_B1},
#ifdef HIGHER_FS
+ {HPF_Fs88200_Fc78_A2, /* 88kS/s coefficients */
+ HPF_Fs88200_Fc78_A1,
+ HPF_Fs88200_Fc78_A0,
+ -HPF_Fs88200_Fc78_B2,
+ -HPF_Fs88200_Fc78_B1},
{HPF_Fs96000_Fc78_A2, /* 96kS/s coefficients */
HPF_Fs96000_Fc78_A1,
HPF_Fs96000_Fc78_A0,
-HPF_Fs96000_Fc78_B2,
-HPF_Fs96000_Fc78_B1},
+ {HPF_Fs176400_Fc78_A2, /* 176kS/s coefficients */
+ HPF_Fs176400_Fc78_A1,
+ HPF_Fs176400_Fc78_A0,
+ -HPF_Fs176400_Fc78_B2,
+ -HPF_Fs176400_Fc78_B1},
{HPF_Fs192000_Fc78_A2, /* 192kS/s coefficients */
HPF_Fs192000_Fc78_A1,
HPF_Fs192000_Fc78_A0,
@@ -269,11 +299,21 @@
#ifdef HIGHER_FS
,
+ {HPF_Fs88200_Fc90_A2, /* 88kS/s coefficients */
+ HPF_Fs88200_Fc90_A1,
+ HPF_Fs88200_Fc90_A0,
+ -HPF_Fs88200_Fc90_B2,
+ -HPF_Fs88200_Fc90_B1},
{HPF_Fs96000_Fc90_A2, /* 96kS/s coefficients */
HPF_Fs96000_Fc90_A1,
HPF_Fs96000_Fc90_A0,
-HPF_Fs96000_Fc90_B2,
-HPF_Fs96000_Fc90_B1},
+ {HPF_Fs176400_Fc90_A2, /* 176kS/s coefficients */
+ HPF_Fs176400_Fc90_A1,
+ HPF_Fs176400_Fc90_A0,
+ -HPF_Fs176400_Fc90_B2,
+ -HPF_Fs176400_Fc90_B1},
{HPF_Fs192000_Fc90_A2, /* 192kS/s coefficients */
HPF_Fs192000_Fc90_A1,
HPF_Fs192000_Fc90_A0,
@@ -320,9 +360,15 @@
-BPF_Fs48000_Fc55_B2,
-BPF_Fs48000_Fc55_B1},
#ifdef HIGHER_FS
+ {BPF_Fs88200_Fc55_A0, /* 88kS/s coefficients */
+ -BPF_Fs88200_Fc55_B2,
+ -BPF_Fs88200_Fc55_B1},
{BPF_Fs96000_Fc55_A0, /* 96kS/s coefficients */
-BPF_Fs96000_Fc55_B2,
-BPF_Fs96000_Fc55_B1},
+ {BPF_Fs176400_Fc55_A0, /* 176kS/s coefficients */
+ -BPF_Fs176400_Fc55_B2,
+ -BPF_Fs176400_Fc55_B1},
{BPF_Fs192000_Fc55_A0, /* 192kS/s coefficients */
-BPF_Fs192000_Fc55_B2,
-BPF_Fs192000_Fc55_B1},
@@ -357,9 +403,15 @@
-BPF_Fs48000_Fc66_B2,
-BPF_Fs48000_Fc66_B1},
#ifdef HIGHER_FS
+ {BPF_Fs88200_Fc66_A0, /* 88kS/s coefficients */
+ -BPF_Fs88200_Fc66_B2,
+ -BPF_Fs88200_Fc66_B1},
{BPF_Fs96000_Fc66_A0, /* 96kS/s coefficients */
-BPF_Fs96000_Fc66_B2,
-BPF_Fs96000_Fc66_B1},
+ {BPF_Fs176400_Fc66_A0, /* 176kS/s coefficients */
+ -BPF_Fs176400_Fc66_B2,
+ -BPF_Fs176400_Fc66_B1},
{BPF_Fs192000_Fc66_A0, /* 192kS/s coefficients */
-BPF_Fs192000_Fc66_B2,
-BPF_Fs192000_Fc66_B1},
@@ -394,9 +446,15 @@
-BPF_Fs48000_Fc78_B2,
-BPF_Fs48000_Fc78_B1},
#ifdef HIGHER_FS
+ {BPF_Fs88200_Fc66_A0, /* 88kS/s coefficients */
+ -BPF_Fs88200_Fc66_B2,
+ -BPF_Fs88200_Fc66_B1},
{BPF_Fs96000_Fc78_A0, /* 96kS/s coefficients */
-BPF_Fs96000_Fc78_B2,
-BPF_Fs96000_Fc78_B1},
+ {BPF_Fs176400_Fc66_A0, /* 176kS/s coefficients */
+ -BPF_Fs176400_Fc66_B2,
+ -BPF_Fs176400_Fc66_B1},
{BPF_Fs192000_Fc78_A0, /* 192kS/s coefficients */
-BPF_Fs192000_Fc78_B2,
-BPF_Fs192000_Fc78_B1},
@@ -432,9 +490,15 @@
-BPF_Fs48000_Fc90_B1}
#ifdef HIGHER_FS
,
+ {BPF_Fs88200_Fc90_A0, /* 88kS/s coefficients */
+ -BPF_Fs88200_Fc90_B2,
+ -BPF_Fs88200_Fc90_B1},
{BPF_Fs96000_Fc90_A0, /* 96kS/s coefficients */
-BPF_Fs96000_Fc90_B2,
-BPF_Fs96000_Fc90_B1},
+ {BPF_Fs176400_Fc90_A0, /* 176kS/s coefficients */
+ -BPF_Fs176400_Fc90_B2,
+ -BPF_Fs176400_Fc90_B1},
{BPF_Fs192000_Fc90_A0, /* 192kS/s coefficients */
-BPF_Fs192000_Fc90_B2,
-BPF_Fs192000_Fc90_B1}
@@ -466,7 +530,9 @@
AGC_ATTACK_Fs44100,
AGC_ATTACK_Fs48000
#ifdef HIGHER_FS
+ ,AGC_ATTACK_Fs88200
,AGC_ATTACK_Fs96000
+ ,AGC_ATTACK_Fs176400
,AGC_ATTACK_Fs192000
#endif
@@ -488,7 +554,9 @@
AGC_DECAY_Fs44100,
AGC_DECAY_Fs48000
#ifdef HIGHER_FS
+ ,AGC_DECAY_Fs88200
,AGC_DECAY_FS96000
+ ,AGC_DECAY_Fs176400
,AGC_DECAY_FS192000
#endif
@@ -583,7 +651,9 @@
VOL_TC_Fs44100,
VOL_TC_Fs48000
#ifdef HIGHER_FS
+ ,VOL_TC_Fs88200
,VOL_TC_Fs96000
+ ,VOL_TC_Fs176400
,VOL_TC_Fs192000
#endif
};
@@ -602,7 +672,9 @@
MIX_TC_Fs44100,
MIX_TC_Fs48000
#ifdef HIGHER_FS
+ ,MIX_TC_Fs88200
,MIX_TC_Fs96000
+ ,MIX_TC_Fs176400
,MIX_TC_Fs192000
#endif
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Coeffs.h b/media/libeffects/lvm/lib/Bundle/src/LVM_Coeffs.h
index 8c04847..bab4049 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Coeffs.h
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Coeffs.h
@@ -487,6 +487,97 @@
#define HPF_Fs48000_Gain15_B2 0.000000
#ifdef HIGHER_FS
+/* Coefficients for sample rate 88200 */
+/* Gain = 1.000000 dB */
+#define HPF_Fs88200_Gain1_A0 1.094374f
+#define HPF_Fs88200_Gain1_A1 (-0.641256f)
+#define HPF_Fs88200_Gain1_A2 0.000000f
+#define HPF_Fs88200_Gain1_B1 (-0.546882f)
+#define HPF_Fs88200_Gain1_B2 0.000000f
+/* Gain = 2.000000 dB */
+#define HPF_Fs88200_Gain2_A0 1.200264f
+#define HPF_Fs88200_Gain2_A1 (-0.747146f)
+#define HPF_Fs88200_Gain2_A2 0.000000f
+#define HPF_Fs88200_Gain2_B1 (-0.546882f)
+#define HPF_Fs88200_Gain2_B2 0.000000f
+/* Gain = 3.000000 dB */
+#define HPF_Fs88200_Gain3_A0 1.319074f
+#define HPF_Fs88200_Gain3_A1 (-0.865956f)
+#define HPF_Fs88200_Gain3_A2 0.000000f
+#define HPF_Fs88200_Gain3_B1 (-0.546882f)
+#define HPF_Fs88200_Gain3_B2 0.000000f
+/* Gain = 4.000000 dB */
+#define HPF_Fs88200_Gain4_A0 1.452380f
+#define HPF_Fs88200_Gain4_A1 (-0.999263f)
+#define HPF_Fs88200_Gain4_A2 0.000000f
+#define HPF_Fs88200_Gain4_B1 (-0.546882f)
+#define HPF_Fs88200_Gain4_B2 0.000000f
+/* Gain = 5.000000 dB */
+#define HPF_Fs88200_Gain5_A0 1.601953f
+#define HPF_Fs88200_Gain5_A1 (-1.148836f)
+#define HPF_Fs88200_Gain5_A2 0.000000f
+#define HPF_Fs88200_Gain5_B1 (-0.546882f)
+#define HPF_Fs88200_Gain5_B2 0.000000f
+/* Gain = 6.000000 dB */
+#define HPF_Fs88200_Gain6_A0 1.769777f
+#define HPF_Fs88200_Gain6_A1 (-1.316659f)
+#define HPF_Fs88200_Gain6_A2 0.000000f
+#define HPF_Fs88200_Gain6_B1 (-0.546882f)
+#define HPF_Fs88200_Gain6_B2 0.000000f
+/* Gain = 7.000000 dB */
+#define HPF_Fs88200_Gain7_A0 1.958078f
+#define HPF_Fs88200_Gain7_A1 (-1.504960f)
+#define HPF_Fs88200_Gain7_A2 0.000000f
+#define HPF_Fs88200_Gain7_B1 (-0.546882f)
+#define HPF_Fs88200_Gain7_B2 0.000000f
+/* Gain = 8.000000 dB */
+#define HPF_Fs88200_Gain8_A0 2.169355f
+#define HPF_Fs88200_Gain8_A1 (-1.716238f)
+#define HPF_Fs88200_Gain8_A2 0.000000f
+#define HPF_Fs88200_Gain8_B1 (-0.546882f)
+#define HPF_Fs88200_Gain8_B2 0.000000f
+/* Gain = 9.000000 dB */
+#define HPF_Fs88200_Gain9_A0 2.406412f
+#define HPF_Fs88200_Gain9_A1 (-1.953295f)
+#define HPF_Fs88200_Gain9_A2 0.000000f
+#define HPF_Fs88200_Gain9_B1 (-0.546882f)
+#define HPF_Fs88200_Gain9_B2 0.000000f
+/* Gain = 10.000000 dB */
+#define HPF_Fs88200_Gain10_A0 2.672395f
+#define HPF_Fs88200_Gain10_A1 (-2.219277f)
+#define HPF_Fs88200_Gain10_A2 0.000000f
+#define HPF_Fs88200_Gain10_B1 (-0.546882f)
+#define HPF_Fs88200_Gain10_B2 0.000000f
+/* Gain = 11.000000 dB */
+#define HPF_Fs88200_Gain11_A0 2.970832f
+#define HPF_Fs88200_Gain11_A1 (-2.517714f)
+#define HPF_Fs88200_Gain11_A2 0.000000f
+#define HPF_Fs88200_Gain11_B1 (-0.546882f)
+#define HPF_Fs88200_Gain11_B2 0.000000f
+/* Gain = 12.000000 dB */
+#define HPF_Fs88200_Gain12_A0 3.305684f
+#define HPF_Fs88200_Gain12_A1 (-2.852566f)
+#define HPF_Fs88200_Gain12_A2 0.000000f
+#define HPF_Fs88200_Gain12_B1 (-0.546882f)
+#define HPF_Fs88200_Gain12_B2 0.000000f
+/* Gain = 13.000000 dB */
+#define HPF_Fs88200_Gain13_A0 3.681394f
+#define HPF_Fs88200_Gain13_A1 (-3.228276f)
+#define HPF_Fs88200_Gain13_A2 0.000000f
+#define HPF_Fs88200_Gain13_B1 (-0.546882f)
+#define HPF_Fs88200_Gain13_B2 0.000000f
+/* Gain = 14.000000 dB */
+#define HPF_Fs88200_Gain14_A0 4.102947f
+#define HPF_Fs88200_Gain14_A1 (-3.649830f)
+#define HPF_Fs88200_Gain14_A2 0.000000f
+#define HPF_Fs88200_Gain14_B1 (-0.546882f)
+#define HPF_Fs88200_Gain14_B2 0.000000f
+/* Gain = 15.000000 dB */
+#define HPF_Fs88200_Gain15_A0 4.575938f
+#define HPF_Fs88200_Gain15_A1 (-4.122820f)
+#define HPF_Fs88200_Gain15_A2 0.000000f
+#define HPF_Fs88200_Gain15_B1 (-0.546882f)
+#define HPF_Fs88200_Gain15_B2 0.000000f
/* Coefficients for sample rate 96000Hz */
/* Gain = 1.000000 dB */
@@ -580,6 +671,98 @@
#define HPF_Fs96000_Gain15_B1 (-0.577350)
#define HPF_Fs96000_Gain15_B2 0.000000
+/* Coefficients for sample rate 176400 */
+/* Gain = 1.000000 dB */
+#define HPF_Fs176400_Gain1_A0 1.106711f
+#define HPF_Fs176400_Gain1_A1 (-0.855807f)
+#define HPF_Fs176400_Gain1_A2 0.000000f
+#define HPF_Fs176400_Gain1_B1 (-0.749096f)
+#define HPF_Fs176400_Gain1_B2 0.000000f
+/* Gain = 2.000000 dB */
+#define HPF_Fs176400_Gain2_A0 1.226443f
+#define HPF_Fs176400_Gain2_A1 (-0.975539f)
+#define HPF_Fs176400_Gain2_A2 0.000000f
+#define HPF_Fs176400_Gain2_B1 (-0.749096f)
+#define HPF_Fs176400_Gain2_B2 0.000000f
+/* Gain = 3.000000 dB */
+#define HPF_Fs176400_Gain3_A0 1.360784f
+#define HPF_Fs176400_Gain3_A1 (-1.109880f)
+#define HPF_Fs176400_Gain3_A2 0.000000f
+#define HPF_Fs176400_Gain3_B1 (-0.749096f)
+#define HPF_Fs176400_Gain3_B2 0.000000f
+/* Gain = 4.000000 dB */
+#define HPF_Fs176400_Gain4_A0 1.511517f
+#define HPF_Fs176400_Gain4_A1 (-1.260613f)
+#define HPF_Fs176400_Gain4_A2 0.000000f
+#define HPF_Fs176400_Gain4_B1 (-0.749096f)
+#define HPF_Fs176400_Gain4_B2 0.000000f
+/* Gain = 5.000000 dB */
+#define HPF_Fs176400_Gain5_A0 1.680643f
+#define HPF_Fs176400_Gain5_A1 (-1.429739f)
+#define HPF_Fs176400_Gain5_A2 0.000000f
+#define HPF_Fs176400_Gain5_B1 (-0.749096f)
+#define HPF_Fs176400_Gain5_B2 0.000000f
+/* Gain = 6.000000 dB */
+#define HPF_Fs176400_Gain6_A0 1.870405f
+#define HPF_Fs176400_Gain6_A1 (-1.619501f)
+#define HPF_Fs176400_Gain6_A2 0.000000f
+#define HPF_Fs176400_Gain6_B1 (-0.749096f)
+#define HPF_Fs176400_Gain6_B2 0.000000f
+/* Gain = 7.000000 dB */
+#define HPF_Fs176400_Gain7_A0 2.083321f
+#define HPF_Fs176400_Gain7_A1 (-1.832417f)
+#define HPF_Fs176400_Gain7_A2 0.000000f
+#define HPF_Fs176400_Gain7_B1 (-0.749096f)
+#define HPF_Fs176400_Gain7_B2 0.000000f
+/* Gain = 8.000000 dB */
+#define HPF_Fs176400_Gain8_A0 2.322217f
+#define HPF_Fs176400_Gain8_A1 (-2.071313f)
+#define HPF_Fs176400_Gain8_A2 0.000000f
+#define HPF_Fs176400_Gain8_B1 (-0.749096f)
+#define HPF_Fs176400_Gain8_B2 0.000000f
+/* Gain = 9.000000 dB */
+#define HPF_Fs176400_Gain9_A0 2.590263f
+#define HPF_Fs176400_Gain9_A1 (-2.339359f)
+#define HPF_Fs176400_Gain9_A2 0.000000f
+#define HPF_Fs176400_Gain9_B1 (-0.749096f)
+#define HPF_Fs176400_Gain9_B2 0.000000f
+/* Gain = 10.000000 dB */
+#define HPF_Fs176400_Gain10_A0 2.891016f
+#define HPF_Fs176400_Gain10_A1 (-2.640112f)
+#define HPF_Fs176400_Gain10_A2 0.000000f
+#define HPF_Fs176400_Gain10_B1 (-0.749096f)
+#define HPF_Fs176400_Gain10_B2 0.000000f
+/* Gain = 11.000000 dB */
+#define HPF_Fs176400_Gain11_A0 3.228465f
+#define HPF_Fs176400_Gain11_A1 (-2.977561f)
+#define HPF_Fs176400_Gain11_A2 0.000000f
+#define HPF_Fs176400_Gain11_B1 (-0.749096f)
+#define HPF_Fs176400_Gain11_B2 0.000000f
+/* Gain = 12.000000 dB */
+#define HPF_Fs176400_Gain12_A0 3.607090f
+#define HPF_Fs176400_Gain12_A1 (-3.356186f)
+#define HPF_Fs176400_Gain12_A2 0.000000f
+#define HPF_Fs176400_Gain12_B1 (-0.749096f)
+#define HPF_Fs176400_Gain12_B2 0.000000f
+/* Gain = 13.000000 dB */
+#define HPF_Fs176400_Gain13_A0 4.031914f
+#define HPF_Fs176400_Gain13_A1 (-3.781010f)
+#define HPF_Fs176400_Gain13_A2 0.000000f
+#define HPF_Fs176400_Gain13_B1 (-0.749096f)
+#define HPF_Fs176400_Gain13_B2 0.000000f
+/* Gain = 14.000000 dB */
+#define HPF_Fs176400_Gain14_A0 4.508575f
+#define HPF_Fs176400_Gain14_A1 (-4.257671f)
+#define HPF_Fs176400_Gain14_A2 0.000000f
+#define HPF_Fs176400_Gain14_B1 (-0.749096f)
+#define HPF_Fs176400_Gain14_B2 0.000000f
+/* Gain = 15.000000 dB */
+#define HPF_Fs176400_Gain15_A0 5.043397f
+#define HPF_Fs176400_Gain15_A1 (-4.792493f)
+#define HPF_Fs176400_Gain15_A2 0.000000f
+#define HPF_Fs176400_Gain15_B1 (-0.749096f)
+#define HPF_Fs176400_Gain15_B2 0.000000f
+
/* Coefficients for sample rate 192000Hz */
/* Gain = 1.000000 dB */
#define HPF_Fs192000_Gain1_A0 1.107823
@@ -1216,4 +1399,4 @@
#endif
-#endif
\ No newline at end of file
+#endif
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
index 7b85f23..62b4c73 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Control.c
@@ -71,7 +71,8 @@
((pParams->SampleRate != LVM_FS_8000) && (pParams->SampleRate != LVM_FS_11025) && (pParams->SampleRate != LVM_FS_12000) &&
(pParams->SampleRate != LVM_FS_16000) && (pParams->SampleRate != LVM_FS_22050) && (pParams->SampleRate != LVM_FS_24000) &&
(pParams->SampleRate != LVM_FS_32000) && (pParams->SampleRate != LVM_FS_44100) && (pParams->SampleRate != LVM_FS_48000) &&
- (pParams->SampleRate != LVM_FS_96000) && (pParams->SampleRate != LVM_FS_192000)) ||
+ (pParams->SampleRate != LVM_FS_88200) && (pParams->SampleRate != LVM_FS_96000) &&
+ (pParams->SampleRate != LVM_FS_176400) && (pParams->SampleRate != LVM_FS_192000)) ||
#else
((pParams->SampleRate != LVM_FS_8000) && (pParams->SampleRate != LVM_FS_11025) && (pParams->SampleRate != LVM_FS_12000) &&
(pParams->SampleRate != LVM_FS_16000) && (pParams->SampleRate != LVM_FS_22050) && (pParams->SampleRate != LVM_FS_24000) &&
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
index ade329b..0669a81 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Init.c
@@ -233,7 +233,13 @@
* Set the capabilities
*/
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
- DBE_Capabilities.SampleRate = LVDBE_CAP_FS_8000 | LVDBE_CAP_FS_11025 | LVDBE_CAP_FS_12000 | LVDBE_CAP_FS_16000 | LVDBE_CAP_FS_22050 | LVDBE_CAP_FS_24000 | LVDBE_CAP_FS_32000 | LVDBE_CAP_FS_44100 | LVDBE_CAP_FS_48000 | LVDBE_CAP_FS_96000 | LVDBE_CAP_FS_192000;
+ DBE_Capabilities.SampleRate = LVDBE_CAP_FS_8000 | LVDBE_CAP_FS_11025 |
+ LVDBE_CAP_FS_12000 | LVDBE_CAP_FS_16000 |
+ LVDBE_CAP_FS_22050 | LVDBE_CAP_FS_24000 |
+ LVDBE_CAP_FS_32000 | LVDBE_CAP_FS_44100 |
+ LVDBE_CAP_FS_48000 | LVDBE_CAP_FS_88200 |
+ LVDBE_CAP_FS_96000 | LVDBE_CAP_FS_176400 |
+ LVDBE_CAP_FS_192000;
#else
DBE_Capabilities.SampleRate = LVDBE_CAP_FS_8000 | LVDBE_CAP_FS_11025 | LVDBE_CAP_FS_12000 | LVDBE_CAP_FS_16000 | LVDBE_CAP_FS_22050 | LVDBE_CAP_FS_24000 | LVDBE_CAP_FS_32000 | LVDBE_CAP_FS_44100 | LVDBE_CAP_FS_48000;
#endif
@@ -270,7 +276,13 @@
* Set the capabilities
*/
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
- EQNB_Capabilities.SampleRate = LVEQNB_CAP_FS_8000 | LVEQNB_CAP_FS_11025 | LVEQNB_CAP_FS_12000 | LVEQNB_CAP_FS_16000 | LVEQNB_CAP_FS_22050 | LVEQNB_CAP_FS_24000 | LVEQNB_CAP_FS_32000 | LVEQNB_CAP_FS_44100 | LVEQNB_CAP_FS_48000 | LVEQNB_CAP_FS_96000 | LVEQNB_CAP_FS_192000;
+ EQNB_Capabilities.SampleRate = LVEQNB_CAP_FS_8000 | LVEQNB_CAP_FS_11025 |
+ LVEQNB_CAP_FS_12000 | LVEQNB_CAP_FS_16000 |
+ LVEQNB_CAP_FS_22050 | LVEQNB_CAP_FS_24000 |
+ LVEQNB_CAP_FS_32000 | LVEQNB_CAP_FS_44100 |
+ LVEQNB_CAP_FS_48000 | LVEQNB_CAP_FS_88200 |
+ LVEQNB_CAP_FS_96000 | LVEQNB_CAP_FS_176400 |
+ LVEQNB_CAP_FS_192000;
#else
EQNB_Capabilities.SampleRate = LVEQNB_CAP_FS_8000 | LVEQNB_CAP_FS_11025 | LVEQNB_CAP_FS_12000 | LVEQNB_CAP_FS_16000 | LVEQNB_CAP_FS_22050 | LVEQNB_CAP_FS_24000 | LVEQNB_CAP_FS_32000 | LVEQNB_CAP_FS_44100 | LVEQNB_CAP_FS_48000;
#endif
@@ -747,7 +759,13 @@
* Set the initialisation capabilities
*/
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
- DBE_Capabilities.SampleRate = LVDBE_CAP_FS_8000 | LVDBE_CAP_FS_11025 | LVDBE_CAP_FS_12000 | LVDBE_CAP_FS_16000 | LVDBE_CAP_FS_22050 | LVDBE_CAP_FS_24000 | LVDBE_CAP_FS_32000 | LVDBE_CAP_FS_44100 | LVDBE_CAP_FS_48000 | LVDBE_CAP_FS_96000 | LVDBE_CAP_FS_192000;
+ DBE_Capabilities.SampleRate = LVDBE_CAP_FS_8000 | LVDBE_CAP_FS_11025 |
+ LVDBE_CAP_FS_12000 | LVDBE_CAP_FS_16000 |
+ LVDBE_CAP_FS_22050 | LVDBE_CAP_FS_24000 |
+ LVDBE_CAP_FS_32000 | LVDBE_CAP_FS_44100 |
+ LVDBE_CAP_FS_48000 | LVDBE_CAP_FS_88200 |
+ LVDBE_CAP_FS_96000 | LVDBE_CAP_FS_176400 |
+ LVDBE_CAP_FS_192000;
#else
DBE_Capabilities.SampleRate = LVDBE_CAP_FS_8000 | LVDBE_CAP_FS_11025 | LVDBE_CAP_FS_12000 | LVDBE_CAP_FS_16000 | LVDBE_CAP_FS_22050 | LVDBE_CAP_FS_24000 | LVDBE_CAP_FS_32000 | LVDBE_CAP_FS_44100 | LVDBE_CAP_FS_48000;
#endif
@@ -805,7 +823,13 @@
* Set the initialisation capabilities
*/
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
- EQNB_Capabilities.SampleRate = LVEQNB_CAP_FS_8000 | LVEQNB_CAP_FS_11025 | LVEQNB_CAP_FS_12000 | LVEQNB_CAP_FS_16000 | LVEQNB_CAP_FS_22050 | LVEQNB_CAP_FS_24000 | LVEQNB_CAP_FS_32000 | LVEQNB_CAP_FS_44100 | LVEQNB_CAP_FS_48000 | LVEQNB_CAP_FS_96000 | LVEQNB_CAP_FS_192000;
+ EQNB_Capabilities.SampleRate = LVEQNB_CAP_FS_8000 | LVEQNB_CAP_FS_11025 |
+ LVEQNB_CAP_FS_12000 | LVEQNB_CAP_FS_16000 |
+ LVEQNB_CAP_FS_22050 | LVEQNB_CAP_FS_24000 |
+ LVEQNB_CAP_FS_32000 | LVEQNB_CAP_FS_44100 |
+ LVEQNB_CAP_FS_48000 | LVEQNB_CAP_FS_88200 |
+ LVEQNB_CAP_FS_96000 | LVEQNB_CAP_FS_176400 |
+ LVEQNB_CAP_FS_192000;
#else
EQNB_Capabilities.SampleRate = LVEQNB_CAP_FS_8000 | LVEQNB_CAP_FS_11025 | LVEQNB_CAP_FS_12000 | LVEQNB_CAP_FS_16000 | LVEQNB_CAP_FS_22050 | LVEQNB_CAP_FS_24000 | LVEQNB_CAP_FS_32000 | LVEQNB_CAP_FS_44100 | LVEQNB_CAP_FS_48000;
#endif
diff --git a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
index 199ddde..a5356d2 100644
--- a/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
+++ b/media/libeffects/lvm/lib/Bundle/src/LVM_Tables.c
@@ -269,6 +269,53 @@
-HPF_Fs48000_Gain15_B1}
#ifdef HIGHER_FS
,
+ /* 88kHz Sampling rate */
+ {HPF_Fs88200_Gain1_A1, /* Gain Setting 1 */
+ HPF_Fs88200_Gain1_A0,
+ -HPF_Fs88200_Gain1_B1},
+ {HPF_Fs88200_Gain2_A1, /* Gain Setting 2 */
+ HPF_Fs88200_Gain2_A0,
+ -HPF_Fs88200_Gain2_B1},
+ {HPF_Fs88200_Gain3_A1, /* Gain Setting 3 */
+ HPF_Fs88200_Gain3_A0,
+ -HPF_Fs88200_Gain3_B1},
+ {HPF_Fs88200_Gain4_A1, /* Gain Setting 4 */
+ HPF_Fs88200_Gain4_A0,
+ -HPF_Fs88200_Gain4_B1},
+ {HPF_Fs88200_Gain5_A1, /* Gain Setting 5 */
+ HPF_Fs88200_Gain5_A0,
+ -HPF_Fs88200_Gain5_B1},
+ {HPF_Fs88200_Gain6_A1, /* Gain Setting 6 */
+ HPF_Fs88200_Gain6_A0,
+ -HPF_Fs88200_Gain6_B1},
+ {HPF_Fs88200_Gain7_A1, /* Gain Setting 7 */
+ HPF_Fs88200_Gain7_A0,
+ -HPF_Fs88200_Gain7_B1},
+ {HPF_Fs88200_Gain8_A1, /* Gain Setting 8 */
+ HPF_Fs88200_Gain8_A0,
+ -HPF_Fs88200_Gain8_B1},
+ {HPF_Fs88200_Gain9_A1, /* Gain Setting 9 */
+ HPF_Fs88200_Gain9_A0,
+ -HPF_Fs88200_Gain9_B1},
+ {HPF_Fs88200_Gain10_A1, /* Gain Setting 10 */
+ HPF_Fs88200_Gain10_A0,
+ -HPF_Fs88200_Gain10_B1},
+ {HPF_Fs88200_Gain11_A1, /* Gain Setting 11 */
+ HPF_Fs88200_Gain11_A0,
+ -HPF_Fs88200_Gain11_B1},
+ {HPF_Fs88200_Gain12_A1, /* Gain Setting 12 */
+ HPF_Fs88200_Gain12_A0,
+ -HPF_Fs88200_Gain12_B1},
+ {HPF_Fs88200_Gain13_A1, /* Gain Setting 13 */
+ HPF_Fs88200_Gain13_A0,
+ -HPF_Fs88200_Gain13_B1},
+ {HPF_Fs88200_Gain14_A1, /* Gain Setting 14 */
+ HPF_Fs88200_Gain14_A0,
+ -HPF_Fs88200_Gain14_B1},
+ {HPF_Fs88200_Gain15_A1, /* Gain Setting 15 */
+ HPF_Fs88200_Gain15_A0,
+ -HPF_Fs88200_Gain15_B1},
+
/* 96kHz sampling rate */
{HPF_Fs96000_Gain1_A1, /* Gain setting 1 */
HPF_Fs96000_Gain1_A0,
@@ -316,6 +363,53 @@
HPF_Fs96000_Gain15_A0,
-HPF_Fs96000_Gain15_B1},
+ /* 176kHz Sampling rate */
+ {HPF_Fs176400_Gain1_A1, /* Gain Setting 1 */
+ HPF_Fs176400_Gain1_A0,
+ -HPF_Fs176400_Gain1_B1},
+ {HPF_Fs176400_Gain2_A1, /* Gain Setting 2 */
+ HPF_Fs176400_Gain2_A0,
+ -HPF_Fs176400_Gain2_B1},
+ {HPF_Fs176400_Gain3_A1, /* Gain Setting 3 */
+ HPF_Fs176400_Gain3_A0,
+ -HPF_Fs176400_Gain3_B1},
+ {HPF_Fs176400_Gain4_A1, /* Gain Setting 4 */
+ HPF_Fs176400_Gain4_A0,
+ -HPF_Fs176400_Gain4_B1},
+ {HPF_Fs176400_Gain5_A1, /* Gain Setting 5 */
+ HPF_Fs176400_Gain5_A0,
+ -HPF_Fs176400_Gain5_B1},
+ {HPF_Fs176400_Gain6_A1, /* Gain Setting 6 */
+ HPF_Fs176400_Gain6_A0,
+ -HPF_Fs176400_Gain6_B1},
+ {HPF_Fs176400_Gain7_A1, /* Gain Setting 7 */
+ HPF_Fs176400_Gain7_A0,
+ -HPF_Fs176400_Gain7_B1},
+ {HPF_Fs176400_Gain8_A1, /* Gain Setting 8 */
+ HPF_Fs176400_Gain8_A0,
+ -HPF_Fs176400_Gain8_B1},
+ {HPF_Fs176400_Gain9_A1, /* Gain Setting 9 */
+ HPF_Fs176400_Gain9_A0,
+ -HPF_Fs176400_Gain9_B1},
+ {HPF_Fs176400_Gain10_A1, /* Gain Setting 10 */
+ HPF_Fs176400_Gain10_A0,
+ -HPF_Fs176400_Gain10_B1},
+ {HPF_Fs176400_Gain11_A1, /* Gain Setting 11 */
+ HPF_Fs176400_Gain11_A0,
+ -HPF_Fs176400_Gain11_B1},
+ {HPF_Fs176400_Gain12_A1, /* Gain Setting 12 */
+ HPF_Fs176400_Gain12_A0,
+ -HPF_Fs176400_Gain12_B1},
+ {HPF_Fs176400_Gain13_A1, /* Gain Setting 13 */
+ HPF_Fs176400_Gain13_A0,
+ -HPF_Fs176400_Gain13_B1},
+ {HPF_Fs176400_Gain14_A1, /* Gain Setting 14 */
+ HPF_Fs176400_Gain14_A0,
+ -HPF_Fs176400_Gain14_B1},
+ {HPF_Fs176400_Gain15_A1, /* Gain Setting 15 */
+ HPF_Fs176400_Gain15_A0,
+ -HPF_Fs176400_Gain15_B1},
+
/* 192kHz sampling rate */
{HPF_Fs192000_Gain1_A1, /* Gain setting 1 */
HPF_Fs192000_Gain1_A0,
diff --git a/media/libeffects/lvm/lib/Common/lib/LVM_Types.h b/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
index 303b62d..59586e0 100644
--- a/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
+++ b/media/libeffects/lvm/lib/Common/lib/LVM_Types.h
@@ -169,8 +169,10 @@
LVM_FS_44100 = 7,
LVM_FS_48000 = 8,
#ifdef HIGHER_FS
- LVM_FS_96000 = 9,
- LVM_FS_192000 = 10,
+ LVM_FS_88200 = 9,
+ LVM_FS_96000 = 10,
+ LVM_FS_176400 = 11,
+ LVM_FS_192000 = 12,
#endif
LVM_FS_INVALID = LVM_MAXENUM-1,
LVM_FS_DUMMY = LVM_MAXENUM
diff --git a/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h b/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
index e7fdbf6..385dbcf 100644
--- a/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
+++ b/media/libeffects/lvm/lib/Eq/lib/LVEQNB.h
@@ -201,8 +201,10 @@
#define LVEQNB_CAP_FS_44100 128
#define LVEQNB_CAP_FS_48000 256
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
-#define LVEQNB_CAP_FS_96000 512
-#define LVEQNB_CAP_FS_192000 1024
+#define LVEQNB_CAP_FS_88200 512
+#define LVEQNB_CAP_FS_96000 1024
+#define LVEQNB_CAP_FS_176400 2048
+#define LVEQNB_CAP_FS_192000 4096
#endif
typedef enum
@@ -217,8 +219,10 @@
LVEQNB_FS_44100 = 7,
LVEQNB_FS_48000 = 8,
#ifdef HIGHER_FS
- LVEQNB_FS_96000 = 9,
- LVEQNB_FS_192000 = 10,
+ LVEQNB_FS_88200 = 9,
+ LVEQNB_FS_96000 = 10,
+ LVEQNB_FS_176400 = 11,
+ LVEQNB_FS_192000 = 12,
#endif
LVEQNB_FS_MAX = LVM_MAXINT_32
} LVEQNB_Fs_en;
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Coeffs.h b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Coeffs.h
index 42ea46f..755141e 100644
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Coeffs.h
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Coeffs.h
@@ -109,7 +109,9 @@
#define LVEQNB_2PiOn_48000 0.000131f
#ifdef HIGHER_FS
+#define LVEQNB_2PiOn_88200 0.000071f
#define LVEQNB_2PiOn_96000 0.000065f
+#define LVEQNB_2PiOn_176400 0.000036f
#define LVEQNB_2PiOn_192000 0.000033f
#endif
diff --git a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
index 563181c..453c42d 100644
--- a/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
+++ b/media/libeffects/lvm/lib/Eq/src/LVEQNB_Tables.c
@@ -46,7 +46,9 @@
32000,
44100,
48000,
+ 88200,
96000,
+ 176400,
192000
};
#else
@@ -82,7 +84,9 @@
LVEQNB_2PiOn_44100,
LVEQNB_2PiOn_48000
#ifdef HIGHER_FS
+ ,LVEQNB_2PiOn_88200
,LVEQNB_2PiOn_96000
+ ,LVEQNB_2PiOn_176400
,LVEQNB_2PiOn_192000
#endif
};
@@ -249,30 +253,4 @@
16586, /* a2 */
-44}; /* a3 */
-/************************************************************************************/
-/* */
-/* Bypass mixer time constants (100ms) */
-/* */
-/************************************************************************************/
-#define LVEQNB_MIX_TC_Fs8000 32580 /* Floating point value 0.994262695 */
-#define LVEQNB_MIX_TC_Fs11025 32632 /* Floating point value 0.995849609 */
-#define LVEQNB_MIX_TC_Fs12000 32643 /* Floating point value 0.996185303 */
-#define LVEQNB_MIX_TC_Fs16000 32674 /* Floating point value 0.997131348 */
-#define LVEQNB_MIX_TC_Fs22050 32700 /* Floating point value 0.997924805 */
-#define LVEQNB_MIX_TC_Fs24000 32705 /* Floating point value 0.998077393 */
-#define LVEQNB_MIX_TC_Fs32000 32721 /* Floating point value 0.998565674 */
-#define LVEQNB_MIX_TC_Fs44100 32734 /* Floating point value 0.998962402 */
-#define LVEQNB_MIX_TC_Fs48000 32737 /* Floating point value 0.999053955 */
-
-
-const LVM_INT16 LVEQNB_MixerTCTable[] = {
- LVEQNB_MIX_TC_Fs8000,
- LVEQNB_MIX_TC_Fs11025,
- LVEQNB_MIX_TC_Fs12000,
- LVEQNB_MIX_TC_Fs16000,
- LVEQNB_MIX_TC_Fs22050,
- LVEQNB_MIX_TC_Fs24000,
- LVEQNB_MIX_TC_Fs32000,
- LVEQNB_MIX_TC_Fs44100,
- LVEQNB_MIX_TC_Fs48000};
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h b/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
index ff7475e..c915ac0 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Private.h
@@ -123,7 +123,7 @@
#ifndef HIGHER_FS
#define LVREV_NUM_FS 9 /* Number of supported sample rates */
#else
-#define LVREV_NUM_FS 11 /* Number of supported sample rates */
+#define LVREV_NUM_FS 13 /* Number of supported sample rates */
#endif
#define LVREV_MAXBLKSIZE_LIMIT 64 /* Maximum block size low limit */
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
index 8c7807f..dfed28e 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_SetControlParameters.c
@@ -68,7 +68,8 @@
(pNewParams->SampleRate != LVM_FS_44100) &&
(pNewParams->SampleRate != LVM_FS_48000)
#ifdef HIGHER_FS
- && (pNewParams->SampleRate != LVM_FS_96000) && (pNewParams->SampleRate != LVM_FS_192000)
+ && (pNewParams->SampleRate != LVM_FS_88200) && (pNewParams->SampleRate != LVM_FS_96000)
+ && (pNewParams->SampleRate != LVM_FS_176400) && (pNewParams->SampleRate != LVM_FS_192000)
#endif
)
#ifdef SUPPORT_MC
diff --git a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
index b3edc60..1058740 100644
--- a/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
+++ b/media/libeffects/lvm/lib/Reverb/src/LVREV_Tables.c
@@ -52,7 +52,9 @@
32000,
44100,
48000,
+ 88200,
96000,
+ 176400,
192000
};
#endif
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
index a750bb0..ee07e2e 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Private.h
@@ -46,7 +46,7 @@
#ifndef HIGHER_FS
#define LVPSA_NR_SUPPORTED_RATE 9 /* From 8000Hz to 48000Hz*/
#else
-#define LVPSA_NR_SUPPORTED_RATE 11 /* From 8000Hz to 192000Hz*/
+#define LVPSA_NR_SUPPORTED_RATE 13 /* From 8000Hz to 192000Hz*/
#endif
#define LVPSA_NR_SUPPORTED_SPEED 3 /* LOW, MEDIUM, HIGH */
diff --git a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
index 1287503..f8af496 100644
--- a/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
+++ b/media/libeffects/lvm/lib/SpectrumAnalyzer/src/LVPSA_Tables.c
@@ -54,7 +54,9 @@
32000,
44100,
48000,
+ 88200,
96000,
+ 176400,
192000}; /* 192kS/s */
#endif
@@ -78,7 +80,9 @@
48696,
44739
#ifdef HIGHER_FS
+ ,24348
,22369
+ ,12174
,11185 /* 192kS/s */
#endif
};
@@ -105,7 +109,9 @@
882,
960
#ifdef HIGHER_FS
+ ,1764
,1920
+ ,3528
,3840 /* 192kS/s */
#endif
};
@@ -128,7 +134,9 @@
30, /* 44100 S/s */
32 /* 48000 S/s */
#ifdef HIGHER_FS
+ ,60 /* 88200 S/s */
,64 /* 96000 S/s */
+ ,120 /* 176400 S/s */
,128 /*192000 S/s */
#endif
};
@@ -153,7 +161,9 @@
4781,
4392
#ifdef HIGHER_FS
+ ,2390
,2196
+ ,1195
,1098 /* 192kS/s */
#endif
};
@@ -169,7 +179,9 @@
0.1459089f,
0.1340372f
#ifdef HIGHER_FS
+ ,0.0729476f
,0.0670186f
+ ,0.0364738f
,0.0335093f /* 192kS/s */
#endif
};
@@ -352,7 +364,9 @@
/* 48kS/s */
{-0.9932638457976282f,0.0066249934025109f},
#ifdef HIGHER_FS
+ {-0.9931269618682563f,0.0067592649720609f},
{-0.9932638457976282f,0.0066249934025109f},
+ {-0.9931269618682563f,0.0067592649720609f},
{-0.9932638457976282f,0.0066249934025109f},
#endif
/* 8kS/s */ /* LVPSA_SPEED_MEDIUM */
@@ -368,7 +382,9 @@
/* 48kS/s */
{-0.9540119562298059f,0.0445343819446862f},
#ifdef HIGHER_FS
+ {-0.9531011912040412f,0.0453995238058269f},
{-0.9540119562298059f,0.0445343819446862f},
+ {-0.9531011912040412f,0.0453995238058269f},
{-0.9540119562298059f,0.0445343819446862f},
#endif
/* 8kS/s */ /* LVPSA_SPEED_HIGH */
@@ -383,7 +399,9 @@
/* 48kS/s */
{-0.7274807319045067f,0.2356666540727019f}
#ifdef HIGHER_FS
+ ,{-0.7229706319049001f,0.2388987224549055f}
,{-0.7274807319045067f,0.2356666540727019f}
+ ,{-0.7229706319049001f,0.2388987224549055f}
,{-0.7274807319045067f,0.2356666540727019f}
#endif
};
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Headphone_Coeffs.h b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Headphone_Coeffs.h
index 0c2fe53..277d95c 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Headphone_Coeffs.h
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Headphone_Coeffs.h
@@ -152,6 +152,24 @@
#define CS_SIDE_48000_SCALE 14
#ifdef HIGHER_FS
+/* Coefficients for 88200Hz sample rate.
+ * The filter coefficients are obtained by carrying out
+ * state-space analysis using the coefficients available
+ * for 44100Hz.
+ */
+#define CS_MIDDLE_88200_A0 0.233846f
+#define CS_MIDDLE_88200_A1 (-0.232657f)
+#define CS_MIDDLE_88200_A2 0.000000f
+#define CS_MIDDLE_88200_B1 (-0.992747f)
+#define CS_MIDDLE_88200_B2 0.000000f
+#define CS_MIDDLE_88200_SCALE 15
+#define CS_SIDE_88200_A0 0.231541f
+#define CS_SIDE_88200_A1 (-0.289586f)
+#define CS_SIDE_88200_A2 0.058045f
+#define CS_SIDE_88200_B1 (-1.765300f)
+#define CS_SIDE_88200_B2 0.769816f
+#define CS_SIDE_88200_SCALE 14
+
/* Stereo Enhancer coefficients for 96000Hz sample rate, scaled with 0.165*/
/* high pass filter with cutoff frequency 102.18 Hz*/
#define CS_MIDDLE_96000_A0 0.235532
@@ -168,6 +186,24 @@
#define CS_SIDE_96000_B2 0.797236
#define CS_SIDE_96000_SCALE 14
+/* Stereo Enhancer coefficients for 176400Hz sample rate.
+ * The filter coefficients are obtained by carrying out
+ * state-space analysis using the coefficients available
+ * for 44100Hz.
+ */
+#define CS_MIDDLE_176400_A0 0.233973f
+#define CS_MIDDLE_176400_A1 (-0.233378f)
+#define CS_MIDDLE_176400_A2 0.000000f
+#define CS_MIDDLE_176400_B1 (-0.996367f)
+#define CS_MIDDLE_176400_B2 0.000000f
+#define CS_MIDDLE_176400_SCALE 15
+#define CS_SIDE_176400_A0 0.199836f
+#define CS_SIDE_176400_A1 (-0.307544f)
+#define CS_SIDE_176400_A2 0.107708f
+#define CS_SIDE_176400_B1 (-1.876572f)
+#define CS_SIDE_176400_B2 0.877771f
+#define CS_SIDE_176400_SCALE 14
+
/* Stereo Enhancer coefficients for 192000Hz sample rate, scaled with 0.1689*/
#define CS_MIDDLE_192000_A0 0.241219
#define CS_MIDDLE_192000_A1 (-0.240656)
@@ -199,7 +235,13 @@
#define LVCS_STEREODELAY_CS_24KHZ 279 /* Sample rate 24kS/s */
#define LVCS_STEREODELAY_CS_32KHZ 372 /* Sample rate 32kS/s */
#define LVCS_STEREODELAY_CS_44KHZ 512 /* Sample rate 44kS/s */
+// TODO: this should linearly scale by frequency but is limited to 512 frames until
+// we ensure enough buffer size has been allocated.
#define LVCS_STEREODELAY_CS_48KHZ 512 /* Sample rate 48kS/s */
+#define LVCS_STEREODELAY_CS_88KHZ 512 /* Sample rate 88.2kS/s */
+#define LVCS_STEREODELAY_CS_96KHZ 512 /* Sample rate 96kS/s */
+#define LVCS_STEREODELAY_CS_176KHZ 512 /* Sample rate 176.4kS/s */
+#define LVCS_STEREODELAY_CS_192KHZ 512 /* Sample rate 196kS/s */
/* Reverb coefficients for 8000 Hz sample rate, scaled with 1.038030 */
#define CS_REVERB_8000_A0 0.667271
@@ -275,6 +317,14 @@
#define CS_REVERB_48000_SCALE 14
#ifdef HIGHER_FS
+/* Reverb coefficients for 88200Hz sample rate, scaled with 0.8 */
+/* Band pass filter with fc1=500 and fc2=8000 */
+#define CS_REVERB_88200_A0 0.171901f
+#define CS_REVERB_88200_A1 0.000000f
+#define CS_REVERB_88200_A2 (-0.171901f)
+#define CS_REVERB_88200_B1 (-1.553948f)
+#define CS_REVERB_88200_B2 (0.570248f)
+#define CS_REVERB_88200_SCALE 14
/* Reverb coefficients for 96000Hz sample rate, scaled with 0.8 */
/* Band pass filter with fc1=500 and fc2=8000*/
#define CS_REVERB_96000_A0 0.1602488
@@ -284,6 +334,14 @@
#define CS_REVERB_96000_B2 0.599377
#define CS_REVERB_96000_SCALE 14
+/* Reverb coefficients for 176400Hz sample rate, scaled with 0.8 */
+/* Band pass filter with fc1=500 and fc2=8000 */
+#define CS_REVERB_176400_A0 0.094763f
+#define CS_REVERB_176400_A1 0.000000f
+#define CS_REVERB_176400_A2 (-0.094763f)
+#define CS_REVERB_176400_B1 (-1.758593f)
+#define CS_REVERB_176400_B2 (0.763091f)
+#define CS_REVERB_176400_SCALE 14
/* Reverb coefficients for 192000Hz sample rate, scaled with 0.8 */
/* Band pass filter with fc1=500 and fc2=8000*/
#define CS_REVERB_192000_A0 0.0878369
@@ -446,6 +504,24 @@
#ifdef HIGHER_FS
+/* Equaliser coefficients for 88200Hz sample rate.
+ * The filter coefficients are obtained by carrying out
+ * state-space analysis using the coefficients available
+ * for 44100Hz.
+ */
+#define CS_EQUALISER_88200_A0 1.771899f
+#define CS_EQUALISER_88200_A1 (-2.930762f)
+#define CS_EQUALISER_88200_A2 1.172175f
+#define CS_EQUALISER_88200_B1 (-1.438349f)
+#define CS_EQUALISER_88200_B2 0.442520f
+#define CS_EQUALISER_88200_SCALE 13
+#define CSEX_EQUALISER_88200_A0 2.675241f
+#define CSEX_EQUALISER_88200_A1 (-4.466154f)
+#define CSEX_EQUALISER_88200_A2 1.810305f
+#define CSEX_EQUALISER_88200_B1 (-0.925350f)
+#define CSEX_EQUALISER_88200_B2 (-0.066616f)
+#define CSEX_EQUALISER_88200_SCALE 13
+
#define CS_EQUALISER_96000_A0 1.784497
#define CS_EQUALISER_96000_A1 (-3.001435)
#define CS_EQUALISER_96000_A2 1.228422
@@ -458,6 +534,23 @@
#define CSEX_EQUALISER_96000_B1 (-0.971718)
#define CSEX_EQUALISER_96000_B2 (-0.021216)
#define CSEX_EQUALISER_96000_SCALE 13
+/* Equaliser coefficients for 176400Hz sample rate.
+ * The filter coefficients are obtained by carrying out
+ * state-space analysis using the coefficients available
+ * for 44100Hz.
+ */
+#define CS_EQUALISER_176400_A0 1.883440f
+#define CS_EQUALISER_176400_A1 (-3.414272f)
+#define CS_EQUALISER_176400_A2 1.534702f
+#define CS_EQUALISER_176400_B1 (-1.674614f)
+#define CS_EQUALISER_176400_B2 0.675827f
+#define CS_EQUALISER_176400_SCALE 13
+#define CSEX_EQUALISER_176400_A0 3.355068f
+#define CSEX_EQUALISER_176400_A1 (-6.112578f)
+#define CSEX_EQUALISER_176400_A2 2.764135f
+#define CSEX_EQUALISER_176400_B1 (-1.268533f)
+#define CSEX_EQUALISER_176400_B2 0.271277f
+#define CSEX_EQUALISER_176400_SCALE 13
#define CS_EQUALISER_192000_A0 1.889582
#define CS_EQUALISER_192000_A1 (-3.456140)
diff --git a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
index 0765764..a1fb48f 100644
--- a/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
+++ b/media/libeffects/lvm/lib/StereoWidening/src/LVCS_Tables.c
@@ -74,10 +74,18 @@
(LVM_UINT16 )CS_MIDDLE_48000_SCALE}
#ifdef HIGHER_FS
,
+ {CS_MIDDLE_88200_A0, /* 88kS/s coefficients */
+ CS_MIDDLE_88200_A1,
+ CS_MIDDLE_88200_B1,
+ (LVM_UINT16)CS_MIDDLE_88200_SCALE},
{CS_MIDDLE_96000_A0, /* 96kS/s coefficients */
CS_MIDDLE_96000_A1,
CS_MIDDLE_96000_B1,
(LVM_UINT16 )CS_MIDDLE_96000_SCALE},
+ {CS_MIDDLE_176400_A0, /* 176kS/s coefficients */
+ CS_MIDDLE_176400_A1,
+ CS_MIDDLE_176400_B1,
+ (LVM_UINT16)CS_MIDDLE_176400_SCALE},
{CS_MIDDLE_192000_A0, /* 192kS/s coefficients */
CS_MIDDLE_192000_A1,
CS_MIDDLE_192000_B1,
@@ -144,12 +152,24 @@
(LVM_UINT16 )CS_SIDE_48000_SCALE}
#ifdef HIGHER_FS
,
+ {CS_SIDE_88200_A0, /* 88kS/s coefficients */
+ CS_SIDE_88200_A1,
+ CS_SIDE_88200_A2,
+ CS_SIDE_88200_B1,
+ CS_SIDE_88200_B2,
+ (LVM_UINT16)CS_SIDE_88200_SCALE},
{CS_SIDE_96000_A0, /* 96kS/s coefficients */
CS_SIDE_96000_A1,
CS_SIDE_96000_A2,
CS_SIDE_96000_B1,
CS_SIDE_96000_B2,
(LVM_UINT16 )CS_SIDE_96000_SCALE},
+ {CS_SIDE_176400_A0, /*176kS/s coefficients */
+ CS_SIDE_176400_A1,
+ CS_SIDE_176400_A2,
+ CS_SIDE_176400_B1,
+ CS_SIDE_176400_B2,
+ (LVM_UINT16)CS_SIDE_176400_SCALE},
{CS_SIDE_192000_A0, /* 192kS/s coefficients */
CS_SIDE_192000_A1,
CS_SIDE_192000_A2,
@@ -223,12 +243,24 @@
CS_EQUALISER_48000_B2,
(LVM_UINT16 )CS_EQUALISER_48000_SCALE},
#ifdef HIGHER_FS
+ {CS_EQUALISER_88200_A0, /* 88kS/s coeffieients */
+ CS_EQUALISER_88200_A1,
+ CS_EQUALISER_88200_A2,
+ CS_EQUALISER_88200_B1,
+ CS_EQUALISER_88200_B2,
+ (LVM_UINT16)CS_EQUALISER_88200_SCALE},
{CS_EQUALISER_96000_A0, /* 96kS/s coefficients */
CS_EQUALISER_96000_A1,
CS_EQUALISER_96000_A2,
CS_EQUALISER_96000_B1,
CS_EQUALISER_96000_B2,
(LVM_UINT16 )CS_EQUALISER_96000_SCALE},
+ {CS_EQUALISER_176400_A0, /* 176kS/s coefficients */
+ CS_EQUALISER_176400_A1,
+ CS_EQUALISER_176400_A2,
+ CS_EQUALISER_176400_B1,
+ CS_EQUALISER_176400_B2,
+ (LVM_UINT16)CS_EQUALISER_176400_SCALE},
{CS_EQUALISER_192000_A0, /* 192kS/s coefficients */
CS_EQUALISER_192000_A1,
CS_EQUALISER_192000_A2,
@@ -294,12 +326,24 @@
(LVM_UINT16 )CSEX_EQUALISER_48000_SCALE}
#ifdef HIGHER_FS
,
+ {CSEX_EQUALISER_88200_A0, /* 88kS/s coefficients */
+ CSEX_EQUALISER_88200_A1,
+ CSEX_EQUALISER_88200_A2,
+ CSEX_EQUALISER_88200_B1,
+ CSEX_EQUALISER_88200_B2,
+ (LVM_UINT16)CSEX_EQUALISER_88200_SCALE},
{CSEX_EQUALISER_96000_A0, /* 96kS/s coefficients */
CSEX_EQUALISER_96000_A1,
CSEX_EQUALISER_96000_A2,
CSEX_EQUALISER_96000_B1,
CSEX_EQUALISER_96000_B2,
(LVM_UINT16 )CSEX_EQUALISER_96000_SCALE},
+ {CSEX_EQUALISER_176400_A0, /* 176kS/s coefficients */
+ CSEX_EQUALISER_176400_A1,
+ CSEX_EQUALISER_176400_A2,
+ CSEX_EQUALISER_176400_B1,
+ CSEX_EQUALISER_176400_B2,
+ (LVM_UINT16)CSEX_EQUALISER_176400_SCALE},
{CSEX_EQUALISER_192000_A0, /* 192kS/s coefficients */
CSEX_EQUALISER_192000_A1,
CSEX_EQUALISER_192000_A2,
@@ -326,7 +370,12 @@
LVCS_STEREODELAY_CS_24KHZ,
LVCS_STEREODELAY_CS_32KHZ,
LVCS_STEREODELAY_CS_44KHZ,
- LVCS_STEREODELAY_CS_48KHZ};
+ LVCS_STEREODELAY_CS_48KHZ,
+ LVCS_STEREODELAY_CS_88KHZ,
+ LVCS_STEREODELAY_CS_96KHZ,
+ LVCS_STEREODELAY_CS_176KHZ,
+ LVCS_STEREODELAY_CS_192KHZ,
+};
/************************************************************************************/
/* */
@@ -392,12 +441,24 @@
(LVM_UINT16 )CS_REVERB_48000_SCALE}
#ifdef HIGHER_FS
,
+ {CS_REVERB_88200_A0, /* 88kS/s coefficients */
+ CS_REVERB_88200_A1,
+ CS_REVERB_88200_A2,
+ CS_REVERB_88200_B1,
+ CS_REVERB_88200_B2,
+ (LVM_UINT16)CS_REVERB_88200_SCALE},
{CS_REVERB_96000_A0, /* 96kS/s coefficients */
CS_REVERB_96000_A1,
CS_REVERB_96000_A2,
CS_REVERB_96000_B1,
CS_REVERB_96000_B2,
(LVM_UINT16 )CS_REVERB_96000_SCALE},
+ {CS_REVERB_176400_A0, /* 176kS/s coefficients */
+ CS_REVERB_176400_A1,
+ CS_REVERB_176400_A2,
+ CS_REVERB_176400_B1,
+ CS_REVERB_176400_B2,
+ (LVM_UINT16)CS_REVERB_176400_SCALE},
{CS_REVERB_192000_A0, /* 192kS/s coefficients */
CS_REVERB_192000_A1,
CS_REVERB_192000_A2,
@@ -509,12 +570,14 @@
#define LVCS_VOL_TC_Fs44100 32734 /* Floating point value 0.998962402 */
#define LVCS_VOL_TC_Fs48000 32737 /* Floating point value 0.999053955 */
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
+#define LVCS_VOL_TC_Fs88200 32751 /* Floating point value 0.999481066 */
#define LVCS_VOL_TC_Fs96000 32751 /* Floating point value 0.999511703 */ /* Todo @ need to re check this value*/
+#define LVCS_VOL_TC_Fs176400 32759 /* Floating point value 0.999740499 */
#define LVCS_VOL_TC_Fs192000 32763 /* Floating point value 0.999877925 */ /* Todo @ need to re check this value*/
#endif
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
-const LVM_INT16 LVCS_VolumeTCTable[11] = {LVCS_VOL_TC_Fs8000,
+const LVM_INT16 LVCS_VolumeTCTable[13] = {LVCS_VOL_TC_Fs8000,
LVCS_VOL_TC_Fs11025,
LVCS_VOL_TC_Fs12000,
LVCS_VOL_TC_Fs16000,
@@ -523,7 +586,9 @@
LVCS_VOL_TC_Fs32000,
LVCS_VOL_TC_Fs44100,
LVCS_VOL_TC_Fs48000,
+ LVCS_VOL_TC_Fs88200,
LVCS_VOL_TC_Fs96000,
+ LVCS_VOL_TC_Fs176400,
LVCS_VOL_TC_Fs192000
};
#else
@@ -545,7 +610,7 @@
/* */
/************************************************************************************/
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
-const LVM_INT32 LVCS_SampleRateTable[11] = {8000,
+const LVM_INT32 LVCS_SampleRateTable[13] = {8000,
11025,
12000,
16000,
@@ -554,7 +619,9 @@
32000,
44100,
48000,
+ 88200,
96000,
+ 176400,
192000
};
#else
diff --git a/media/libeffects/lvm/tests/lvmtest.cpp b/media/libeffects/lvm/tests/lvmtest.cpp
index 01c5955..99551cc 100644
--- a/media/libeffects/lvm/tests/lvmtest.cpp
+++ b/media/libeffects/lvm/tests/lvmtest.cpp
@@ -447,19 +447,69 @@
lvmConfigParams_t *plvmConfigParams,
LVM_ControlParams_t *params) {
LVM_ReturnStatus_en LvmStatus = LVM_SUCCESS; /* Function call status */
- LVM_EQNB_BandDef_t BandDefs[MAX_NUM_BANDS]; /* Equaliser band definitions */
- int eqPresetLevel = plvmConfigParams->eqPresetLevel;
- int nrChannels = plvmConfigParams->nrChannels;
- params->NrChannels = nrChannels;
/* Set the initial process parameters */
/* General parameters */
params->OperatingMode = LVM_MODE_ON;
- params->SampleRate = LVM_FS_44100;
- params->SourceFormat = LVM_STEREO;
params->SpeakerType = LVM_HEADPHONES;
- pContext->pBundledContext->SampleRate = LVM_FS_44100;
+ const int nrChannels = plvmConfigParams->nrChannels;
+ params->NrChannels = nrChannels;
+ if (nrChannels == 1) {
+ params->SourceFormat = LVM_MONO;
+ } else if (nrChannels == 2) {
+ params->SourceFormat = LVM_STEREO;
+ } else if (nrChannels > 2 && nrChannels <= 8) { // FCC_2 FCC_8
+ params->SourceFormat = LVM_MULTICHANNEL;
+ } else {
+ return -EINVAL;
+ }
+
+ LVM_Fs_en sampleRate;
+ switch (plvmConfigParams->samplingFreq) {
+ case 8000:
+ sampleRate = LVM_FS_8000;
+ break;
+ case 11025:
+ sampleRate = LVM_FS_11025;
+ break;
+ case 12000:
+ sampleRate = LVM_FS_12000;
+ break;
+ case 16000:
+ sampleRate = LVM_FS_16000;
+ break;
+ case 22050:
+ sampleRate = LVM_FS_22050;
+ break;
+ case 24000:
+ sampleRate = LVM_FS_24000;
+ break;
+ case 32000:
+ sampleRate = LVM_FS_32000;
+ break;
+ case 44100:
+ sampleRate = LVM_FS_44100;
+ break;
+ case 48000:
+ sampleRate = LVM_FS_48000;
+ break;
+ case 88200:
+ sampleRate = LVM_FS_88200;
+ break;
+ case 96000:
+ sampleRate = LVM_FS_96000;
+ break;
+ case 176400:
+ sampleRate = LVM_FS_176400;
+ break;
+ case 192000:
+ sampleRate = LVM_FS_192000;
+ break;
+ default:
+ return -EINVAL;
+ }
+ params->SampleRate = sampleRate;
/* Concert Sound parameters */
params->VirtualizerOperatingMode = plvmConfigParams->csEnable;
@@ -468,14 +518,17 @@
params->CS_EffectLevel = LVM_CS_EFFECT_NONE;
/* N-Band Equaliser parameters */
- params->EQNB_OperatingMode = plvmConfigParams->eqEnable;
- params->pEQNB_BandDefinition = &BandDefs[0];
+ const int eqPresetLevel = plvmConfigParams->eqPresetLevel;
+ LVM_EQNB_BandDef_t BandDefs[MAX_NUM_BANDS]; /* Equaliser band definitions */
for (int i = 0; i < FIVEBAND_NUMBANDS; i++) {
BandDefs[i].Frequency = EQNB_5BandPresetsFrequencies[i];
BandDefs[i].QFactor = EQNB_5BandPresetsQFactors[i];
BandDefs[i].Gain =
EQNB_5BandSoftPresets[(FIVEBAND_NUMBANDS * eqPresetLevel) + i];
}
+ params->EQNB_OperatingMode = plvmConfigParams->eqEnable;
+ // Caution: raw pointer to stack data, stored in instance by LVM_SetControlParameters.
+ params->pEQNB_BandDefinition = &BandDefs[0];
/* Volume Control parameters */
params->VC_EffectLevel = 0;
@@ -490,16 +543,6 @@
/* Bass Enhancement parameters */
params->BE_OperatingMode = plvmConfigParams->bassEnable;
- if (nrChannels == 1) {
- params->SourceFormat = LVM_MONO;
- }
- if (nrChannels == 2) {
- params->SourceFormat = LVM_STEREO;
- }
- if ((nrChannels > 2) && (nrChannels <= 8)) {
- params->SourceFormat = LVM_MULTICHANNEL;
- }
-
/* Activate the initial settings */
LvmStatus =
LVM_SetControlParameters(pContext->pBundledContext->hInstance, params);
@@ -613,7 +656,9 @@
samplingFreq != 12000 && samplingFreq != 16000 &&
samplingFreq != 22050 && samplingFreq != 24000 &&
samplingFreq != 32000 && samplingFreq != 44100 &&
- samplingFreq != 48000 && samplingFreq != 96000) {
+ samplingFreq != 48000 && samplingFreq != 88200 &&
+ samplingFreq != 96000 && samplingFreq != 176400 &&
+ samplingFreq != 192000) {
ALOGE("\nError: Unsupported Sampling Frequency : %d\n", samplingFreq);
return -1;
}
diff --git a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
index 09e9964..b5860de 100644
--- a/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
+++ b/media/libeffects/lvm/wrapper/Bundle/EffectBundle.cpp
@@ -1275,10 +1275,18 @@
pContext->pBundledContext->SamplesPerSecond = 48000 * NrChannels;
break;
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
+ case 88200:
+ SampleRate = LVM_FS_88200;
+ pContext->pBundledContext->SamplesPerSecond = 88200 * NrChannels;
+ break;
case 96000:
SampleRate = LVM_FS_96000;
pContext->pBundledContext->SamplesPerSecond = 96000 * NrChannels;
break;
+ case 176400:
+ SampleRate = LVM_FS_176400;
+ pContext->pBundledContext->SamplesPerSecond = 176400 * NrChannels;
+ break;
case 192000:
SampleRate = LVM_FS_192000;
pContext->pBundledContext->SamplesPerSecond = 192000 * NrChannels;
diff --git a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
index d558169..602f607 100644
--- a/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
+++ b/media/libeffects/lvm/wrapper/Reverb/EffectReverb.cpp
@@ -675,9 +675,15 @@
SampleRate = LVM_FS_48000;
break;
#if defined(BUILD_FLOAT) && defined(HIGHER_FS)
+ case 88200:
+ SampleRate = LVM_FS_88200;
+ break;
case 96000:
SampleRate = LVM_FS_96000;
break;
+ case 176400:
+ SampleRate = LVM_FS_176400;
+ break;
case 192000:
SampleRate = LVM_FS_192000;
break;