MayaFlux 0.1.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ deinterleave_data()

std::vector< std::vector< double > > MayaFlux::IO::SoundFileReader::deinterleave_data ( const std::vector< double > &  interleaved,
uint32_t  channels 
)
private

Convert interleaved audio data to deinterleaved (planar) format.

Parameters
interleavedInput interleaved data.
channelsNumber of channels.
Returns
Deinterleaved data as std::vector<double>.

Definition at line 940 of file SoundFileReader.cpp.

942{
943 if (channels == 1) {
944 return { interleaved };
945 }
946
947 std::vector<std::vector<double>> deinterleaved(channels);
948
949 size_t samples_per_channel = interleaved.size() / channels;
950
951 for (uint32_t ch = 0; ch < channels; ch++) {
952 deinterleaved[ch].reserve(samples_per_channel);
953 for (size_t i = 0; i < samples_per_channel; i++) {
954 deinterleaved[ch].push_back(interleaved[i * channels + ch]);
955 }
956 }
957
958 return deinterleaved;
959}