mathbase: use sample indices and copy rather than zeroing out

This commit is contained in:
itsmattkc
2020-09-21 04:15:52 +10:00
parent ff188d44b1
commit f9af69ca81
+5 -3
View File
@@ -248,8 +248,8 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o
SampleBufferPtr mixed_samples = SampleBuffer::CreateAllocated(samples_a->audio_params(), max_samples);
// Mix samples that are in both buffers
for (int i=0;i<mixed_samples->audio_params().channel_count();i++) {
// Mix samples that are in both buffers
for (int j=0;j<min_samples;j++) {
mixed_samples->data()[i][j] = PerformAll<float, float>(operation, samples_a->data()[i][j], samples_b->data()[i][j]);
}
@@ -259,9 +259,11 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o
// Fill in remainder space with 0s
int remainder = max_samples - min_samples;
SampleBufferPtr larger_buffer = (max_samples == samples_a->sample_count()) ? samples_a : samples_b;
for (int i=0;i<mixed_samples->audio_params().channel_count();i++) {
memset(mixed_samples->data()[i] + min_samples * sizeof(float),
0,
memcpy(&mixed_samples->data()[i][min_samples],
&larger_buffer->data()[i][min_samples],
remainder * sizeof(float));
}
}