renderer: switched audio rendering over to planar buffers
While planar audio cannot be used for playback, it's much easier for processing. This should lead to cleaner and easier to write code in the future.
This commit is contained in:
+28
-11
@@ -14,6 +14,21 @@ QVector<SampleSummer::Sum> SampleSummer::SumSamples(const qfloat16 *samples, int
|
||||
return SumSamplesInternal<qfloat16>(samples, nb_samples, nb_channels);
|
||||
}
|
||||
|
||||
QVector<SampleSummer::Sum> SampleSummer::SumSamples(SampleBufferPtr samples, int start_index, int length)
|
||||
{
|
||||
QVector<SampleSummer::Sum> summed_samples(samples->audio_params().channel_count());
|
||||
|
||||
int end_index = start_index + length;
|
||||
|
||||
for (int i=start_index;i<end_index;i++) {
|
||||
for (int channel=0;channel<samples->audio_params().channel_count();channel++) {
|
||||
ClampMinMax<float>(summed_samples[channel], samples->data()[channel][i]);
|
||||
}
|
||||
}
|
||||
|
||||
return summed_samples;
|
||||
}
|
||||
|
||||
QVector<SampleSummer::Sum> SampleSummer::ReSumSamples(const SampleSummer::Sum *samples, int nb_samples, int nb_channels)
|
||||
{
|
||||
QVector<SampleSummer::Sum> summed_samples(nb_channels);
|
||||
@@ -47,18 +62,20 @@ QVector<SampleSummer::Sum> SampleSummer::SumSamplesInternal(const T *samples, in
|
||||
QVector<SampleSummer::Sum> summed_samples(nb_channels);
|
||||
|
||||
for (int i=0;i<nb_samples;i++) {
|
||||
int channel = i%nb_channels;
|
||||
|
||||
float sample = samples[i];
|
||||
|
||||
if (sample < summed_samples[channel].min) {
|
||||
summed_samples[channel].min = sample;
|
||||
}
|
||||
|
||||
if (sample > summed_samples[channel].max) {
|
||||
summed_samples[channel].max = sample;
|
||||
}
|
||||
ClampMinMax<T>(summed_samples[i%nb_channels], samples[i]);
|
||||
}
|
||||
|
||||
return summed_samples;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void SampleSummer::ClampMinMax(SampleSummer::Sum &sum, T value)
|
||||
{
|
||||
if (value < sum.min) {
|
||||
sum.min = value;
|
||||
}
|
||||
|
||||
if (value > sum.max) {
|
||||
sum.max = value;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user