dshow: Only show debugging messages if environment variable OPENCV_DSHOW_DEBUG is...
authorRink Springer <rink@rink.nu>
Thu, 13 Jul 2017 09:44:20 +0000 (11:44 +0200)
committerRink Springer <rink.springer@philips.com>
Thu, 13 Jul 2017 09:44:20 +0000 (11:44 +0200)
Based on discussion at: https://github.com/opencv/opencv/pull/9051

modules/videoio/src/cap_dshow.cpp

index 200edc7..7d0eda8 100644 (file)
@@ -337,11 +337,17 @@ interface ISampleGrabber : public IUnknown
 #ifdef _DEBUG
 #include <strsafe.h>
 
-//change for verbose debug info
-static bool gs_verbose = true;
-
 static void DebugPrintOut(const char *format, ...)
 {
+    static int gs_verbose = -1;
+    if (gs_verbose < 0)
+    {
+        // Fetch initial debug state from environment - defaults to disabled
+        const char* s = getenv("OPENCV_DSHOW_DEBUG");
+        gs_verbose = s != NULL && atoi(s) != 0;
+    }
+
+
     if (gs_verbose)
     {
         va_list args;
@@ -487,9 +493,6 @@ class videoInput{
         videoInput();
         ~videoInput();
 
-        //turns off console messages - default is to print messages
-        static void setVerbose(bool _verbose);
-
         //Functions in rough order they should be used.
         static int listDevices(bool silent = false);
 
@@ -1120,20 +1123,6 @@ videoInput::videoInput(){
 
 }
 
-
-// ----------------------------------------------------------------------
-// static - set whether messages get printed to console or not
-//
-// ----------------------------------------------------------------------
-
-void videoInput::setVerbose(bool _verbose){
-#ifdef _DEBUG
-    gs_verbose = _verbose;
-#else
-    (void)_verbose; // Suppress 'unreferenced parameter' warning
-#endif
-}
-
 // ----------------------------------------------------------------------
 // change to use callback or regular capture
 // callback tells you when a new frame has arrived