mic_array_conf_struct.h¶
-
struct mic_array_filter_conf_t¶
Configuration for a single decimator stage (e.g., stage 1 or stage 2).
All memory referenced by this structure is owned by the caller. The caller must allocate and initialize all buffers (coefficients and state) and ensure that all pointers remain valid for the entire lifetime of the decimator.
Public Members
-
int32_t *coef¶
Pointer to the filter coefficient array.
This buffer must be aligned to a 32-bit word boundary.
-
int32_t *state¶
Pointer to filter state (delay line) buffer for all microphones in int32_t words.
For multi‑mic use this typically points to a buffer of size
output_mic_count * @ref mic_array_filter_conf_t::num_taps32-bit words.This buffer must be aligned to a 32-bit word boundary.
-
right_shift_t shr¶
Final right-shift applied to the filter’s accumulator prior to output.
See lib_xcore_math xmath/filter.h (filter_fir_s32_t::shift) for details.
-
unsigned num_taps¶
Number of FIR taps in this filter stage.
-
unsigned decimation_factor¶
Decimation ratio (downsampling factor) applied by this filter stage.
-
unsigned state_words_per_channel¶
Per-microphone state buffer size in int32_t words.
Used to index state for each mic: state[mic * state_words_per_channel … ].
-
int32_t *coef¶
-
struct mic_array_decimator_conf_t¶
Configuration for the full decimator pipeline.
Contains an array of stage configurations in execution order.
filter_conf[0] is the first stage (PDM front‑end).
filter_conf[1] is the second stage (PCM FIR decimator).
Public Members
-
mic_array_filter_conf_t *filter_conf¶
Array of filter stage configurations (ordered in filter execution order)
-
unsigned num_filter_stages¶
Number of filter stages in the decimation pipeline.
Specifies the length of
filter_conf. For a typical two-stage decimator, set this to 2 withfilter_conf[0] as stage 1 andfilter_conf[1] as stage 2. Must be >= 1.
-
struct pdm_rx_conf_t¶
Configuration for the PDM RX service.
Public Members
-
uint32_t *pdm_out_block¶
PDM RX output block (input to the decimator) for all microphones.
Packed PDM samples as 32-bit words. The layout is a contiguous buffer sized
output_mic_count * pdm_out_words_per_channel32-bit words, arranged as [output_mic_count][pdm_out_words_per_channel]. In thepdm_out_words_per_channel32-bit words, lower indexed words represent older samples. Within a 32-bit word the less significant bits are older samples. Typically contains enough PDM words to produce one PCM sample per microphone after decimation.This buffer must be aligned to a 32-bit word boundary.
-
uint32_t *pdm_in_double_buf¶
PDM input block (double buffered) for all microphones.
Packed PDM input samples as 32-bit words. The layout is a contiguous buffer of size
2 * input_mic_count * pdm_out_words_per_channel32-bit words, arranged as [2][input_mic_count][pdm_out_words_per_channel]. The buffer is double buffered such that one buffer is processed by the decimator while the other is filled by the PDM RX service.This buffer must be aligned to an 8-byte boundary, as required by the deinterleave functions.
-
const unsigned *channel_map¶
Array mapping
output_mic_countoutputs to input microphone indices.Array dimension must be
output_mic_count. The ith entry gives the input mic index mapped to output mic indexi.
-
unsigned pdm_out_words_per_channel¶
Number of 32-pdm_sample subblocks to be captured for each microphone channel by the PDM RX service.
This is the number of words required to produce one PCM sample at the output of the decimator and is sized depending on the decimator configuration. It is typically equal to the 2nd stage decimation filter’s decimation factor (in case of a 2 stage decimator).
-
uint32_t *pdm_out_block¶
-
struct mic_array_conf_t¶
Top-level configuration passed to mic_array_init_custom_filter().
Bundles the decimator pipeline configuration and the PDM RX configuration. All buffers referenced by pointers inside these sub-configs must be allocated and owned by the caller and must remain valid for the lifetime of the mic array task (until mic_array_start() returns).
Note
When using mic_array_init_custom_filter(), both members must be populated.
Public Members
-
mic_array_decimator_conf_t decimator_conf¶
decimator configuration
-
pdm_rx_conf_t pdmrx_conf¶
PDM RX service configuration