added CV_CAP_PROP_PVAPI_MULTICASTIP property (thanks to Stefano Fabri for the patch)
authorVadim Pisarevsky <no@email>
Mon, 6 Jun 2011 19:23:43 +0000 (19:23 +0000)
committerVadim Pisarevsky <no@email>
Mon, 6 Jun 2011 19:23:43 +0000 (19:23 +0000)
modules/highgui/include/opencv2/highgui/highgui_c.h
modules/highgui/src/cap_pvapi.cpp

index 21c8a21..8ef4680 100644 (file)
@@ -365,7 +365,8 @@ enum
     CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_FOCAL_LENGTH,
     
     // Properties of cameras available through GStreamer interface
-    CV_CAP_GSTREAMER_QUEUE_LENGTH      = 200 // default is 1
+    CV_CAP_GSTREAMER_QUEUE_LENGTH      = 200, // default is 1
+    CV_CAP_PROP_PVAPI_MULTICASTIP       = 300 // ip for anable multicast master mode. 0 for disable multicast
 };
 
 enum
index f313ac9..7e4bf56 100644 (file)
@@ -307,11 +307,28 @@ bool CvCaptureCAM_PvAPI::setProperty( int property_id, double value )
                else
                        monocrome=false;
                break;  
-       case CV_CAP_PROP_EXPOSURE:
-               if (PvAttrUint32Set(Camera.Handle,"ExposureValue",(tPvUint32)value)==ePvErrSuccess)
-                       break;
+    case CV_CAP_PROP_EXPOSURE:
+           if ((PvAttrUint32Set(Camera.Handle,"ExposureValue",(tPvUint32)value)==ePvErrSuccess)) 
+               break;
+           else
+               return false;
+    case CV_CAP_PROP_PVAPI_MULTICASTIP:
+           
+           if (value==-1) {
+               if ((PvAttrEnumSet(Camera.Handle,"MulticastEnable", "Off")==ePvErrSuccess)) 
+                   break;
+               else 
+                   return false;
+           }
+           else {
+               string ip=cv::format("%d.%d.%d.%d", (value>>24)&255, (value>>16)&255, (value>>8)&255, value&255);
+               if ((PvAttrEnumSet(Camera.Handle,"MulticastEnable", "On")==ePvErrSuccess) &&
+               (PvAttrStringSet(priv->handle, "MulticastIPAddress", ip.c_str())==ePvErrSuccess)) {
+                   break;
                else
-                       return false;
+                   return false;
+               }
+           }
     default:
         return false;
     }