mathbase: use sample indices and copy rather than zeroing out
This commit is contained in:
@@ -248,8 +248,8 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o
|
|||||||
|
|
||||||
SampleBufferPtr mixed_samples = SampleBuffer::CreateAllocated(samples_a->audio_params(), max_samples);
|
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++) {
|
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++) {
|
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]);
|
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
|
// Fill in remainder space with 0s
|
||||||
int remainder = max_samples - min_samples;
|
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++) {
|
for (int i=0;i<mixed_samples->audio_params().channel_count();i++) {
|
||||||
memset(mixed_samples->data()[i] + min_samples * sizeof(float),
|
memcpy(&mixed_samples->data()[i][min_samples],
|
||||||
0,
|
&larger_buffer->data()[i][min_samples],
|
||||||
remainder * sizeof(float));
|
remainder * sizeof(float));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user