MCPcopy Create free account
hub / github.com/0xShug0/audio.cpp / interleave_planar_channels

Function interleave_planar_channels

src/framework/audio/conversion.cpp:82–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

80}
81
82std::vector<float> interleave_planar_channels(
83 const std::vector<float> & planar_samples,
84 int channel_count,
85 int64_t frame_count) {
86 if (channel_count <= 0 || frame_count < 0) {
87 throw std::runtime_error("planar audio interleave shape is invalid");
88 }
89 if (planar_samples.size() != static_cast<size_t>(channel_count * frame_count)) {
90 throw std::runtime_error("planar audio sample count does not match channel/frame shape");
91 }
92 std::vector<float> interleaved(static_cast<size_t>(frame_count * channel_count), 0.0F);
93#ifdef _OPENMP
94#pragma omp parallel for collapse(2) if(frame_count * channel_count >= 1 << 14)
95#endif
96 for (int64_t frame = 0; frame < frame_count; ++frame) {
97 for (int channel = 0; channel < channel_count; ++channel) {
98 interleaved[static_cast<size_t>(frame * channel_count + channel)] =
99 planar_samples[static_cast<size_t>(channel * frame_count + frame)];
100 }
101 }
102 return interleaved;
103}
104
105std::vector<float> extract_interleaved_channel(
106 const std::vector<float> & interleaved_samples,

Callers 1

runMethod · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected