summaryrefslogtreecommitdiffstats
path: root/lib/rbcodec/dsp/eq.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/dsp/eq.h')
-rw-r--r--lib/rbcodec/dsp/eq.h38
1 files changed, 15 insertions, 23 deletions
diff --git a/lib/rbcodec/dsp/eq.h b/lib/rbcodec/dsp/eq.h
index a44e9153ac..53097beb12 100644
--- a/lib/rbcodec/dsp/eq.h
+++ b/lib/rbcodec/dsp/eq.h
@@ -18,33 +18,25 @@
* KIND, either express or implied.
*
****************************************************************************/
-
#ifndef _EQ_H
#define _EQ_H
-#include <inttypes.h>
-#include <stdbool.h>
-
-/* These depend on the fixed point formats used by the different filter types
- and need to be changed when they change.
- */
-#define FILTER_BISHELF_SHIFT 5
-#define EQ_PEAK_SHIFT 4
-#define EQ_SHELF_SHIFT 6
+/* => support from 3 to 32 bands, inclusive
+ * Menus and screens must be updated to support changing this from 5
+ * without modifying other stuff (remove comment when this is no longer
+ * true :-) */
+#define EQ_NUM_BANDS 5
-struct eqfilter {
- int32_t coefs[5]; /* Order is b0, b1, b2, a1, a2 */
- int32_t history[2][4];
+struct eq_band_setting
+{
+ int cutoff; /* Hz */
+ int q;
+ int gain; /* +/- dB */
};
-void filter_shelf_coefs(unsigned long cutoff, long A, bool low, int32_t *c);
-void filter_bishelf_coefs(unsigned long cutoff_low, unsigned long cutoff_high,
- long A_low, long A_high, long A, int32_t *c);
-void eq_pk_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c);
-void eq_ls_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c);
-void eq_hs_coefs(unsigned long cutoff, unsigned long Q, long db, int32_t *c);
-void eq_filter(int32_t **x, struct eqfilter *f, unsigned num,
- unsigned channels, unsigned shift);
-
-#endif
+/** DSP interface **/
+void dsp_set_eq_precut(int precut);
+void dsp_set_eq_coefs(int band, const struct eq_band_setting *setting);
+void dsp_eq_enable(bool enable);
+#endif /* _EQ_H */