void ConfigureSession ()
{
if (setupResult != SessionSetupResult.Success)
return;
session.BeginConfiguration ();
var videoDevice = DeviceWithMediaType (AVMediaType.Video, AVCaptureDevicePosition.Back);
NSError err;
var vDeviceInput = AVCaptureDeviceInput.FromDevice (videoDevice, out err);
if (err != null) {
Console.WriteLine ($"Could not create video device input: ${err}");
setupResult = SessionSetupResult.ConfigurationFailed;
session.CommitConfiguration ();
return;
}
if (session.CanAddInput (vDeviceInput)) {
session.AddInput (vDeviceInput);
videoDeviceInput = vDeviceInput;
} else {
Console.WriteLine ("Could not add video device input to the session");
setupResult = SessionSetupResult.ConfigurationFailed;
session.CommitConfiguration ();
return;
}
// Add metadata output.
if (session.CanAddOutput (metadataOutput)) {
session.AddOutput (metadataOutput);
// Set this view controller as the delegate for metadata objects.
metadataOutput.SetDelegate (this, metadataObjectsQueue);
metadataOutput.MetadataObjectTypes = metadataOutput.AvailableMetadataObjectTypes; // Use all metadata object types by default.
metadataOutput.RectOfInterest = CGRect.Empty;
} else {
Console.WriteLine ("Could not add metadata output to the session");
setupResult = SessionSetupResult.ConfigurationFailed;
session.CommitConfiguration ();
return;
}
session.CommitConfiguration ();
}