#ifndef BIQUAD_STANDALONE_H
#define BIQUAD_STANDALONE_H

#include <stdint.h>
#include "xmath/types.h"  // 包含 lib_xcore_math 的类型定义

// 注意：q2_30, left_shift_t, right_shift_t 已在 lib_xcore_math 中定义，不需要重复定义

// 函数声明
void eq_biquad_bypass(q2_30 coeffs[5]);
void eq_biquad_mute(q2_30 coeffs[5]);
left_shift_t eq_biquad_gain(q2_30 coeffs[5], const float gain_db);
void eq_biquad_lowpass(q2_30 coeffs[5], const float fc, const float fs, const float filter_Q);
void eq_biquad_highpass(q2_30 coeffs[5], const float fc, const float fs, const float filter_Q);
void eq_biquad_allpass(q2_30 coeffs[5], const float fc, const float fs, const float filter_Q);
left_shift_t eq_biquad_peaking(q2_30 coeffs[5], const float fc, const float fs, const float filter_Q, const float gain_db);
left_shift_t eq_biquad_lowshelf(q2_30 coeffs[5], const float fc, const float fs, const float filter_Q, const float gain_db);
left_shift_t eq_biquad_highshelf(q2_30 coeffs[5], const float fc, const float fs, const float filter_Q, const float gain_db);

// 辅助函数声明 - 重命名以避免与系统库冲突
static inline int32_t _float2fixed(float x, int32_t q);
static inline int32_t _float2fixed_assert(float x, int32_t q);
static inline float biquad_sin(float x);  // 重命名为 biquad_sin
static inline float biquad_cos(float x);  // 重命名为 biquad_cos

#endif // BIQUAD_STANDALONE_H
