28#include "../Core/AudioBuffer.h"
34#ifndef DSPARK_RESTRICT
35 #if defined(__clang__) || defined(__GNUC__)
36 #define DSPARK_RESTRICT __restrict__
37 #elif defined(_MSC_VER)
38 #define DSPARK_RESTRICT __restrict
40 #define DSPARK_RESTRICT
68 static constexpr void encodeSample(T& left_mid, T& right_side)
noexcept
71 const T r = right_side;
72 left_mid = (l + r) * T(0.5);
73 right_side = (l - r) * T(0.5);
84 static constexpr void decodeSample(T& mid_left, T& side_right)
noexcept
87 const T s = side_right;
108 assert(buffer.getNumChannels() >= 2);
110 const int n = buffer.getNumSamples();
111 if (buffer.getNumChannels() < 2 || n <= 0)
return;
116 for (
int i = 0; i < n; ++i)
119 const T r = right[i];
120 left[i] = (l + r) * T(0.5);
121 right[i] = (l - r) * T(0.5);
138 assert(buffer.getNumChannels() >= 2);
140 const int n = buffer.getNumSamples();
141 if (buffer.getNumChannels() < 2 || n <= 0)
return;
146 for (
int i = 0; i < n; ++i)
Non-owning view over audio channel data.
Main namespace for the DSPark framework.
Static utility for Mid/Side stereo encoding and decoding.
static void encode(AudioBufferView< T > buffer) noexcept
Encodes an entire stereo buffer from Left/Right to Mid/Side.
static void decode(AudioBufferView< T > buffer) noexcept
Decodes an entire stereo buffer from Mid/Side back to Left/Right.
static constexpr void encodeSample(T &left_mid, T &right_side) noexcept
Encodes a single sample frame from Left/Right to Mid/Side in-place.
static constexpr void decodeSample(T &mid_left, T &side_right) noexcept
Decodes a single sample frame from Mid/Side to Left/Right in-place.