CV_LOG_INFO(NULL, "Video I/O: plugin is incompatible: " << lib->getName());
return;
}
+ if (plugin_api_->api_header.opencv_version_major != CV_VERSION_MAJOR ||
+ plugin_api_->api_header.opencv_version_minor != CV_VERSION_MINOR)
+ {
+ CV_LOG_ERROR(NULL, "Video I/O: wrong OpenCV version used by plugin '" << plugin_api_->api_header.api_description << "': " <<
+ cv::format("%d.%d, OpenCV version is '" CV_VERSION "'", plugin_api_->api_header.opencv_version_major, plugin_api_->api_header.opencv_version_minor))
+ plugin_api_ = NULL;
+ return;
+ }
// TODO Preview: add compatibility API/ABI checks
CV_LOG_INFO(NULL, "Video I/O: loaded plugin '" << plugin_api_->api_header.api_description << "'");
}
Ptr<PluginBackend> pluginBackend = makePtr<PluginBackend>(lib);
if (pluginBackend && pluginBackend->plugin_api_)
{
- backend = pluginBackend;
- return;
+ if (pluginBackend->plugin_api_->captureAPI != id_)
+ {
+ CV_LOG_ERROR(NULL, "Video I/O: plugin '" << pluginBackend->plugin_api_->api_header.api_description <<
+ "': unexpected backend ID: " <<
+ pluginBackend->plugin_api_->captureAPI << " vs " << (int)id_ << " (expected)");
+ }
+ else
+ {
+ backend = pluginBackend;
+ return;
+ }
}
}
catch (...)