@@ -39,26 +39,28 @@ namespace zlp {
3939 }
4040
4141 void Controller::process (const std::array<float *, 4 >& buffer, const size_t num_samples, const bool is_bypass) {
42+ if (fft_ == nullptr ) {
43+ return ;
44+ }
4245 size_t samples_processed = 0 ;
4346 const bool requires_side = (side_status_ != SideStatus::kNotRequired );
44-
4547 while (samples_processed < num_samples) {
4648 // copy data to FIFO until reach a hop size or buffer size
4749 const size_t chunk = std::min (num_samples - samples_processed, fft_hop_size_ - fft_count_);
4850 const size_t chunk1 = std::min (chunk, fft_size_ - fft_pos_);
4951 const size_t chunk2 = chunk - chunk1;
5052 for (size_t chan = 0 ; chan < 2 ; ++chan) {
5153 std::copy_n (buffer[chan] + samples_processed, chunk1,
52- input_fifos_[chan].data () + fft_pos_);
54+ input_fifos_[chan].data () + fft_pos_);
5355 if (chunk2 > 0 ) {
5456 std::copy_n (buffer[chan] + samples_processed + chunk1, chunk2,
55- input_fifos_[chan].data ());
57+ input_fifos_[chan].data ());
5658 }
5759 std::copy_n (output_fifos_[chan].data () + fft_pos_, chunk1,
58- buffer[chan] + samples_processed);
60+ buffer[chan] + samples_processed);
5961 if (chunk2 > 0 ) {
6062 std::copy_n (output_fifos_[chan].data (), chunk2,
61- buffer[chan] + samples_processed + chunk1);
63+ buffer[chan] + samples_processed + chunk1);
6264 }
6365 std::fill_n (output_fifos_[chan].data () + fft_pos_, chunk1, 0 .0f );
6466 if (chunk2 > 0 ) {
@@ -68,10 +70,10 @@ namespace zlp {
6870 if (requires_side) {
6971 for (size_t chan = 2 ; chan < 4 ; ++chan) {
7072 std::copy_n (buffer[chan] + samples_processed, chunk1,
71- input_fifos_[chan].data () + fft_pos_);
73+ input_fifos_[chan].data () + fft_pos_);
7274 if (chunk2 > 0 ) {
7375 std::copy_n (buffer[chan] + samples_processed + chunk1, chunk2,
74- input_fifos_[chan].data ());
76+ input_fifos_[chan].data ());
7577 }
7678 }
7779 }
@@ -87,16 +89,16 @@ namespace zlp {
8789 // copy to FFT working space
8890 for (size_t chan = 0 ; chan < 2 ; ++chan) {
8991 std::copy_n (input_fifos_[chan].data () + fft_pos_, fft_size_ - fft_pos_,
90- fft_ins_[chan].data ());
92+ fft_ins_[chan].data ());
9193 if (fft_pos_ > 0 ) {
9294 std::copy_n (input_fifos_[chan].data (), fft_pos_,
93- fft_ins_[chan].data () + fft_size_ - fft_pos_);
95+ fft_ins_[chan].data () + fft_size_ - fft_pos_);
9496 }
9597 }
9698 if (requires_side) {
9799 for (size_t chan = 2 ; chan < 4 ; ++chan) {
98100 std::copy_n (input_fifos_[chan].data () + fft_pos_, fft_size_ - fft_pos_,
99- fft_ins_[chan].data ());
101+ fft_ins_[chan].data ());
100102 if (fft_pos_ > 0 ) {
101103 std::copy_n (input_fifos_[chan].data (), fft_pos_,
102104 fft_ins_[chan].data () + fft_size_ - fft_pos_);
@@ -158,11 +160,11 @@ namespace zlp {
158160 void Controller::processSideLR () {
159161 if (l_data_.is_side_required || stereo_data_.is_side_required ) {
160162 zldsp::vector::multiply (fft_ins_[2 ].data (), window1_.data (), fft_size_);
161- fft_->forward_sqr_mag (fft_ins_[2 ].data (), l_data_.fft_side_abs_sqr .data ());
163+ fft_->forward_sqr_mag (fft_ins_[2 ].data (), l_data_.fft_side_abs_sqr .data ()); // NOLINT
162164 }
163165 if (r_data_.is_side_required || stereo_data_.is_side_required ) {
164166 zldsp::vector::multiply (fft_ins_[3 ].data (), window1_.data (), fft_size_);
165- fft_->forward_sqr_mag (fft_ins_[3 ].data (), r_data_.fft_side_abs_sqr .data ());
167+ fft_->forward_sqr_mag (fft_ins_[3 ].data (), r_data_.fft_side_abs_sqr .data ()); // NOLINT
166168 }
167169 if (stereo_data_.is_side_required ) {
168170 auto * HWY_RESTRICT stereo_abs_sqr = stereo_data_.fft_side_abs_sqr .data ();
@@ -189,11 +191,11 @@ namespace zlp {
189191 zldsp::splitter::InplaceMSSplitter<float >::split (fft_ins_[2 ].data (), fft_ins_[3 ].data (), fft_size_);
190192 if (m_data_.is_side_required || stereo_data_.is_side_required ) {
191193 zldsp::vector::multiply (fft_ins_[2 ].data (), window1_.data (), fft_size_);
192- fft_->forward_sqr_mag (fft_ins_[2 ].data (), m_data_.fft_side_abs_sqr .data ());
194+ fft_->forward_sqr_mag (fft_ins_[2 ].data (), m_data_.fft_side_abs_sqr .data ()); // NOLINT
193195 }
194196 if (s_data_.is_side_required || stereo_data_.is_side_required ) {
195197 zldsp::vector::multiply (fft_ins_[3 ].data (), window1_.data (), fft_size_);
196- fft_->forward_sqr_mag (fft_ins_[3 ].data (), s_data_.fft_side_abs_sqr .data ());
198+ fft_->forward_sqr_mag (fft_ins_[3 ].data (), s_data_.fft_side_abs_sqr .data ()); // NOLINT
197199 }
198200 if (stereo_data_.is_side_required ) {
199201 auto * HWY_RESTRICT stereo_abs_sqr = stereo_data_.fft_side_abs_sqr .data ();
@@ -224,8 +226,8 @@ namespace zlp {
224226
225227 zldsp::vector::multiply (fft_ins_[2 ].data (), window1_.data (), fft_size_);
226228 zldsp::vector::multiply (fft_ins_[3 ].data (), window1_.data (), fft_size_);
227- fft_->forward (fft_ins_[2 ].data (), {l_real_ptr, l_imag_ptr});
228- fft_->forward (fft_ins_[3 ].data (), {r_real_ptr, r_imag_ptr});
229+ fft_->forward (fft_ins_[2 ].data (), {l_real_ptr, l_imag_ptr}); // NOLINT
230+ fft_->forward (fft_ins_[3 ].data (), {r_real_ptr, r_imag_ptr}); // NOLINT
229231
230232 if (l_data_.is_side_required ) {
231233 auto * HWY_RESTRICT l_abs_sqr = l_data_.fft_side_abs_sqr .data ();
@@ -330,14 +332,14 @@ namespace zlp {
330332 // process each dynamic band
331333 {
332334 const auto band = data.dynamic_bands [0 ];
333- spec_dynamic_[band].template process <false >(side_ptr, dynamic_ptr,
334- spec_response_[band], spec_follower_[band]);
335+ spec_dynamic_[band].process <false >(side_ptr, dynamic_ptr,
336+ spec_response_[band], spec_follower_[band]);
335337 std::fill (dynamic_ptr + spec_response_[band].getDiffEndIdx (), dynamic_ptr + end_idx, 0 .f );
336338 }
337339 for (size_t i = 1 ; i < data.dynamic_bands .size (); ++i) {
338340 const auto band = data.dynamic_bands [i];
339- spec_dynamic_[band].template process <true >(side_ptr, dynamic_ptr,
340- spec_response_[band], spec_follower_[band]);
341+ spec_dynamic_[band].process <true >(side_ptr, dynamic_ptr,
342+ spec_response_[band], spec_follower_[band]);
341343 }
342344 // convert dynamic response from db to linear
343345 auto * HWY_RESTRICT static_ptr = data.static_response .data ();
@@ -359,8 +361,8 @@ namespace zlp {
359361 zldsp::vector::multiply (fft_ins_[0 ].data (), window1_.data (), fft_size_);
360362 zldsp::vector::multiply (fft_ins_[1 ].data (), window1_.data (), fft_size_);
361363
362- fft_->forward (fft_ins_[0 ].data (), {fft_out_reals_[0 ].data (), fft_out_imags_[0 ].data ()});
363- fft_->forward (fft_ins_[1 ].data (), {fft_out_reals_[1 ].data (), fft_out_imags_[1 ].data ()});
364+ fft_->forward (fft_ins_[0 ].data (), {fft_out_reals_[0 ].data (), fft_out_imags_[0 ].data ()}); // NOLINT
365+ fft_->forward (fft_ins_[1 ].data (), {fft_out_reals_[1 ].data (), fft_out_imags_[1 ].data ()}); // NOLINT
364366
365367 auto * HWY_RESTRICT l_real_ptr = fft_out_reals_[0 ].data ();
366368 auto * HWY_RESTRICT l_imag_ptr = fft_out_imags_[0 ].data ();
@@ -431,8 +433,8 @@ namespace zlp {
431433 hn::Store (vr_imag, d, r_imag_ptr + i);
432434 }
433435
434- fft_->backward ({fft_out_reals_[0 ].data (), fft_out_imags_[0 ].data ()}, fft_ins_[0 ].data ());
435- fft_->backward ({fft_out_reals_[1 ].data (), fft_out_imags_[1 ].data ()}, fft_ins_[1 ].data ());
436+ fft_->backward ({fft_out_reals_[0 ].data (), fft_out_imags_[0 ].data ()}, fft_ins_[0 ].data ()); // NOLINT
437+ fft_->backward ({fft_out_reals_[1 ].data (), fft_out_imags_[1 ].data ()}, fft_ins_[1 ].data ()); // NOLINT
436438
437439 zldsp::vector::multiply (fft_ins_[0 ].data (), window2_.data (), fft_size_);
438440 zldsp::vector::multiply (fft_ins_[1 ].data (), window2_.data (), fft_size_);
0 commit comments