void ConfigureSession ()
{
if (setupResult != SetupResult.Success)
return;
NSError error = null;
Session.BeginConfiguration ();
Session.SessionPreset = AVCaptureSession.PresetPhoto;
// Add video input
AVCaptureDevice vDevice = GetDeviceFrom (AVMediaType.Video, AVCaptureDevicePosition.Back);
AVCaptureDeviceInput vDeviceInput = AVCaptureDeviceInput.FromDevice (vDevice, out error);
if (error != null) {
Console.WriteLine ("Could not create video device input: {0}", error);
setupResult = SetupResult.SessionConfigurationFailed;
Session.CommitConfiguration ();
return;
}
if (Session.CanAddInput (vDeviceInput)) {
Session.AddInput (vDeviceInput);
VideoDeviceInput = vDeviceInput;
VideoDevice = vDeviceInput.Device;
} else {
Console.WriteLine ("Could not add video device input to the session");
setupResult = SetupResult.SessionConfigurationFailed;
Session.CommitConfiguration ();
return;
}
// Add audio input
AVCaptureDevice aDevice = AVCaptureDevice.DefaultDeviceWithMediaType (AVMediaType.Audio);
AVCaptureDeviceInput aDeviceInput = AVCaptureDeviceInput.FromDevice (aDevice, out error);
if (error != null)
Console.WriteLine ("Could not create audio device input: {0}", error);
if (Session.CanAddInput (aDeviceInput))
Session.AddInput (aDeviceInput);
else
Console.WriteLine ("Could not add audio device input to the session");
// Add photo output
var po = new AVCapturePhotoOutput ();
if (Session.CanAddOutput (po)) {
Session.AddOutput (po);
photoOutput = po;
photoOutput.IsHighResolutionCaptureEnabled = true;
} else {
Console.WriteLine ("Could not add photo output to the session");
setupResult = SetupResult.SessionConfigurationFailed;
Session.CommitConfiguration ();
return;
}
// We will not create an AVCaptureMovieFileOutput when configuring the session because the AVCaptureMovieFileOutput does not support movie recording with AVCaptureSessionPresetPhoto
backgroundRecordingID = -1;
Session.CommitConfiguration ();
DispatchQueue.MainQueue.DispatchAsync (ConfigureManualHUD);
}