summaryrefslogtreecommitdiffhomepage
path: root/compat
diff options
context:
space:
mode:
Diffstat (limited to 'compat')
-rw-r--r--compat/camera-names.cpp15
-rw-r--r--compat/camera-names.hpp5
2 files changed, 20 insertions, 0 deletions
diff --git a/compat/camera-names.cpp b/compat/camera-names.cpp
index 246d76ee..c30e4b33 100644
--- a/compat/camera-names.cpp
+++ b/compat/camera-names.cpp
@@ -49,6 +49,7 @@ QList<QString> get_camera_names()
// Enumerate the monikers.
IMoniker *pMoniker = nullptr;
ULONG cFetched;
+ bool hasKinect = true;
while (pEnumCat->Next(1, &pMoniker, &cFetched) == S_OK)
{
IPropertyBag *pPropBag;
@@ -63,12 +64,26 @@ QList<QString> get_camera_names()
// Display the name in your UI somehow.
QString str((QChar*)var.bstrVal, int(std::wcslen(var.bstrVal)));
ret.append(str);
+ if (!hasKinect && str.compare(KKinectVideoSensor)==0)
+ {
+ // We do have a Kinect V2 connected
+ hasKinect = true;
+ }
}
VariantClear(&var);
pPropBag->Release();
}
pMoniker->Release();
}
+
+ if (hasKinect)
+ {
+ // Add Kinect V2 IR Sensor as an option then
+ ret.append(QString(KKinectIRSensor));
+ // We made sure that extra camera is added at the end of our array so as not to mess up genuine camera indices...
+ // ...which we relly on to create our OpenCV VideoCapture object in Camera::start.
+ }
+
pEnumCat->Release();
}
else
diff --git a/compat/camera-names.hpp b/compat/camera-names.hpp
index 97184c8c..4d9b023c 100644
--- a/compat/camera-names.hpp
+++ b/compat/camera-names.hpp
@@ -13,6 +13,11 @@
#include "export.hpp"
+// Hard coding name of standard Kinect camera as returned from Windows API as used in ::get_camera_names
+static const char KKinectVideoSensor[] = "Kinect V2 Video Sensor";
+// Defining camera name for Kinect IR Sensor
+static const char KKinectIRSensor[] = "Kinect V2 IR Sensor";
+
OTR_COMPAT_EXPORT QList<QString> get_camera_names();
OTR_COMPAT_EXPORT int camera_name_to_index(const QString &name);