cmake: fix handling of VIDEOIO_ENABLE_PLUGINS=OFF
authorAlexander Alekhin <alexander.a.alekhin@gmail.com>
Mon, 19 Apr 2021 02:01:57 +0000 (02:01 +0000)
committerAlexander Alekhin <alexander.a.alekhin@gmail.com>
Mon, 19 Apr 2021 02:12:25 +0000 (02:12 +0000)
modules/videoio/CMakeLists.txt
modules/videoio/src/backend_plugin.cpp
modules/videoio/src/videoio_registry.cpp

index 3a79631..8db5026 100644 (file)
@@ -1,12 +1,18 @@
 set(VIDEOIO_PLUGIN_LIST "" CACHE STRING "List of videoio backends to be compiled as plugins (ffmpeg, gstreamer, mfx, msmf or special value 'all')")
-set(VIDEOIO_ENABLE_PLUGINS "ON" CACHE BOOL "Allow building videoio plugin support")
+set(VIDEOIO_ENABLE_PLUGINS "ON" CACHE BOOL "Allow building and using of videoio plugins")
 mark_as_advanced(VIDEOIO_PLUGIN_LIST VIDEOIO_ENABLE_PLUGINS)
 
 string(REPLACE "," ";" VIDEOIO_PLUGIN_LIST "${VIDEOIO_PLUGIN_LIST}")  # support comma-separated list (,) too
-
-# Make virtual opencv_videoio_plugins target
-if(NOT TARGET opencv_videoio_plugins)
-  add_custom_target(opencv_videoio_plugins ALL)
+if(NOT VIDEOIO_ENABLE_PLUGINS)
+  if(VIDEOIO_PLUGIN_LIST)
+    message(WARNING "VideoIO: plugins are disabled through VIDEOIO_ENABLE_PLUGINS, so VIDEOIO_PLUGIN_LIST='${VIDEOIO_PLUGIN_LIST}' is ignored")
+    set(VIDEOIO_PLUGIN_LIST "")
+  endif()
+else()
+  # Make virtual opencv_videoio_plugins target
+  if(NOT TARGET opencv_videoio_plugins)
+    add_custom_target(opencv_videoio_plugins ALL)
+  endif()
 endif()
 
 ocv_add_module(videoio opencv_imgproc opencv_imgcodecs WRAP java objc python)
index ad34602..fa4a1f6 100644 (file)
@@ -684,6 +684,8 @@ Ptr<IBackendFactory> createPluginBackendFactory(VideoCaptureAPIs id, const char*
 #if OPENCV_HAVE_FILESYSTEM_SUPPORT && defined(ENABLE_PLUGINS)
     return makePtr<impl::PluginBackendFactory>(id, baseName); //.staticCast<IBackendFactory>();
 #else
+    CV_UNUSED(id);
+    CV_UNUSED(baseName);
     return Ptr<IBackendFactory>();
 #endif
 }
index 59d96d1..9fc75bc 100644 (file)
@@ -84,7 +84,7 @@ static const struct VideoBackendInfo builtin_backends[] =
 
 #ifdef HAVE_MSMF
     DECLARE_STATIC_BACKEND(CAP_MSMF, "MSMF", MODE_CAPTURE_ALL | MODE_WRITER, cvCreateCapture_MSMF, cvCreateCapture_MSMF, cvCreateVideoWriter_MSMF),
-#elif defined(ENABLE_PLUGINS)
+#elif defined(ENABLE_PLUGINS) && defined(_WIN32)
     DECLARE_DYNAMIC_BACKEND(CAP_MSMF, "MSMF", MODE_CAPTURE_ALL | MODE_WRITER),
 #endif