AVCam.CameraViewController.ToggleCaptureMode C# (CSharp) Method

ToggleCaptureMode() private method

private ToggleCaptureMode ( UISegmentedControl captureModeControl ) : void
captureModeControl UISegmentedControl
return void
		void ToggleCaptureMode (UISegmentedControl captureModeControl)
		{
			if (captureModeControl.SelectedSegment == (int)CaptureMode.Photo) {
				RecordButton.Enabled = false;

				sessionQueue.DispatchAsync (() => {
					// Remove the AVCaptureMovieFileOutput from the session because movie recording is
					// not supported with AVCaptureSessionPresetPhoto. Additionally, Live Photo
					// capture is not supported when an AVCaptureMovieFileOutput is connected to the session.
					session.BeginConfiguration ();
					session.RemoveOutput (MovieFileOutput);
					session.SessionPreset = AVCaptureSession.PresetPhoto;
					session.CommitConfiguration ();

					MovieFileOutput = null;

					if (photoOutput.IsLivePhotoCaptureSupported) {
						photoOutput.IsLivePhotoCaptureEnabled = true;
						DispatchQueue.MainQueue.DispatchAsync (() => {
							LivePhotoModeButton.Enabled = true;
							LivePhotoModeButton.Hidden = false;
						});
					}
				});
			} else if (captureModeControl.SelectedSegment == (int)CaptureMode.Movie) {
				LivePhotoModeButton.Hidden = true;

				sessionQueue.DispatchAsync (() => {
					var output = new AVCaptureMovieFileOutput ();
					if (session.CanAddOutput (output)) {
						session.BeginConfiguration ();
						session.AddOutput (output);
						session.SessionPreset = AVCaptureSession.PresetHigh;
						var connection = output.ConnectionFromMediaType (AVMediaType.Video);
						if (connection != null) {
							if (connection.SupportsVideoStabilization)
								connection.PreferredVideoStabilizationMode = AVCaptureVideoStabilizationMode.Auto;
						}
						session.CommitConfiguration ();
						MovieFileOutput = output;

						DispatchQueue.MainQueue.DispatchAsync (() => {
							RecordButton.Enabled = true;
						});
					}
				});
			}
		}