Skip to content

File HalfbandDecimator_core.h

File List > doppler > HalfbandDecimator > HalfbandDecimator_core.h

Go to the documentation of this file

#ifndef DP_HALFBANDDECIMATOR_CORE_H
#define DP_HALFBANDDECIMATOR_CORE_H

#include "doppler/hbdecim/hbdecim_core.h"

#ifdef __cplusplus
extern "C"
{
#endif

  typedef hbdecim_state_t dp_HalfbandDecimator_state_t;

/* Maximum output samples per call (pre-allocated by ext.c at init). */
#define HBDECIM_MAX_OUT 32768

  /* ------------------------------------------------------------------ */
  /* Lifecycle                                                           */
  /* ------------------------------------------------------------------ */

  dp_HalfbandDecimator_state_t *dp_HalfbandDecimator_create (const float *h,
                                                       size_t h_len);

  void dp_HalfbandDecimator_destroy (dp_HalfbandDecimator_state_t *state);

  void dp_HalfbandDecimator_reset (dp_HalfbandDecimator_state_t *state);

  size_t dp_HalfbandDecimator_state_bytes (const dp_HalfbandDecimator_state_t *state);
  void dp_HalfbandDecimator_get_state (const dp_HalfbandDecimator_state_t *state,
                                    void *blob);
  int dp_HalfbandDecimator_set_state (dp_HalfbandDecimator_state_t *state,
                                   const void *blob);

  /* ------------------------------------------------------------------ */
  /* Execute                                                             */
  /* ------------------------------------------------------------------ */

  size_t dp_HalfbandDecimator_execute_max_out (dp_HalfbandDecimator_state_t *state);

  size_t dp_HalfbandDecimator_execute (dp_HalfbandDecimator_state_t *state,
                                    const float _Complex *x, size_t x_len,
                                    float _Complex *out, size_t max_out);

  /* ------------------------------------------------------------------ */
  /* Properties                                                          */
  /* ------------------------------------------------------------------ */

  double dp_HalfbandDecimator_get_rate (const dp_HalfbandDecimator_state_t *state);

  size_t
  dp_HalfbandDecimator_get_num_taps (const dp_HalfbandDecimator_state_t *state);

#ifdef __cplusplus
}
#endif

#endif /* HALFBANDDECIMATOR_CORE_H */