(
&mut self,
buffers: &mut ProcBuffers,
range: Range<usize>,
extra: &mut ProcExtra,
)
| 356 | ProcessStatus::outputs_modified_with_silence_mask(info.in_silence_mask) |
| 357 | } else { |
| 358 | buffers.check_for_silence_on_outputs(DEFAULT_MIN_AMP) |
| 359 | } |
| 360 | } |
| 361 | } |
| 362 | |
| 363 | impl ConvolutionProcessor { |
| 364 | fn convolve_block( |
| 365 | &mut self, |
| 366 | buffers: &mut ProcBuffers, |
| 367 | range: Range<usize>, |
| 368 | extra: &mut ProcExtra, |
| 369 | ) { |
| 370 | let frames = range.end - range.start; |
| 371 | |
| 372 | let mut scratch_buffers = extra.scratch_buffers.all_mut(); |
| 373 | let (wet_gain_buffer, wet_declick_buffer) = scratch_buffers.split_first_mut().unwrap(); |
| 374 | let wet_declick_buffer = &mut wet_declick_buffer[0]; |
| 375 | |
| 376 | self.gain |
| 377 | .process_into_buffer(&mut wet_gain_buffer[0..frames]); |
| 378 | self.declick.process_into_gain_buffer( |
| 379 | &mut wet_declick_buffer[0..frames], |
| 380 | false, |
| 381 | &extra.declick_values, |
| 382 | DeclickFadeCurve::EqualPower3dB, |
| 383 | ); |
| 384 | |
| 385 | for ((conv, input), output) in self |
| 386 | .convolver |
| 387 | .iter_mut() |
| 388 | .zip(buffers.inputs.iter()) |
| 389 | .zip(buffers.outputs.iter_mut()) |
| 390 | { |
| 391 | conv.process(&input[range.clone()], &mut output[range.clone()]) |
| 392 | .unwrap(); |
| 393 | |
| 394 | for ((out_s, &g1), &g2) in output[range.clone()] |
| 395 | .iter_mut() |
| 396 | .zip(wet_gain_buffer.iter()) |
| 397 | .zip(wet_declick_buffer.iter()) |
| 398 | { |
| 399 | *out_s *= g1 * g2; |
| 400 | } |
| 401 | } |
no test coverage detected