diff --git a/TODO b/TODO index 7313c3a..9ca123c 100644 --- a/TODO +++ b/TODO @@ -70,6 +70,7 @@ code: * are we sure about inlining everything? * reset style is not enough when you have feedbacks... (see reverb) * IMPLEMENTATION/DECL/DEF prepocessor defs, maybe if DECL/DEF is defined then IMPLEMENTATION is needed to get implementation, etc. +* actually assert no buffer overlap build system: * make makefiles handle paths with spaces etc diff --git a/include/bw_balance.h b/include/bw_balance.h index 6024362..b742157 100644 --- a/include/bw_balance.h +++ b/include/bw_balance.h @@ -382,6 +382,7 @@ static inline void bw_balance_process_multi( BW_ASSERT(x_r != NULL); BW_ASSERT(y_l != NULL); BW_ASSERT(y_r != NULL); + BW_ASSERT(y_l != y_r); #ifndef BW_NO_DEBUG for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) { diff --git a/include/bw_env_follow.h b/include/bw_env_follow.h index cf65e7e..d190933 100644 --- a/include/bw_env_follow.h +++ b/include/bw_env_follow.h @@ -516,7 +516,7 @@ static inline void bw_env_follow_process_multi( if (y != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y[i] != y[j]); + BW_ASSERT(y[i] == NULL || y[j] == NULL || y[i] != y[j]); #endif bw_env_follow_update_coeffs_ctrl(coeffs); diff --git a/include/bw_env_gen.h b/include/bw_env_gen.h index 68229e9..5923f9b 100644 --- a/include/bw_env_gen.h +++ b/include/bw_env_gen.h @@ -691,7 +691,7 @@ static inline void bw_env_gen_process_multi( if (y != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y[i] != y[j]); + BW_ASSERT(y[i] == NULL || y[j] == NULL || y[i] != y[j]); #endif bw_env_gen_update_coeffs_ctrl(coeffs); diff --git a/include/bw_one_pole.h b/include/bw_one_pole.h index fae1632..682d5ce 100644 --- a/include/bw_one_pole.h +++ b/include/bw_one_pole.h @@ -894,7 +894,7 @@ static inline void bw_one_pole_process_multi( if (y != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y[i] != y[j]); + BW_ASSERT(y[i] == NULL || y[j] == NULL || y[i] != y[j]); #endif bw_one_pole_update_coeffs_ctrl(coeffs); diff --git a/include/bw_pan.h b/include/bw_pan.h index 52098f7..4aaf4d8 100644 --- a/include/bw_pan.h +++ b/include/bw_pan.h @@ -374,6 +374,7 @@ static inline void bw_pan_process_multi( BW_ASSERT(x != NULL); BW_ASSERT(y_l != NULL); BW_ASSERT(y_r != NULL); + BW_ASSERT(y_l != y_r); #ifndef BW_NO_DEBUG for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) { diff --git a/include/bw_ppm.h b/include/bw_ppm.h index 0f42963..be3b7a9 100644 --- a/include/bw_ppm.h +++ b/include/bw_ppm.h @@ -506,7 +506,7 @@ static inline void bw_ppm_process_multi( if (y != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y[i] != y[j]); + BW_ASSERT(y[i] == NULL || y[j] == NULL || y[i] != y[j]); #endif bw_ppm_update_coeffs_ctrl(coeffs); diff --git a/include/bw_reverb.h b/include/bw_reverb.h index e60fa0e..1cada0b 100644 --- a/include/bw_reverb.h +++ b/include/bw_reverb.h @@ -837,6 +837,7 @@ static inline void bw_reverb_process1( BW_ASSERT(bw_is_finite(x_r)); BW_ASSERT(y_l != NULL); BW_ASSERT(y_r != NULL); + BW_ASSERT(y_l != y_r); const float i = 0.5f * (x_l + x_r); const float pd = bw_delay_process1(&coeffs->predelay_coeffs, &state->predelay_state, i); @@ -947,6 +948,7 @@ static inline void bw_reverb_process( BW_ASSERT_DEEP(bw_has_only_finite(x_r, n_samples)); BW_ASSERT(y_l != NULL); BW_ASSERT(y_r != NULL); + BW_ASSERT(y_l != y_r); bw_reverb_update_coeffs_ctrl(coeffs); for (size_t i = 0; i < n_samples; i++) { @@ -984,19 +986,16 @@ static inline void bw_reverb_process_multi( BW_ASSERT(x_r != NULL); BW_ASSERT(y_l != NULL); BW_ASSERT(y_r != NULL); + BW_ASSERT(y_l != y_r); #ifndef BW_NO_DEBUG - if (y_l_0 != NULL) - for (size_t i = 0; i < n_channels; i++) - for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y_l_0[i] != y_l_0[j]); - if (y_r_0 != NULL) - for (size_t i = 0; i < n_channels; i++) - for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y_r_0[i] != y_r_0[j]); - if (y_l_0 != y_r_0) - for (size_t i = 0; i < n_channels; i++) - for (size_t j = 0; j < n_channels; j++) - BW_ASSERT(y_l_0[i] != y_r_0[j]); + for (size_t i = 0; i < n_channels; i++) + for (size_t j = i + 1; j < n_channels; j++) { + BW_ASSERT(y_l[i] != y_l[j]); + BW_ASSERT(y_r[i] != y_r[j]); + } + for (size_t i = 0; i < n_channels; i++) + for (size_t j = 0; j < n_channels; j++) + BW_ASSERT(y_l[i] != y_r[j]); #endif bw_reverb_update_coeffs_ctrl(coeffs); diff --git a/include/bw_slew_lim.h b/include/bw_slew_lim.h index 218dc25..afe3a4a 100644 --- a/include/bw_slew_lim.h +++ b/include/bw_slew_lim.h @@ -674,7 +674,7 @@ static inline void bw_slew_lim_process_multi( if (y != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y[i] != y[j]); + BW_ASSERT(y[i] == NULL || y[j] == NULL || y[i] != y[j]); #endif bw_slew_lim_update_coeffs_ctrl(coeffs); diff --git a/include/bw_src.h b/include/bw_src.h index 5a11c72..eb4e617 100644 --- a/include/bw_src.h +++ b/include/bw_src.h @@ -454,6 +454,7 @@ static inline void bw_src_process_multi( #endif BW_ASSERT(x != NULL); BW_ASSERT(y != NULL); + BW_ASSERT((void *)x != (void *)y); #ifndef BW_NO_DEBUG for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) diff --git a/include/bw_src_int.h b/include/bw_src_int.h index 4e46e49..c5f6645 100644 --- a/include/bw_src_int.h +++ b/include/bw_src_int.h @@ -430,6 +430,7 @@ static inline void bw_src_int_process_multi( #endif BW_ASSERT(x != NULL); BW_ASSERT(y != NULL); + BW_ASSERT((void *)x != (void *)y); #ifndef BW_NO_DEBUG for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) diff --git a/include/bw_svf.h b/include/bw_svf.h index 67be868..3f3428e 100644 --- a/include/bw_svf.h +++ b/include/bw_svf.h @@ -678,6 +678,9 @@ static inline void bw_svf_process( BW_ASSERT_DEEP(bw_svf_state_is_valid(coeffs, state)); BW_ASSERT(x != NULL); BW_ASSERT_DEEP(bw_has_only_finite(x, n_samples)); + BW_ASSERT(y_lp == NULL || y_bp == NULL || y_lp != y_bp); + BW_ASSERT(y_lp == NULL || y_hp == NULL || y_lp != y_hp); + BW_ASSERT(y_bp == NULL || y_hp == NULL || y_bp != y_hp); if (y_lp != NULL) { if (y_bp != NULL) { @@ -767,31 +770,34 @@ static inline void bw_svf_process_multi( BW_ASSERT(state[i] != state[j]); #endif BW_ASSERT(x != NULL); + BW_ASSERT(y_lp == NULL || y_bp == NULL || y_lp != y_bp); + BW_ASSERT(y_lp == NULL || y_hp == NULL || y_lp != y_hp); + BW_ASSERT(y_bp == NULL || y_hp == NULL || y_bp != y_hp); #ifndef BW_NO_DEBUG if (y_lp != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y_lp[i] != y_lp[j]); + BW_ASSERT(y_lp[i] == NULL || y_lp[j] == NULL || y_lp[i] != y_lp[j]); if (y_bp != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y_bp[i] != y_bp[j]); + BW_ASSERT(y_bp[i] == NULL || y_bp[j] == NULL || y_bp[i] != y_bp[j]); if (y_hp != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = i + 1; j < n_channels; j++) - BW_ASSERT(y_hp[i] != y_hp[j]); + BW_ASSERT(y_hp[i] == NULL || y_hp[j] == NULL || y_hp[i] != y_hp[j]); if (y_lp != NULL && y_bp != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = 0; j < n_channels; j++) - BW_ASSERT(y_lp[i] != y_bp[j]); + BW_ASSERT(y_lp[i] == NULL || y_bp[j] == NULL || y_lp[i] != y_bp[j]); if (y_lp != NULL && y_hp != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = 0; j < n_channels; j++) - BW_ASSERT(y_lp[i] != y_hp[j]); + BW_ASSERT(y_lp[i] == NULL || y_hp[j] == NULL || y_lp[i] != y_hp[j]); if (y_bp != NULL && y_hp != NULL) for (size_t i = 0; i < n_channels; i++) for (size_t j = 0; j < n_channels; j++) - BW_ASSERT(y_bp[i] != y_hp[j]); + BW_ASSERT(y_bp[i] == NULL || y_hp[j] == NULL || y_bp[i] != y_hp[j]); #endif if (y_lp != NULL) {