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

Function lazyInit

fmod/src/spatialize_effect.cpp:206–416  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

204};
205
206InitFlags lazyInit(FMOD_DSP_STATE* state,
207 int numChannelsIn,
208 int numChannelsOut)
209{
210 auto initFlags = INIT_NONE;
211
212 IPLAudioSettings audioSettings;
213 state->functions->getsamplerate(state, &audioSettings.samplingRate);
214 state->functions->getblocksize(state, reinterpret_cast<unsigned int*>(&audioSettings.frameSize));
215
216 if (!gContext && isRunningInEditor())
217 {
218 initContextAndDefaultHRTF(audioSettings);
219 }
220
221 if (!gContext)
222 return initFlags;
223
224 if (!gHRTF[1])
225 return initFlags;
226
227 auto effect = reinterpret_cast<State*>(state->plugindata);
228
229 auto status = IPL_STATUS_SUCCESS;
230
231 if (numChannelsOut > 0)
232 {
233 if (effect->panningEffect && effect->panningEffectSettingsBackup.speakerLayout.type != speakerLayoutForNumChannels(numChannelsOut).type)
234 {
235 iplPanningEffectReset(effect->panningEffect);
236 iplPanningEffectRelease(&effect->panningEffect);
237 }
238
239 if (!effect->panningEffect)
240 {
241 IPLPanningEffectSettings effectSettings{};
242 effectSettings.speakerLayout = speakerLayoutForNumChannels(numChannelsOut);
243
244 status = iplPanningEffectCreate(gContext, &audioSettings, &effectSettings, &effect->panningEffect);
245
246 effect->panningEffectSettingsBackup = effectSettings;
247 }
248
249 if (status == IPL_STATUS_SUCCESS)
250 {
251 if (!effect->binauralEffect)
252 {
253 IPLBinauralEffectSettings effectSettings;
254 effectSettings.hrtf = gHRTF[1];
255
256 status = iplBinauralEffectCreate(gContext, &audioSettings, &effectSettings, &effect->binauralEffect);
257 }
258 }
259
260 if (status == IPL_STATUS_SUCCESS)
261 initFlags = static_cast<InitFlags>(initFlags | INIT_BINAURALEFFECT);
262 }
263

Callers 2

createFunction · 0.70
processFunction · 0.70

Calls 15

isRunningInEditorFunction · 0.85
numChannelsForOrderFunction · 0.70
numSamplesForDurationFunction · 0.70
iplPanningEffectResetFunction · 0.50
iplPanningEffectReleaseFunction · 0.50
iplPanningEffectCreateFunction · 0.50
iplBinauralEffectCreateFunction · 0.50
iplDirectEffectResetFunction · 0.50
iplDirectEffectReleaseFunction · 0.50
iplDirectEffectCreateFunction · 0.50

Tested by

no test coverage detected