diff options
Diffstat (limited to 'compat')
-rw-r--r-- | compat/camera-names.cpp | 15 | ||||
-rw-r--r-- | compat/camera-names.hpp | 5 |
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); |