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

Function lazyInit

unity/src/native/ambisonic_decoder_effect.cpp:54–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

52};
53
54InitFlags lazyInit(UnityAudioEffectState* state,
55 int numChannelsIn,
56 int numChannelsOut)
57{
58 assert(state);
59
60 auto initFlags = INIT_NONE;
61
62 if (!gContext)
63 return initFlags;
64
65 if (!gHRTF[1])
66 return initFlags;
67
68 auto effect = state->GetEffectData<State>();
69 if (!effect)
70 return initFlags;
71
72 IPLAudioSettings audioSettings;
73 audioSettings.samplingRate = state->samplerate;
74 audioSettings.frameSize = state->dspbuffersize;
75
76 auto status = IPL_STATUS_SUCCESS;
77
78 if (numChannelsIn > 0)
79 {
80 status = IPL_STATUS_SUCCESS;
81 if (!effect->ambisonicsDecodeEffect)
82 {
83 IPLAmbisonicsDecodeEffectSettings effectSettings;
84 effectSettings.speakerLayout = speakerLayoutForNumChannels(numChannelsOut);
85 effectSettings.hrtf = gHRTF[1];
86 effectSettings.maxOrder = orderForNumChannels(numChannelsIn);
87
88 status = iplAmbisonicsDecodeEffectCreate(gContext, &audioSettings, &effectSettings, &effect->ambisonicsDecodeEffect);
89 }
90
91 if (status == IPL_STATUS_SUCCESS)
92 initFlags = static_cast<InitFlags>(initFlags | INIT_DECODEEFFECT);
93 }
94
95 if (numChannelsIn > 0 && numChannelsOut > 0)
96 {
97 if (!effect->inBuffer.data)
98 iplAudioBufferAllocate(gContext, numChannelsIn, audioSettings.frameSize, &effect->inBuffer);
99
100 if (!effect->n3dInBuffer.data)
101 iplAudioBufferAllocate(gContext, numChannelsIn, audioSettings.frameSize, &effect->n3dInBuffer);
102
103 if (!effect->outBuffer.data)
104 iplAudioBufferAllocate(gContext, numChannelsOut, audioSettings.frameSize, &effect->outBuffer);
105
106 initFlags = static_cast<InitFlags>(initFlags | INIT_AUDIOBUFFERS);
107 }
108
109 return initFlags;
110}
111

Callers 2

Calls 4

orderForNumChannelsFunction · 0.70
iplAudioBufferAllocateFunction · 0.50

Tested by

no test coverage detected