summaryrefslogtreecommitdiffstats
path: root/src/3rdparty
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty')
-rw-r--r--src/3rdparty/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h2
-rw-r--r--src/3rdparty/eigen/Eigen/src/Core/arch/NEON/PacketMath.h8
-rw-r--r--src/3rdparty/eigen/qt_attribution.json34
-rw-r--r--src/3rdparty/ffmpeg/qt_attribution.json55
-rw-r--r--src/3rdparty/pffft/fftpack.c173
-rw-r--r--src/3rdparty/pffft/pffft.c50
-rw-r--r--src/3rdparty/pffft/qt_attribution.json30
-rw-r--r--src/3rdparty/pffft/test_pffft.c4
-rw-r--r--src/3rdparty/resonance-audio/patches/0001-resonance_audio-fix-C-20-build.patch36
-rw-r--r--src/3rdparty/resonance-audio/qt_attribution.json32
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/base/aligned_allocator.h6
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.cc7
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.h9
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.cc6
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.h5
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.cc5
-rw-r--r--src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.h2
17 files changed, 291 insertions, 173 deletions
diff --git a/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h b/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h
index 3481f337e..116dbb448 100644
--- a/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h
+++ b/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h
@@ -24,7 +24,7 @@ struct gebp_traits <float,float,false,false,Architecture::NEON,GEBPPacketFull>
template <typename LaneIdType>
EIGEN_STRONG_INLINE void madd(const Packet4f& a, const Packet4f& b,
- Packet4f& c, Packet4f& tmp,
+ Packet4f& c, Packet4f& /*tmp*/,
const LaneIdType&) const {
acc(a, b, c);
}
diff --git a/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/PacketMath.h b/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/PacketMath.h
index d2aeef430..34c9bbcdd 100644
--- a/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/PacketMath.h
+++ b/src/3rdparty/eigen/Eigen/src/Core/arch/NEON/PacketMath.h
@@ -1668,7 +1668,7 @@ template<> EIGEN_STRONG_INLINE Packet4f pload<Packet4f>(const float* from)
template<> EIGEN_STRONG_INLINE Packet4c pload<Packet4c>(const int8_t* from)
{
Packet4c res;
- memcpy(&res, from, sizeof(Packet4c));
+ memcpy(static_cast<void*>(&res), from, sizeof(Packet4c));
return res;
}
template<> EIGEN_STRONG_INLINE Packet8c pload<Packet8c>(const int8_t* from)
@@ -1678,7 +1678,7 @@ template<> EIGEN_STRONG_INLINE Packet16c pload<Packet16c>(const int8_t* from)
template<> EIGEN_STRONG_INLINE Packet4uc pload<Packet4uc>(const uint8_t* from)
{
Packet4uc res;
- memcpy(&res, from, sizeof(Packet4uc));
+ memcpy(static_cast<void*>(&res), from, sizeof(Packet4c));
return res;
}
template<> EIGEN_STRONG_INLINE Packet8uc pload<Packet8uc>(const uint8_t* from)
@@ -1713,7 +1713,7 @@ template<> EIGEN_STRONG_INLINE Packet4f ploadu<Packet4f>(const float* from)
template<> EIGEN_STRONG_INLINE Packet4c ploadu<Packet4c>(const int8_t* from)
{
Packet4c res;
- memcpy(&res, from, sizeof(Packet4c));
+ memcpy(static_cast<void*>(&res), from, sizeof(Packet4c));
return res;
}
template<> EIGEN_STRONG_INLINE Packet8c ploadu<Packet8c>(const int8_t* from)
@@ -1723,7 +1723,7 @@ template<> EIGEN_STRONG_INLINE Packet16c ploadu<Packet16c>(const int8_t* from)
template<> EIGEN_STRONG_INLINE Packet4uc ploadu<Packet4uc>(const uint8_t* from)
{
Packet4uc res;
- memcpy(&res, from, sizeof(Packet4uc));
+ memcpy(static_cast<void*>(&res), from, sizeof(Packet4c));
return res;
}
template<> EIGEN_STRONG_INLINE Packet8uc ploadu<Packet8uc>(const uint8_t* from)
diff --git a/src/3rdparty/eigen/qt_attribution.json b/src/3rdparty/eigen/qt_attribution.json
index a7cee7341..866a610b0 100644
--- a/src/3rdparty/eigen/qt_attribution.json
+++ b/src/3rdparty/eigen/qt_attribution.json
@@ -1,16 +1,20 @@
-[
- {
- "Id": "eigen",
- "Name": "Eigen",
- "QDocModule": "qtmultimedia",
- "Description": "The Eigen C++ linear algebra library.",
- "QtUsage": "Used for mathematics to support spatial audio.",
+{
+ "Id": "eigen",
+ "Name": "Eigen",
+ "QDocModule": "qtspatialaudio",
+ "Description": "The Eigen C++ linear algebra library.",
+ "QtUsage": "Used for mathematics to support spatial audio.",
+ "SecurityCritical": true,
- "Homepage": "https://eigen.tuxfamily.org/",
- "Version": "3.4.0",
- "License": "Mozilla Public License 2.0 and BSD 3-Clause \"New\" or \"Revised\" License",
- "LicenseId": "MPL-2.0 AND BSD-3-Clause",
- "CopyrightFile": "COPYRIGHTS",
- "LicenseFiles": [ "COPYING.MPL2", "COPYING.BSD" ]
- }
-]
+ "Homepage": "https://eigen.tuxfamily.org/",
+ "Version": "3.4.0",
+ "DownloadLocation": "https://gitlab.com/libeigen/eigen/-/archive/3.4.0/eigen-3.4.0.tar.bz2",
+
+ "License": "Mozilla Public License 2.0 and BSD 3-Clause \"New\" or \"Revised\" License",
+ "LicenseId": "MPL-2.0 AND BSD-3-Clause",
+ "CopyrightFile": "COPYRIGHTS",
+ "LicenseFiles": [
+ "COPYING.MPL2",
+ "COPYING.BSD"
+ ]
+}
diff --git a/src/3rdparty/ffmpeg/qt_attribution.json b/src/3rdparty/ffmpeg/qt_attribution.json
new file mode 100644
index 000000000..6e343be65
--- /dev/null
+++ b/src/3rdparty/ffmpeg/qt_attribution.json
@@ -0,0 +1,55 @@
+[
+ {
+ "Id": "ffmpeg",
+ "Name": "FFmpeg",
+ "QDocModule": "qtmultimedia",
+ "Description": "FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles, and related metadata.",
+ "QtUsage": "The FFmpeg media backend uses the \\l {https://ffmpeg.org}{FFmpeg framework}. FFmpeg is licensed under LGPLv2.1 or later versions of the licenses. Note that, while FFmpeg also features some optional components available under GPL or LGPLv3, the binaries that ship with Qt in the online installer do not contain these components. See the \\l {https://ffmpeg.org/legal.html}{FFmpeg licensing page} for further details.",
+ "Homepage": "https://ffmpeg.org/",
+ "DownloadLocation": "https://github.com/FFmpeg/FFmpeg/archive/refs/tags/n6.1.1.zip",
+ "SecurityCritical": true,
+ "Version": "n6.1.1",
+ "LicenseId": "LGPL-2.1-or-later AND BSD-3-Clause AND BSD-2-Clause AND BSD-Source-Code AND ISC AND MIT AND MPL-2.0",
+ "License": "GNU Lesser General Public License v2.1 or later and BSD 3-Clause \"New\" or \"Revised\" License and BSD 2-Clause \"Simplified\" License and BSD Source Code Attribution and ISC License and MIT License and Mozilla Public License 2.0",
+ "Copyright": "Copyright (c) 2000-2023 the FFmpeg developers"
+ },
+ {
+ "Id": "ffmpeg-libjpeg",
+ "Name": "libjpeg",
+ "QDocModule": "qtmultimedia",
+ "Description": "libjpeg is a widely used C library for reading and writing JPEG image files.",
+ "QtUsage": "The FFmpeg media backend uses modified code from libjpeg in `libavcodec/jfdctfst.c`, `libavcodec/jfdctint_template.c` and `libavcodec/jrevdct.c`. For list of modifications, see \\l {https://git.ffmpeg.org/ffmpeg.git}{FFmpeg source code management system}.",
+ "SecurityCritical": true,
+ "Homepage": "https://libjpeg.sourceforge.net/",
+ "DownloadLocation": "https://libjpeg.sourceforge.net/",
+ "License": "Independent JPEG Group License",
+ "LicenseId": "IJG",
+ "Copyright": "Copyright (C) 1991-2020, Thomas G. Lane, Guido Vollbeding."
+ },
+ {
+ "Id": "ffmpeg-zlib",
+ "Name": "zlib",
+ "QDocModule": "qtmultimedia",
+ "Description": "Zlib is a software library used for data compression",
+ "QtUsage": "The FFmpeg media backend uses the Adler-32 algorithm from zlib",
+ "SecurityCritical": false,
+ "Homepage": "https://www.zlib.net/",
+ "DownloadLocation": "https://www.zlib.net/",
+ "License": "zlib License",
+ "LicenseId": "Zlib",
+ "Copyright": "Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler."
+ },
+ {
+ "Id": "ffmpeg-boost",
+ "Name": "boost",
+ "QDocModule": "qtmultimedia",
+ "Description": "Boost is a set of libraries for the C++ programming language ",
+ "QtUsage": "The FFmpeg media backend uses algorithms from the Boost math library",
+ "SecurityCritical": false,
+ "Homepage": "https://www.boost.org/",
+ "DownloadLocation": "https://www.boost.org/",
+ "License": "Boost Software License 1.0",
+ "LicenseId": "BSL-1.0",
+ "Copyright": "(C) Copyright John Maddock 2006. Copyright (c) 2006 Xiaogang Zhang"
+ }
+]
diff --git a/src/3rdparty/pffft/fftpack.c b/src/3rdparty/pffft/fftpack.c
index b6375a80d..aa8135a50 100644
--- a/src/3rdparty/pffft/fftpack.c
+++ b/src/3rdparty/pffft/fftpack.c
@@ -273,8 +273,8 @@ static void passb2(integer ido, integer l1, const real *cc, real *ch, const real
static void passb3(integer ido, integer l1, const real *cc, real *ch, const real *wa1, const real *wa2)
{
- static const real taur = -.5f;
- static const real taui = .866025403784439f;
+ static const real taur = -.5;
+ static const real taui = .866025403784439;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -419,10 +419,10 @@ static void passb4(integer ido, integer l1, const real *cc, real *ch,
static void passfb5(integer ido, integer l1, const real *cc, real *ch,
const real *wa1, const real *wa2, const real *wa3, const real *wa4, real fsign)
{
- const real tr11 = .309016994374947f;
- const real ti11 = .951056516295154f*fsign;
- const real tr12 = -.809016994374947f;
- const real ti12 = .587785252292473f*fsign;
+ const real tr11 = .309016994374947;
+ const real ti11 = .951056516295154*fsign;
+ const real tr12 = -.809016994374947;
+ const real ti12 = .587785252292473*fsign;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -571,8 +571,8 @@ static void passf2(integer ido, integer l1, const real *cc, real *ch, const real
static void passf3(integer ido, integer l1, const real *cc, real *ch,
const real *wa1, const real *wa2)
{
- static const real taur = -.5f;
- static const real taui = -.866025403784439f;
+ static const real taur = -.5;
+ static const real taui = -.866025403784439;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -771,8 +771,8 @@ static void radb3(integer ido, integer l1, const real *cc, real *ch,
{
/* Initialized data */
- static const real taur = -.5f;
- static const real taui = .866025403784439f;
+ static const real taur = -.5;
+ static const real taui = .866025403784439;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -839,7 +839,7 @@ static void radb4(integer ido, integer l1, const real *cc, real *ch,
{
/* Initialized data */
- static const real sqrt2 = 1.414213562373095f;
+ static const real sqrt2 = 1.414213562373095;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -926,10 +926,10 @@ static void radb5(integer ido, integer l1, const real *cc, real *ch,
{
/* Initialized data */
- static const real tr11 = .309016994374947f;
- static const real ti11 = .951056516295154f;
- static const real tr12 = -.809016994374947f;
- static const real ti12 = .587785252292473f;
+ static const real tr11 = .309016994374947;
+ static const real ti11 = .951056516295154;
+ static const real tr12 = -.809016994374947;
+ static const real ti12 = .587785252292473;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -1111,8 +1111,8 @@ static void radbg(integer ido, integer ip, integer l1, integer idl1,
}
}
}
- ar1 = 1.f;
- ai1 = 0.f;
+ ar1 = 1.;
+ ai1 = 0.;
for (l = 2; l <= ipph; ++l) {
lc = ipp2 - l;
ar1h = dcp * ar1 - dsp * ai1;
@@ -1285,8 +1285,8 @@ static void radf2(integer ido, integer l1, const real *cc, real *ch,
static void radf3(integer ido, integer l1, const real *cc, real *ch,
const real *wa1, const real *wa2)
{
- static const real taur = -.5f;
- static const real taui = .866025403784439f;
+ static const real taur = -.5;
+ static const real taui = .866025403784439;
/* System generated locals */
integer ch_offset, cc_offset;
@@ -1355,7 +1355,7 @@ static void radf4(integer ido, integer l1, const real *cc, real *ch,
{
/* Initialized data */
- static const real hsqt2 = .7071067811865475f;
+ static const real hsqt2 = .7071067811865475;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -1446,10 +1446,10 @@ static void radf5(integer ido, integer l1, const real *cc, real *ch,
{
/* Initialized data */
- static const real tr11 = .309016994374947f;
- static const real ti11 = .951056516295154f;
- static const real tr12 = -.809016994374947f;
- static const real ti12 = .587785252292473f;
+ static const real tr11 = .309016994374947;
+ static const real ti11 = .951056516295154;
+ static const real tr12 = -.809016994374947;
+ static const real ti12 = .587785252292473;
/* System generated locals */
integer cc_offset, ch_offset;
@@ -1661,8 +1661,8 @@ static void radfg(integer ido, integer ip, integer l1, integer idl1,
}
}
- ar1 = 1.f;
- ai1 = 0.f;
+ ar1 = 1.;
+ ai1 = 0.;
for (l = 2; l <= ipph; ++l) {
lc = ipp2 - l;
ar1h = dcp * ar1 - dsp * ai1;
@@ -1984,14 +1984,14 @@ static void cffti1(integer n, real *wa, integer *ifac)
ipm = ip - 1;
for (j = 1; j <= ipm; ++j) {
i1 = i;
- wa[i - 1] = 1.f;
- wa[i] = 0.f;
+ wa[i - 1] = 1.;
+ wa[i] = 0.;
ld += l1;
- fi = 0.f;
+ fi = 0.;
argld = (real) ld * argh;
for (ii = 4; ii <= idot; ii += 2) {
i += 2;
- fi += 1.f;
+ fi += 1.;
arg = fi * argld;
wa[i - 1] = cos(arg);
wa[i] = sin(arg);
@@ -2192,10 +2192,10 @@ static void rffti1(integer n, real *wa, integer *ifac)
ld += l1;
i = is;
argld = (real) ld * argh;
- fi = 0.f;
+ fi = 0.;
for (ii = 3; ii <= ido; ii += 2) {
i += 2;
- fi += 1.f;
+ fi += 1.;
arg = fi * argld;
wa[i - 1] = cos(arg);
wa[i] = sin(arg);
@@ -2277,7 +2277,7 @@ static void cosqb1(integer n, real *x, real *w, real *xh)
void cosqb(integer n, real *x, real *wsave)
{
- static const real tsqrt2 = 2.82842712474619f;
+ static const real tsqrt2 = 2.82842712474619;
/* Local variables */
real x1;
@@ -2287,9 +2287,9 @@ void cosqb(integer n, real *x, real *wsave)
--x;
if (n < 2) {
- x[1] *= 4.f;
+ x[1] *= 4.;
} else if (n == 2) {
- x1 = (x[1] + x[2]) * 4.f;
+ x1 = (x[1] + x[2]) * 4.;
x[2] = tsqrt2 * (x[1] - x[2]);
x[1] = x1;
} else {
@@ -2339,7 +2339,7 @@ static void cosqf1(integer n, real *x, real *w, real *xh)
void cosqf(integer n, real *x, real *wsave)
{
- static const real sqrt2 = 1.4142135623731f;
+ static const real sqrt2 = 1.4142135623731;
/* Local variables */
real tsqx;
@@ -2367,9 +2367,9 @@ void cosqi(integer n, real *wsave)
--wsave;
dt = M_PI/2 / (real) (n);
- fk = 0.f;
+ fk = 0.;
for (k = 1; k <= n; ++k) {
- fk += 1.f;
+ fk += 1.;
wsave[k] = cos(fk * dt);
}
rffti(n, &wsave[n + 1]);
@@ -2458,12 +2458,12 @@ void costi(integer n, real *wsave)
np1 = n + 1;
ns2 = n / 2;
dt = M_PI / (real) nm1;
- fk = 0.f;
+ fk = 0.;
for (k = 2; k <= ns2; ++k) {
kc = np1 - k;
- fk += 1.f;
- wsave[k] = sin(fk * dt) * 2.f;
- wsave[kc] = cos(fk * dt) * 2.f;
+ fk += 1.;
+ wsave[k] = sin(fk * dt) * 2.;
+ wsave[kc] = cos(fk * dt) * 2.;
}
rffti(nm1, &wsave[n + 1]);
} /* costi */
@@ -2480,7 +2480,7 @@ void sinqb(integer n, real *x, real *wsave)
/* Function Body */
if (n <= 1) {
- x[1] *= 4.f;
+ x[1] *= 4.;
return;
}
ns2 = n / 2;
@@ -2538,7 +2538,7 @@ static void sint1(integer n, real *war, real *was, real *xh, real *
{
/* Initialized data */
- static const real sqrt3 = 1.73205080756888f;
+ static const real sqrt3 = 1.73205080756888;
/* Local variables */
integer i, k;
@@ -2568,7 +2568,7 @@ static void sint1(integer n, real *war, real *was, real *xh, real *
} else {
np1 = n + 1;
ns2 = n / 2;
- x[1] = 0.f;
+ x[1] = 0.;
for (k = 1; k <= ns2; ++k) {
kc = np1 - k;
t1 = xh[k] - xh[kc];
@@ -2578,10 +2578,10 @@ static void sint1(integer n, real *war, real *was, real *xh, real *
}
modn = n % 2;
if (modn != 0) {
- x[ns2 + 2] = xh[ns2 + 1] * 4.f;
+ x[ns2 + 2] = xh[ns2 + 1] * 4.;
}
rfftf1(np1, &x[1], &xh[1], &war[1], &ifac[1]);
- xh[1] = x[1] * .5f;
+ xh[1] = x[1] * .5;
for (i = 3; i <= n; i += 2) {
xh[i - 1] = -x[i];
xh[i] = xh[i - 2] + x[i - 1];
@@ -2614,7 +2614,7 @@ void sinti(integer n, real *wsave)
np1 = n + 1;
dt = M_PI / (real) np1;
for (k = 1; k <= ns2; ++k) {
- wsave[k] = sin(k * dt) * 2.f;
+ wsave[k] = sin(k * dt) * 2.;
}
rffti(np1, &wsave[ns2 + 1]);
} /* sinti */
@@ -2652,7 +2652,7 @@ int main(void)
f77complex cx[200], cy[200];
real xh[200];
integer nz, nm1, np1, ns2;
- real arg, tfn;
+ real arg;
real sum, arg1, arg2;
real sum1, sum2, dcfb;
integer modn;
@@ -2716,13 +2716,12 @@ int main(void)
/* 19. CFFTB UNNORMALIZED INVERSE OF CFFTF */
- sqrt2 = sqrt(2.f);
+ sqrt2 = sqrt(2.);
int all_ok = 1;
for (nz = 1; nz <= (int)(sizeof nd/sizeof nd[0]); ++nz) {
n = nd[nz - 1];
modn = n % 2;
fn = (real) n;
- tfn = fn + fn;
np1 = n + 1;
nm1 = n - 1;
for (j = 1; j <= np1; ++j) {
@@ -2740,8 +2739,8 @@ int main(void)
goto L104;
}
for (k = 2; k <= ns2; ++k) {
- sum1 = 0.f;
- sum2 = 0.f;
+ sum1 = 0.;
+ sum2 = 0.;
arg = (real) (k - 1) * dt;
for (i = 1; i <= n; ++i) {
arg1 = (real) (i - 1) * arg;
@@ -2752,8 +2751,8 @@ int main(void)
y[(k << 1) - 2] = -sum2;
}
L104:
- sum1 = 0.f;
- sum2 = 0.f;
+ sum1 = 0.;
+ sum2 = 0.;
for (i = 1; i <= nm1; i += 2) {
sum1 += x[i - 1];
sum2 += x[i];
@@ -2766,7 +2765,7 @@ int main(void)
y[n - 1] = sum1 - sum2;
}
rfftf(n, x, w);
- rftf = 0.f;
+ rftf = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = rftf, r3 = (r1 = x[i - 1] - y[i - 1], fabs(r1));
@@ -2775,7 +2774,7 @@ int main(void)
}
rftf /= fn;
for (i = 1; i <= n; ++i) {
- sum = x[0] * .5f;
+ sum = x[0] * .5;
arg = (real) (i - 1) * dt;
if (ns2 < 2) {
goto L108;
@@ -2787,12 +2786,12 @@ int main(void)
}
L108:
if (modn == 0) {
- sum += (real)pow(-1, i-1) * .5f * x[n - 1];
+ sum += (real)pow(-1, i-1) * .5 * x[n - 1];
}
y[i - 1] = sum + sum;
}
rfftb(n, x, w);
- rftb = 0.f;
+ rftb = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = rftb, r3 = (r1 = x[i - 1] - y[i - 1], fabs(r1));
@@ -2802,8 +2801,8 @@ int main(void)
}
rfftb(n, y, w);
rfftf(n, y, w);
- cf = 1.f / fn;
- rftfb = 0.f;
+ cf = 1. / fn;
+ rftfb = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = rftfb, r3 = (r1 = cf * y[i - 1] - x[i - 1], fabs(
@@ -2818,7 +2817,7 @@ int main(void)
x[i - 1] = xh[i - 1];
}
for (i = 1; i <= nm1; ++i) {
- y[i - 1] = 0.f;
+ y[i - 1] = 0.;
arg1 = (real) i * dt;
for (k = 1; k <= nm1; ++k) {
y[i - 1] += x[k - 1] * sin((real) k * arg1);
@@ -2827,8 +2826,8 @@ int main(void)
}
sinti(nm1, w);
sint(nm1, x, w);
- cf = .5f / fn;
- sintt = 0.f;
+ cf = .5 / fn;
+ sintt = 0.;
for (i = 1; i <= nm1; ++i) {
/* Computing MAX */
r2 = sintt, r3 = (r1 = x[i - 1] - y[i - 1], fabs(r1));
@@ -2839,7 +2838,7 @@ int main(void)
sintt = cf * sintt;
sint(nm1, x, w);
sint(nm1, x, w);
- sintfb = 0.f;
+ sintfb = 0.;
for (i = 1; i <= nm1; ++i) {
/* Computing MAX */
r2 = sintfb, r3 = (r1 = cf * x[i - 1] - y[i - 1], fabs(
@@ -2853,7 +2852,7 @@ int main(void)
x[i - 1] = xh[i - 1];
}
for (i = 1; i <= np1; ++i) {
- y[i - 1] = (x[0] + (real) pow(-1, i+1) * x[n]) * .5f;
+ y[i - 1] = (x[0] + (real) pow(-1, i+1) * x[n]) * .5;
arg = (real) (i - 1) * dt;
for (k = 2; k <= n; ++k) {
y[i - 1] += x[k - 1] * cos((real) (k - 1) * arg);
@@ -2862,7 +2861,7 @@ int main(void)
}
costi(np1, w);
cost(np1, x, w);
- costt = 0.f;
+ costt = 0.;
for (i = 1; i <= np1; ++i) {
/* Computing MAX */
r2 = costt, r3 = (r1 = x[i - 1] - y[i - 1], fabs(r1));
@@ -2873,7 +2872,7 @@ int main(void)
costt = cf * costt;
cost(np1, x, w);
cost(np1, x, w);
- costfb = 0.f;
+ costfb = 0.;
for (i = 1; i <= np1; ++i) {
/* Computing MAX */
r2 = costfb, r3 = (r1 = cf * x[i - 1] - y[i - 1], fabs(
@@ -2883,22 +2882,22 @@ int main(void)
/* TEST SUBROUTINES SINQI,SINQF AND SINQB */
- cf = .25f / fn;
+ cf = .25 / fn;
for (i = 1; i <= n; ++i) {
y[i - 1] = xh[i - 1];
}
dt = M_PI / (fn + fn);
for (i = 1; i <= n; ++i) {
- x[i - 1] = 0.f;
+ x[i - 1] = 0.;
arg = dt * (real) i;
for (k = 1; k <= n; ++k) {
x[i - 1] += y[k - 1] * sin((real) (k + k - 1) * arg);
}
- x[i - 1] *= 4.f;
+ x[i - 1] *= 4.;
}
sinqi(n, w);
sinqb(n, y, w);
- sinqbt = 0.f;
+ sinqbt = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = sinqbt, r3 = (r1 = y[i - 1] - x[i - 1], fabs(r1))
@@ -2909,14 +2908,14 @@ int main(void)
sinqbt = cf * sinqbt;
for (i = 1; i <= n; ++i) {
arg = (real) (i + i - 1) * dt;
- y[i - 1] = (real) pow(-1, i+1) * .5f * x[n - 1];
+ y[i - 1] = (real) pow(-1, i+1) * .5 * x[n - 1];
for (k = 1; k <= nm1; ++k) {
y[i - 1] += x[k - 1] * sin((real) k * arg);
}
y[i - 1] += y[i - 1];
}
sinqf(n, x, w);
- sinqft = 0.f;
+ sinqft = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = sinqft, r3 = (r1 = x[i - 1] - y[i - 1], fabs(r1))
@@ -2927,7 +2926,7 @@ int main(void)
}
sinqf(n, y, w);
sinqb(n, y, w);
- sinqfb = 0.f;
+ sinqfb = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = sinqfb, r3 = (r1 = cf * y[i - 1] - x[i - 1], fabs(
@@ -2941,16 +2940,16 @@ int main(void)
y[i - 1] = xh[i - 1];
}
for (i = 1; i <= n; ++i) {
- x[i - 1] = 0.f;
+ x[i - 1] = 0.;
arg = (real) (i - 1) * dt;
for (k = 1; k <= n; ++k) {
x[i - 1] += y[k - 1] * cos((real) (k + k - 1) * arg);
}
- x[i - 1] *= 4.f;
+ x[i - 1] *= 4.;
}
cosqi(n, w);
cosqb(n, y, w);
- cosqbt = 0.f;
+ cosqbt = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = cosqbt, r3 = (r1 = x[i - 1] - y[i - 1], fabs(r1))
@@ -2960,7 +2959,7 @@ int main(void)
}
cosqbt = cf * cosqbt;
for (i = 1; i <= n; ++i) {
- y[i - 1] = x[0] * .5f;
+ y[i - 1] = x[0] * .5;
arg = (real) (i + i - 1) * dt;
for (k = 2; k <= n; ++k) {
y[i - 1] += x[k - 1] * cos((real) (k - 1) * arg);
@@ -2968,7 +2967,7 @@ int main(void)
y[i - 1] += y[i - 1];
}
cosqf(n, x, w);
- cosqft = 0.f;
+ cosqft = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = cosqft, r3 = (r1 = y[i - 1] - x[i - 1], fabs(r1))
@@ -2980,7 +2979,7 @@ int main(void)
cosqft = cf * cosqft;
cosqb(n, x, w);
cosqf(n, x, w);
- cosqfb = 0.f;
+ cosqfb = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
r2 = cosqfb, r3 = (r1 = cf * x[i - 1] - y[i - 1], fabs(r1));
@@ -2998,7 +2997,7 @@ int main(void)
dt = (2*M_PI) / fn;
for (i = 1; i <= n; ++i) {
arg1 = -((real) (i - 1)) * dt;
- cy[i-1].r = 0.f, cy[i-1].i = 0.f;
+ cy[i-1].r = 0., cy[i-1].i = 0.;
for (k = 1; k <= n; ++k) {
arg2 = (real) (k - 1) * arg1;
r1 = cos(arg2);
@@ -3012,7 +3011,7 @@ int main(void)
}
cffti(n, w);
cfftf(n, (real*)cx, w);
- dcfftf = 0.f;
+ dcfftf = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
q1.r = cx[i-1].r - cy[i-1].r, q1.i = cx[i-1].i - cy[i-1]
@@ -3025,7 +3024,7 @@ int main(void)
dcfftf /= fn;
for (i = 1; i <= n; ++i) {
arg1 = (real) (i - 1) * dt;
- cy[i-1].r = 0.f, cy[i-1].i = 0.f;
+ cy[i-1].r = 0., cy[i-1].i = 0.;
for (k = 1; k <= n; ++k) {
arg2 = (real) (k - 1) * arg1;
r1 = cos(arg2);
@@ -3038,7 +3037,7 @@ int main(void)
}
}
cfftb(n, (real*)cx, w);
- dcfftb = 0.f;
+ dcfftb = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
q1.r = cx[i-1].r - cy[i-1].r, q1.i = cx[i-1].i - cy[i-1].i;
@@ -3046,10 +3045,10 @@ int main(void)
dcfftb = dmax(r1,r2);
cx[i-1].r = cy[i-1].r, cx[i-1].i = cy[i-1].i;
}
- cf = 1.f / fn;
+ cf = 1. / fn;
cfftf(n, (real*)cx, w);
cfftb(n, (real*)cx, w);
- dcfb = 0.f;
+ dcfb = 0.;
for (i = 1; i <= n; ++i) {
/* Computing MAX */
q2.r = cf * cx[i-1].r, q2.i = cf * cx[i-1].i;
diff --git a/src/3rdparty/pffft/pffft.c b/src/3rdparty/pffft/pffft.c
index e6018e162..9271a9ad9 100644
--- a/src/3rdparty/pffft/pffft.c
+++ b/src/3rdparty/pffft/pffft.c
@@ -274,7 +274,7 @@ void pffft_aligned_free(void *p) {
if (p) free(*((void **) p - 1));
}
-int pffft_simd_size() { return SIMD_SZ; }
+int pffft_simd_size(void) { return SIMD_SZ; }
/*
passf2 and passb2 has been merged here, fsign = -1 for passf2, +1 for passb2
@@ -1233,27 +1233,19 @@ PFFFT_Setup *pffft_new_setup(int N, pffft_transform_t transform) {
s->e = (float*)s->data;
s->twiddle = (float*)(s->data + (2*s->Ncvec*(SIMD_SZ-1))/SIMD_SZ);
- if (transform == PFFFT_REAL) {
- for (k=0; k < s->Ncvec; ++k) {
- int i = k/SIMD_SZ;
- int j = k%SIMD_SZ;
- for (m=0; m < SIMD_SZ-1; ++m) {
- float A = -2*M_PI*(m+1)*k / N;
- s->e[(2*(i*3 + m) + 0) * SIMD_SZ + j] = cos(A);
- s->e[(2*(i*3 + m) + 1) * SIMD_SZ + j] = sin(A);
- }
+ for (k=0; k < s->Ncvec; ++k) {
+ int i = k/SIMD_SZ;
+ int j = k%SIMD_SZ;
+ for (m=0; m < SIMD_SZ-1; ++m) {
+ float A = -2*M_PI*(m+1)*k / N;
+ s->e[(2*(i*3 + m) + 0) * SIMD_SZ + j] = cos(A);
+ s->e[(2*(i*3 + m) + 1) * SIMD_SZ + j] = sin(A);
}
+ }
+
+ if (transform == PFFFT_REAL) {
rffti1_ps(N/SIMD_SZ, s->twiddle, s->ifac);
} else {
- for (k=0; k < s->Ncvec; ++k) {
- int i = k/SIMD_SZ;
- int j = k%SIMD_SZ;
- for (m=0; m < SIMD_SZ-1; ++m) {
- float A = -2*M_PI*(m+1)*k / N;
- s->e[(2*(i*3 + m) + 0)*SIMD_SZ + j] = cos(A);
- s->e[(2*(i*3 + m) + 1)*SIMD_SZ + j] = sin(A);
- }
- }
cffti1_ps(N/SIMD_SZ, s->twiddle, s->ifac);
}
@@ -1314,7 +1306,7 @@ void pffft_zreorder(PFFFT_Setup *setup, const float *in, float *out, pffft_direc
v4sf *vout = (v4sf*)out;
assert(in != out);
if (setup->transform == PFFFT_REAL) {
- int k, dk = N/32;
+ int dk = N/32;
if (direction == PFFFT_FORWARD) {
for (k=0; k < dk; ++k) {
INTERLEAVE2(vin[k*8 + 0], vin[k*8 + 1], vout[2*(0*dk + k) + 0], vout[2*(0*dk + k) + 1]);
@@ -1708,19 +1700,19 @@ void pffft_zconvolve_accumulate(PFFFT_Setup *s, const float *a, const float *b,
# endif
#endif
- float ar, ai, br, bi, abr, abi;
+ float ar0, ai0, br0, bi0, abr0, abi0;
#ifndef ZCONVOLVE_USING_INLINE_ASM
v4sf vscal = LD_PS1(scaling);
int i;
#endif
assert(VALIGNED(a) && VALIGNED(b) && VALIGNED(ab));
- ar = ((v4sf_union*)va)[0].f[0];
- ai = ((v4sf_union*)va)[1].f[0];
- br = ((v4sf_union*)vb)[0].f[0];
- bi = ((v4sf_union*)vb)[1].f[0];
- abr = ((v4sf_union*)vab)[0].f[0];
- abi = ((v4sf_union*)vab)[1].f[0];
+ ar0 = ((v4sf_union*)va)[0].f[0];
+ ai0 = ((v4sf_union*)va)[1].f[0];
+ br0 = ((v4sf_union*)vb)[0].f[0];
+ bi0 = ((v4sf_union*)vb)[1].f[0];
+ abr0 = ((v4sf_union*)vab)[0].f[0];
+ abi0 = ((v4sf_union*)vab)[1].f[0];
#ifdef ZCONVOLVE_USING_INLINE_ASM // inline asm version, unfortunately miscompiled by clang 3.2, at least on ubuntu.. so this will be restricted to gcc
const float *a_ = a, *b_ = b; float *ab_ = ab;
@@ -1774,8 +1766,8 @@ void pffft_zconvolve_accumulate(PFFFT_Setup *s, const float *a, const float *b,
}
#endif
if (s->transform == PFFFT_REAL) {
- ((v4sf_union*)vab)[0].f[0] = abr + ar*br*scaling;
- ((v4sf_union*)vab)[1].f[0] = abi + ai*bi*scaling;
+ ((v4sf_union*)vab)[0].f[0] = abr0 + ar0*br0*scaling;
+ ((v4sf_union*)vab)[1].f[0] = abi0 + ai0*bi0*scaling;
}
}
diff --git a/src/3rdparty/pffft/qt_attribution.json b/src/3rdparty/pffft/qt_attribution.json
index 7bbfdbb3a..2cf2c7264 100644
--- a/src/3rdparty/pffft/qt_attribution.json
+++ b/src/3rdparty/pffft/qt_attribution.json
@@ -1,16 +1,16 @@
-[
- {
- "Id": "pfft",
- "Name": "pfft",
- "QDocModule": "qtmultimedia",
- "Description": "A pretty fast FFT.",
- "QtUsage": "Used to support spatial audio.",
+{
+ "Id": "pfft",
+ "Name": "pfft",
+ "QDocModule": "qtspatialaudio",
+ "Description": "A pretty fast FFT.",
+ "QtUsage": "Used to support spatial audio.",
+ "SecurityCritical": true,
- "Homepage": "https://bitbucket.org/jpommier/pffft.git",
- "Version": "7c3b5a7dc510a0f513b9c5b6dc5b56f7aeeda422",
- "CopyrightFile": "COPYRIGHTS",
- "License": "BSD 3-Clause \"New\" or \"Revised\" License",
- "LicenseId": "BSD-3-Clause",
- "LicenseFile": "LICENSE"
- }
-]
+ "Homepage": "https://bitbucket.org/jpommier/pffft.git",
+ "Version": "fbc4058602803f40dc554b8a5d2bcc694c005f2f",
+ "DownloadLocation": "https://bitbucket.org/jpommier/pffft/get/fbc405860280.zip",
+ "CopyrightFile": "COPYRIGHTS",
+ "License": "BSD 3-Clause \"New\" or \"Revised\" License",
+ "LicenseId": "BSD-3-Clause",
+ "LicenseFile": "LICENSE"
+}
diff --git a/src/3rdparty/pffft/test_pffft.c b/src/3rdparty/pffft/test_pffft.c
index 12ba1f7ff..b217b6bec 100644
--- a/src/3rdparty/pffft/test_pffft.c
+++ b/src/3rdparty/pffft/test_pffft.c
@@ -248,8 +248,8 @@ void benchmark_ffts(int N, int cplx) {
int k;
int max_iter = 5120000/N*4;
-#ifdef __arm__
- max_iter /= 4;
+#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
+ max_iter /= 8;
#endif
int iter;
diff --git a/src/3rdparty/resonance-audio/patches/0001-resonance_audio-fix-C-20-build.patch b/src/3rdparty/resonance-audio/patches/0001-resonance_audio-fix-C-20-build.patch
new file mode 100644
index 000000000..2de42ad26
--- /dev/null
+++ b/src/3rdparty/resonance-audio/patches/0001-resonance_audio-fix-C-20-build.patch
@@ -0,0 +1,36 @@
+From f8c9ec7cfabb59977629f303edf7cf90ca8521d3 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Tue, 28 Jun 2022 19:38:13 +0200
+Subject: [PATCH] AlignedAllocator: fix C++20 build
+
+C++17 deprecated, and C++20 removed, the nested pointer, size_type
+etc. typedefs in std::allocator. Since C++11, the way to get these
+types is to go via allocator_traits, so do that.
+
+This breaks compatibility with C++ < 11.
+
+Fixes #61
+---
+ .../resonance_audio/base/aligned_allocator.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/resonance_audio/base/aligned_allocator.h b/resonance_audio/base/aligned_allocator.h
+index ac60e8292..628ccaa02 100644
+--- a/resonance_audio/base/aligned_allocator.h
++++ b/resonance_audio/base/aligned_allocator.h
+@@ -72,9 +72,9 @@ void AllignedFree(PointerType mem_block_aligned) {
+ template <typename Type, size_t Alignment>
+ class AlignedAllocator : public std::allocator<Type> {
+ public:
+- typedef typename std::allocator<Type>::pointer Pointer;
+- typedef typename std::allocator<Type>::const_pointer ConstPointer;
+- typedef typename std::allocator<Type>::size_type SizeType;
++ using Pointer = typename std::allocator_traits<std::allocator<Type>>::pointer;
++ using ConstPointer = typename std::allocator_traits<std::allocator<Type>>::const_pointer;
++ using SizeType = typename std::allocator_traits<std::allocator<Type>>::size_type;
+
+ AlignedAllocator() { StaticAlignmentCheck<sizeof(Type), Alignment>(); }
+
+--
+2.25.1
+
diff --git a/src/3rdparty/resonance-audio/qt_attribution.json b/src/3rdparty/resonance-audio/qt_attribution.json
index df0907b01..6f56457cb 100644
--- a/src/3rdparty/resonance-audio/qt_attribution.json
+++ b/src/3rdparty/resonance-audio/qt_attribution.json
@@ -1,16 +1,18 @@
-[
- {
- "Id": "resonance-audio",
- "Name": "Resonance Audio",
- "QDocModule": "qtmultimedia",
- "Description": "3D audio support.",
- "QtUsage": "Used to implement spatial audio.",
+{
+ "Id": "resonance-audio",
+ "Name": "Resonance Audio",
+ "QDocModule": "qtspatialaudio",
+ "Description": "3D audio support.",
+ "QtUsage": "Used to implement spatial audio.",
+ "SecurityCritical": true,
- "Homepage": "https://resonance-audio.github.io/resonance-audio/",
- "Version": "e225aedb5ec76ca6a0fe7079c0b84dbcbb490553",
- "CopyrightFile": "COPYRIGHTS",
- "License": "Apache License 2.0",
- "LicenseId": "Apache-2.0",
- "LicenseFile": "LICENSE"
- }
-]
+ "Homepage": "https://resonance-audio.github.io/resonance-audio/",
+ "Version": "e225aedb5ec7",
+ "DownloadLocation":
+ "https://github.com/resonance-audio/resonance-audio/tree/e225aedb5ec76ca6a0fe7079c0b84dbcbb490553",
+
+ "CopyrightFile": "COPYRIGHTS",
+ "License": "Apache License 2.0",
+ "LicenseId": "Apache-2.0",
+ "LicenseFile": "LICENSE"
+}
diff --git a/src/3rdparty/resonance-audio/resonance_audio/base/aligned_allocator.h b/src/3rdparty/resonance-audio/resonance_audio/base/aligned_allocator.h
index ac60e8292..628ccaa02 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/base/aligned_allocator.h
+++ b/src/3rdparty/resonance-audio/resonance_audio/base/aligned_allocator.h
@@ -72,9 +72,9 @@ void AllignedFree(PointerType mem_block_aligned) {
template <typename Type, size_t Alignment>
class AlignedAllocator : public std::allocator<Type> {
public:
- typedef typename std::allocator<Type>::pointer Pointer;
- typedef typename std::allocator<Type>::const_pointer ConstPointer;
- typedef typename std::allocator<Type>::size_type SizeType;
+ using Pointer = typename std::allocator_traits<std::allocator<Type>>::pointer;
+ using ConstPointer = typename std::allocator_traits<std::allocator<Type>>::const_pointer;
+ using SizeType = typename std::allocator_traits<std::allocator<Type>>::size_type;
AlignedAllocator() { StaticAlignmentCheck<sizeof(Type), Alignment>(); }
diff --git a/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.cc b/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.cc
index 2046699f8..cb5b85590 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.cc
+++ b/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.cc
@@ -164,7 +164,12 @@ const AudioBuffer* GraphManager::GetAmbisonicBuffer() const {
}
const AudioBuffer* GraphManager::GetStereoBuffer() const {
- return stereo_mixer_node_->GetOutputBuffer();
+ return stereo_mixer_node_->GetOutputBuffer();
+}
+
+const AudioBuffer *GraphManager::GetReverbBuffer() const
+{
+ return reverb_node_->GetOutputBuffer();
}
size_t GraphManager::GetNumMaxAmbisonicChannels() const {
diff --git a/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.h b/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.h
index ab797ff54..818b6fa01 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.h
+++ b/src/3rdparty/resonance-audio/resonance_audio/graph/graph_manager.h
@@ -227,6 +227,15 @@ class GraphManager {
// @return Output audio buffer of the stereo mix, or nullptr if no output.
const AudioBuffer* GetStereoBuffer() const;
+ // Returns the last processed buffer containing the reverb data for the room.
+ // The buffer contains stereo data.
+ // Note that, this method will *not* trigger the processing of the audio
+ // graph. |GraphManager::Process| must be called prior to this method call to
+ // ensure that the buffer is up-to-date.
+ //
+ // @return Room reverb audio buffer, or nullptr if no output.
+ const AudioBuffer* GetReverbBuffer() const;
+
// Returns the maximum allowed number of ambisonic channels.
//
// @return Number of channels based on Ambisonic order in the global config.
diff --git a/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.cc b/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.cc
index ec508144a..f8cc6731b 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.cc
+++ b/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.cc
@@ -448,7 +448,11 @@ const AudioBuffer* ResonanceAudioApiImpl::GetAmbisonicOutputBuffer() const {
}
const AudioBuffer* ResonanceAudioApiImpl::GetStereoOutputBuffer() const {
- return graph_manager_->GetStereoBuffer();
+ return graph_manager_->GetStereoBuffer();
+}
+
+const AudioBuffer *ResonanceAudioApiImpl::GetReverbBuffer() const {
+ return graph_manager_->GetReverbBuffer();
}
void ResonanceAudioApiImpl::ProcessNextBuffer() {
diff --git a/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.h b/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.h
index cac118387..0adbc1c67 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.h
+++ b/src/3rdparty/resonance-audio/resonance_audio/graph/resonance_audio_api_impl.h
@@ -124,6 +124,11 @@ class ResonanceAudioApiImpl : public ResonanceAudioApi {
// @return Pointer to stereo output buffer.
const AudioBuffer* GetStereoOutputBuffer() const;
+ // Returns the last processed buffer containing stereo data for the room reverb
+ //
+ // @return Pointer to room reverb stereo buffer.
+ const AudioBuffer* GetReverbBuffer() const;
+
// Triggers processing of the audio graph with the updated system properties.
void ProcessNextBuffer();
diff --git a/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.cc b/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.cc
index 36b7042bd..6a9999881 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.cc
+++ b/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.cc
@@ -95,6 +95,11 @@ void ReverbNode::Update() {
}
}
+const AudioBuffer* ReverbNode::GetOutputBuffer() const
+{
+ return &output_buffer_;
+}
+
const AudioBuffer* ReverbNode::AudioProcess(const NodeInput& input) {
if (rt60_updating_) {
for (size_t i = 0; i < kNumReverbOctaveBands; ++i) {
diff --git a/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.h b/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.h
index e25d0a577..f9921fa66 100644
--- a/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.h
+++ b/src/3rdparty/resonance-audio/resonance_audio/graph/reverb_node.h
@@ -41,6 +41,8 @@ class ReverbNode : public ProcessingNode {
// values depending on the system settings.
void Update();
+ const AudioBuffer *GetOutputBuffer() const;
+
protected:
// Implements ProcessingNode.
const AudioBuffer* AudioProcess(const NodeInput& input) override;