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

◆ interleave_channels()

template<typename T >
std::vector< T > MayaFlux::Kakshya::interleave_channels ( const std::vector< std::vector< T > > &  channels)

Interleave multiple channels of data into a single vector.

Template Parameters
TData type.
Parameters
channelsVector of channel vectors.
Returns
Interleaved data vector.

Definition at line 46 of file ContainerUtils.hpp.

47{
48 if (channels.empty()) {
49 return {};
50 }
51 size_t num_channels = channels.size();
52 size_t samples_per_channel = channels[0].size();
53 std::vector<T> result(num_channels * samples_per_channel);
54 for (size_t i = 0; i < samples_per_channel; ++i) {
55 for (size_t ch = 0; ch < num_channels; ++ch) {
56 result[i * num_channels + ch] = channels[ch][i];
57 }
58 }
59 return result;
60}

Referenced by MayaFlux::Kakshya::SoundStreamContainer::get_data_as_double(), and MayaFlux::Kakshya::SoundStreamContainer::reorganize_data_layout().

+ Here is the caller graph for this function: