|
|
|
@ -563,11 +563,45 @@ static std::map<std::string, InferenceEngine::InferenceEnginePluginPtr>& getShar |
|
|
|
|
return sharedPlugins; |
|
|
|
|
} |
|
|
|
|
#else |
|
|
|
|
InferenceEngine::Core& getCore() |
|
|
|
|
static bool init_IE_plugins() |
|
|
|
|
{ |
|
|
|
|
// load and hold IE plugins
|
|
|
|
|
static InferenceEngine::Core* init_core = new InferenceEngine::Core(); // 'delete' is never called
|
|
|
|
|
(void)init_core->GetAvailableDevices(); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
static InferenceEngine::Core& create_IE_Core_instance() |
|
|
|
|
{ |
|
|
|
|
static InferenceEngine::Core core; |
|
|
|
|
return core; |
|
|
|
|
} |
|
|
|
|
static InferenceEngine::Core& create_IE_Core_pointer() |
|
|
|
|
{ |
|
|
|
|
// load and hold IE plugins
|
|
|
|
|
static InferenceEngine::Core* core = new InferenceEngine::Core(); // 'delete' is never called
|
|
|
|
|
return *core; |
|
|
|
|
} |
|
|
|
|
InferenceEngine::Core& getCore() |
|
|
|
|
{ |
|
|
|
|
// to make happy memory leak tools use:
|
|
|
|
|
// - OPENCV_DNN_INFERENCE_ENGINE_HOLD_PLUGINS=0
|
|
|
|
|
// - OPENCV_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND=0
|
|
|
|
|
static bool param_DNN_INFERENCE_ENGINE_HOLD_PLUGINS = utils::getConfigurationParameterBool("OPENCV_DNN_INFERENCE_ENGINE_HOLD_PLUGINS", true); |
|
|
|
|
static bool init_IE_plugins_ = param_DNN_INFERENCE_ENGINE_HOLD_PLUGINS && init_IE_plugins(); CV_UNUSED(init_IE_plugins_); |
|
|
|
|
|
|
|
|
|
static bool param_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND = |
|
|
|
|
utils::getConfigurationParameterBool("OPENCV_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND", |
|
|
|
|
#ifdef _WIN32 |
|
|
|
|
true |
|
|
|
|
#else |
|
|
|
|
false |
|
|
|
|
#endif |
|
|
|
|
); |
|
|
|
|
static InferenceEngine::Core& core = param_DNN_INFERENCE_ENGINE_CORE_LIFETIME_WORKAROUND |
|
|
|
|
? create_IE_Core_pointer() |
|
|
|
|
: create_IE_Core_instance(); |
|
|
|
|
return core; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#if !defined(OPENCV_DNN_IE_VPU_TYPE_DEFAULT) |
|
|
|
|