OpenSLSession (DynamicLibrary& slLibraryToUse, int numInputChannels, int numOutputChannels, double samleRateToUse, int bufferSizeToUse, int numBuffersToUse) : inputChannels (numInputChannels), outputChannels (numOutputChannels), sampleRate (samleRateToUse), bufferSize (bufferSizeToUse), numBuffers (numBuffersToUse), running (false), audioProcessingEnabled (true), callback (nullptr) { jassert (numInputChannels > 0 || numOutputChannels > 0); if (CreateEngineFunc createEngine = (CreateEngineFunc) slLibraryToUse.getFunction ("slCreateEngine")) { SLObjectItf obj = nullptr; SLresult err = createEngine (&obj, 0, nullptr, 0, nullptr, nullptr); if (err != SL_RESULT_SUCCESS || obj == nullptr || (*obj)->Realize (obj, 0) != SL_RESULT_SUCCESS) { if (obj != nullptr) (*obj)->Destroy (obj); return; } engine = SlRef<SLEngineItf_>::cast (SlObjectRef (obj)); } if (outputChannels > 0) { SLObjectItf obj = nullptr; SLresult err = (*engine)->CreateOutputMix (engine, &obj, 0, nullptr, nullptr); if (err != SL_RESULT_SUCCESS || obj == nullptr || (*obj)->Realize (obj, 0) != SL_RESULT_SUCCESS) { if (obj != nullptr) (*obj)->Destroy (obj); return; } outputMix = SlRef<SLOutputMixItf_>::cast (SlObjectRef (obj)); } }
bool open() { module.open (file.getFullPathName()); moduleMain = (LADSPA_Descriptor_Function) module.getFunction ("ladspa_descriptor"); return moduleMain != nullptr; }
dgl_func_ptr APILoader::getGLPointer(const DynamicLibrary& library, Entrypoint entryp) { return library.getFunction(GetEntryPointName(entryp)); }