From e0f635b20d989a5083112aa70960cc89e6bc553c Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sat, 15 Dec 2018 03:30:47 -0800 Subject: Move some ambisonic-related macros to a separate header --- Alc/ambidefs.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Alc/ambidefs.h (limited to 'Alc/ambidefs.h') diff --git a/Alc/ambidefs.h b/Alc/ambidefs.h new file mode 100644 index 00000000..124a0c8e --- /dev/null +++ b/Alc/ambidefs.h @@ -0,0 +1,33 @@ +#ifndef AMBIDEFS_H +#define AMBIDEFS_H + +/* The maximum number of Ambisonics coefficients. For a given order (o), the + * size needed will be (o+1)**2, thus zero-order has 1, first-order has 4, + * second-order has 9, third-order has 16, and fourth-order has 25. + */ +#define MAX_AMBI_ORDER 3 +#define MAX_AMBI_COEFFS ((MAX_AMBI_ORDER+1) * (MAX_AMBI_ORDER+1)) + +/* A bitmask of ambisonic channels for 0 to 4th order. This only specifies up + * to 4th order, which is the highest order a 32-bit mask value can specify (a + * 64-bit mask could handle up to 7th order). + */ +#define AMBI_0ORDER_MASK 0x00000001 +#define AMBI_1ORDER_MASK 0x0000000f +#define AMBI_2ORDER_MASK 0x000001ff +#define AMBI_3ORDER_MASK 0x0000ffff +#define AMBI_4ORDER_MASK 0x01ffffff + +/* A bitmask of ambisonic channels with height information. If none of these + * channels are used/needed, there's no height (e.g. with most surround sound + * speaker setups). This is ACN ordering, with bit 0 being ACN 0, etc. + */ +#define AMBI_PERIPHONIC_MASK (0xfe7ce4) + +/* The maximum number of Ambisonic coefficients for 2D (non-periphonic) + * representation. This is 2 per each order above zero-order, plus 1 for zero- + * order. Or simply, o*2 + 1. + */ +#define MAX_AMBI2D_COEFFS (MAX_AMBI_ORDER*2 + 1) + +#endif /* AMBIDEFS_H */ -- cgit v1.2.3