Esempio n. 1
0
        public SessionSetupResult ConfigureSession(AVCaptureSession session)
        {
            var inputDeviceConfigureResult = _videoDeviceInputManager.ConfigureVideoDeviceInput(session);

            if (inputDeviceConfigureResult != SessionSetupResult.Success)
            {
                return(inputDeviceConfigureResult);
            }

            // Add movie file output.
            Console.WriteLine("capture session: configuring - adding movie file input");

            var movieFileOutput = new AVCaptureMovieFileOutput();

            if (session.CanAddOutput(movieFileOutput))
            {
                session.AddOutput(movieFileOutput);
                _videoFileOutput = movieFileOutput;

                DispatchQueue.MainQueue.DispatchAsync(() =>
                {
                    _videoRecordingDelegate?.DidBecomeReadyForVideoRecording(this);
                });
            }
            else
            {
                Console.WriteLine("capture session: could not add video output to the session");
                return(SessionSetupResult.ConfigurationFailed);
            }

            _audioCaptureSession = new AudioCaptureSession();
            _audioCaptureSession.ConfigureSession(session);

            return(SessionSetupResult.Success);
        }
Esempio n. 2
0
        public SessionSetupResult ConfigureSession(AVCaptureSession session,
                                                   SessionPresetConfiguration presetConfiguration)
        {
            _presetConfiguration  = presetConfiguration;
            session.SessionPreset = AVCaptureSession.PresetPhoto;

            var inputDeviceConfigureResult = _videoDeviceInputManager.ConfigureVideoDeviceInput(session);

            if (inputDeviceConfigureResult != SessionSetupResult.Success)
            {
                return(inputDeviceConfigureResult);
            }

            if (!session.CanAddOutput(_photoOutput))
            {
                Console.WriteLine("capture session: could not add photo output to the session");
                return(SessionSetupResult.ConfigurationFailed);
            }

            session.AddOutput(_photoOutput);
            _photoOutput.IsHighResolutionCaptureEnabled = true;

            ConfigureLivePhoto(session);

            _videoDataOutput = new AVCaptureVideoDataOutput();
            if (session.CanAddOutput(_videoDataOutput))
            {
                _videoDataOutput.AlwaysDiscardsLateVideoFrames = true;

                session.AddOutput(_videoDataOutput);
            }
            else
            {
                Console.WriteLine("capture session: warning - could not add video data output to the session");
            }

            return(SessionSetupResult.Success);
        }