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

◆ deinterleave_channels()

template<typename T >
std::vector< std::vector< T > > MayaFlux::Kakshya::deinterleave_channels ( std::span< const T >  interleaved,
size_t  num_channels 
)

Deinterleave a single vector into multiple channels.

Template Parameters
TData type.
Parameters
interleavedInterleaved data span.
num_channelsNumber of channels.
Returns
Vector of channel vectors.

Definition at line 70 of file ContainerUtils.hpp.

71{
72 if (interleaved.empty() || num_channels == 0) {
73 return {};
74 }
75 size_t samples_per_channel = interleaved.size() / num_channels;
76 std::vector<std::vector<T>> result(num_channels);
77 for (size_t ch = 0; ch < num_channels; ++ch) {
78 result[ch].resize(samples_per_channel);
79 for (size_t i = 0; i < samples_per_channel; ++i) {
80 result[ch][i] = interleaved[i * num_channels + ch];
81 }
82 }
83 return result;
84}