async Task StartHoloLensMediaFrameSourceGroups() { #if ENABLE_WINMD_SUPPORT // Plugin doesn't work in the Unity editor myText.text = "Initializing MediaFrameSourceGroups..."; // PV Debug.Log("HoloLensForCVUnity.ChArUcoDetection.StartHoloLensMediaFrameSourceGroup: Setting up sensor frame streamer"); _sensorType = (SensorType)sensorTypePv; _sensorFrameStreamerPv = new SensorFrameStreamer(); _sensorFrameStreamerPv.Enable(_sensorType); // Spatial perception Debug.Log("HoloLensForCVUnity.ChArUcoDetection.StartHoloLensMediaFrameSourceGroup: Setting up spatial perception"); _spatialPerception = new SpatialPerception(); // Enable media frame source groups // PV Debug.Log("HoloLensForCVUnity.ChArUcoDetection.StartHoloLensMediaFrameSourceGroup: Setting up the media frame source group"); // Check if using research mode sensors if (sensorTypePv == CvUtils.SensorTypeUnity.PhotoVideo) { _mediaFrameSourceGroup = MediaFrameSourceGroupType.PhotoVideoCamera; } else { _mediaFrameSourceGroup = MediaFrameSourceGroupType.HoloLensResearchModeSensors; } // Cast device type _deviceType = (HoloLensForCV.DeviceType)deviceType; _pvMediaFrameSourceGroup = new MediaFrameSourceGroup( _mediaFrameSourceGroup, _spatialPerception, _deviceType, _sensorFrameStreamerPv); _pvMediaFrameSourceGroup.Enable(_sensorType); // Start media frame source groups myText.text = "Starting MediaFrameSourceGroups..."; // Photo video Debug.Log("HoloLensForCVUnity.ChArUcoDetection.StartHoloLensMediaFrameSourceGroup: Starting the media frame source group"); await _pvMediaFrameSourceGroup.StartAsync(); _mediaFrameSourceGroupsStarted = true; myText.text = "MediaFrameSourceGroups started..."; // Initialize the Unity coordinate system // Get pointer to Unity's spatial coordinate system // https://github.com/qian256/HoloLensARToolKit/blob/master/ARToolKitUWP-Unity/Scripts/ARUWPVideo.cs try { _unityCoordinateSystem = Marshal.GetObjectForIUnknown(WorldManager.GetNativeISpatialCoordinateSystemPtr()) as SpatialCoordinateSystem; } catch (Exception) { Debug.Log("ChArUcoDetectionHoloLensUnity.ChArUcoBoardDetection: Could not get pointer to Unity spatial coordinate system."); throw; } // Initialize the aruco marker detector with parameters await _pvMediaFrameSourceGroup.StartChArUcoBoardTrackerAsync( squaresX, squaresY, squareSize, markerSize, (int)arUcoDictionaryName, _unityCoordinateSystem); #endif }