/// <summary>
 /// Do register a single camera capture.
 /// </summary>
 /// <param name="CameraCapture"></param>
 private static void UnRegisterCameraCapture(CameraCapture CameraCapture)
 {
     CameraCapture.OnCameraException -= OnReceiveCameraException;
     CameraCapture.OnCameraStateChanged -= OnReceiveCameraStateChanged;
 }
 /// <summary>
 /// On receive a camera exception.
 /// </summary>
 /// <param name="CameraException">The receive camera exception.</param>
 private static void OnReceiveCameraStateChanged(CameraState CameraState, CameraCapture CameraCapture)
 {
     if (OnCameraStateChanged != null)
     {
         OnCameraStateChanged(CameraState, CameraCapture);
     }
 }
 /// <summary>
 /// Do register a single camera capture.
 /// </summary>
 /// <param name="CameraCapture"></param>
 private static void RegisterCameraCapture(CameraCapture CameraCapture)
 {
     cameraCaptures.Add(CameraCapture);
     CameraCapture.PresentationDispatcher = presentationDispatcher;
     CameraCapture.OnCameraException += OnReceiveCameraException;
     CameraCapture.OnCameraStateChanged += OnReceiveCameraStateChanged;
 }
 /// <summary>
 /// The this camera to get capture images.
 /// </summary>
 /// <returns>If no exception the camera will run now.</returns>
 public static bool Open(CameraCapture CameraCapture)
 {
     return CameraCapture.Open();
 }
 /// <summary>
 /// On receive a camera exception.
 /// </summary>
 /// <param name="CameraException">The receive camera exception.</param>
 private static void OnReceiveCameraException(Exception Exception, CameraCapture CameraCapture)
 {
     if (OnCameraException != null)
     {
         OnCameraException(Exception, CameraCapture);
     }
 }
 /// <summary>
 /// Connect the current camera.
 /// </summary>
 /// <returns>Check for correct connection of the camera.</returns>
 public static bool CreateCameraAndOpen(string FileNameOrStream, out CameraCapture NewCameraCapture)
 {
     NewCameraCapture = null;
     CameraCapture cameraCapture = CreateCamera(FileNameOrStream);
     if (cameraCapture != null)
     {
         if (cameraCapture.Connect() == true)
         {
             if (cameraCapture.Open() == true)
             {
                 NewCameraCapture = cameraCapture;
                 return true;
             }
         }
     }
     return false;
 }
 /// <summary>
 /// Do disconnect this camera.
 /// </summary>
 /// <returns>Can disconnect the camera. Also if allready disconnted.</returns>
 public static bool Disconnect(CameraCapture CameraCapture)
 {
     if (CameraCapture.Disconnect() == true)
     {
         UnRegisterCameraCapture(CameraCapture);
         return true;
     }
     return false;
 }
 /// <summary>
 /// Connect the current camera.
 /// </summary>
 /// <returns>Check for correct connection of the camera.</returns>
 public static bool CreateCameraAndOpen(CaptureType CaptureType, out CameraCapture NewCameraCapture)
 {
     NewCameraCapture = null;
     CameraCapture cameraCapture = CreateCamera(CaptureType);
     if (cameraCapture != null)
     {
         if (cameraCapture.Connect() == true)
         {
             if (cameraCapture.Open() == true)
             {
                 NewCameraCapture = cameraCapture;
                 return true;
             }
         }
     }
     return false;
 }
 /// <summary>
 /// Connect the current camera.
 /// </summary>
 /// <returns>Check for correct connection of the camera.</returns>
 public static bool CreateCameraAndOpen(int HardwareCameraIndex, out CameraCapture NewCameraCapture)
 {
     NewCameraCapture = null;
     CameraCapture cameraCapture = CreateCamera(HardwareCameraIndex);
     if (cameraCapture != null)
     {
         if (cameraCapture.Connect() == true)
         {
             if (cameraCapture.Open() == true)
             {
                 NewCameraCapture = cameraCapture;
                 return true;
             }
         }
     }
     return false;
 }
 /// <summary>
 /// Connect the current camera.
 /// </summary>
 /// <returns>Check for correct connection of the camera.</returns>
 public static CameraCapture CreateCamera(string FileNameOrStream)
 {
     CameraCapture cameraCapture = new CameraCapture(FileNameOrStream);
     RegisterCameraCapture(cameraCapture);
     return cameraCapture;
 }
 /// <summary>
 /// Connect the current camera.
 /// </summary>
 /// <returns>Check for correct connection of the camera.</returns>
 public static CameraCapture CreateCamera(CaptureType CaptureType)
 {
     CameraCapture cameraCapture = new CameraCapture(CaptureType);
     RegisterCameraCapture(cameraCapture);
     return cameraCapture;
 }
 /// <summary>
 /// Connect the current camera.
 /// </summary>
 /// <returns>Check for correct connection of the camera.</returns>
 public static CameraCapture CreateCamera(int HardwareCameraIndex)
 {
     CameraCapture cameraCapture = new CameraCapture(HardwareCameraIndex);
     RegisterCameraCapture(cameraCapture);
     return cameraCapture;
 }