private Task SetupCameraAsync()
        {
            lock (lockObj)
            {
#if UNITY_EDITOR
                UnityCompositorInterface.StartArUcoMarkerDetector(_markerDictionaryName, _markerSize);
                return(Task.CompletedTask);
#else
                if (setupCameraTask != null)
                {
                    DebugLog("Returning existing setup camera task");
                    return(setupCameraTask);
                }

                DebugLog("Setting up HoloLensCamera");
                if (_holoLensCamera == null)
                {
                    _holoLensCamera = new HoloLensCamera(CaptureMode.SingleLowLatency, PixelFormat.BGRA8);
                    _holoLensCamera.OnCameraInitialized += CameraInitialized;
                    _holoLensCamera.OnCameraStarted     += CameraStarted;
                    _holoLensCamera.OnFrameCaptured     += FrameCaptured;
                }

                return(setupCameraTask = _holoLensCamera.Initialize());
#endif
            }
        }