MCPcopy Create free account
hub / github.com/ValveSoftware/steam-audio / PathEffect

Method PathEffect

core/src/core/path_effect.cpp:28–74  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26// --------------------------------------------------------------------------------------------------------------------
27
28PathEffect::PathEffect(const AudioSettings& audioSettings,
29 const PathEffectSettings& effectSettings)
30 : mMaxOrder(effectSettings.maxOrder)
31 , mSpatialize(effectSettings.spatialize)
32 , mEQBuffer(1, audioSettings.frameSize)
33 , mEQEffect(audioSettings)
34 , mPrevBinaural(false)
35{
36 if (mSpatialize)
37 {
38 AmbisonicsRotateEffectSettings ambisonicsRotateSettings{};
39 ambisonicsRotateSettings.maxOrder = effectSettings.maxOrder;
40
41 mAmbisonicsRotateEffect = make_unique<AmbisonicsRotateEffect>(AudioSettings{audioSettings.samplingRate, 1}, ambisonicsRotateSettings);
42
43 AmbisonicsPanningEffectSettings ambisonicsPanningSettings{};
44 ambisonicsPanningSettings.speakerLayout = effectSettings.speakerLayout;
45 ambisonicsPanningSettings.maxOrder = effectSettings.maxOrder;
46
47 mAmbisonicsPanningEffect = make_unique<AmbisonicsPanningEffect>(audioSettings, ambisonicsPanningSettings);
48
49 mGainEffects.resize(effectSettings.speakerLayout->numSpeakers);
50 for (auto i = 0u; i < mGainEffects.size(0); ++i)
51 {
52 mGainEffects[i] = make_unique<GainEffect>(audioSettings);
53 }
54
55 OverlapAddConvolutionEffectSettings overlapAddSettings{};
56 overlapAddSettings.numChannels = IHRTFMap::kNumEars;
57 overlapAddSettings.irSize = effectSettings.hrtf->numSamples();
58
59 mOverlapAddEffect = make_unique<OverlapAddConvolutionEffect>(audioSettings, overlapAddSettings);
60
61 mAmbisonicsBuffer = make_unique<AudioBuffer>(SphericalHarmonics::numCoeffsForOrder(effectSettings.maxOrder), 1);
62 mSpeakerBuffer = make_unique<AudioBuffer>(effectSettings.speakerLayout->numSpeakers, 1);
63
64 mHRTF.resize(2, effectSettings.hrtf->numSpectrumSamples());
65 }
66 else
67 {
68 mGainEffects.resize(SphericalHarmonics::numCoeffsForOrder(effectSettings.maxOrder));
69 for (auto i = 0u; i < mGainEffects.size(0); ++i)
70 {
71 mGainEffects[i] = make_unique<GainEffect>(audioSettings);
72 }
73 }
74}
75
76void PathEffect::reset()
77{

Callers

nothing calls this directly

Calls 4

resizeMethod · 0.45
sizeMethod · 0.45
numSamplesMethod · 0.45
numSpectrumSamplesMethod · 0.45

Tested by

no test coverage detected