From ff3b954ed8c3fc85c5207ebca4ed506f4450564e Mon Sep 17 00:00:00 2001 From: nelanelanela Date: Tue, 13 Jan 2015 15:04:42 +0000 Subject: [PATCH] Crash when trying to capture a still image fixed. --- .../UserInterfaceState.xcuserstate | Bin 69239 -> 95283 bytes camera/CameraManager.swift | 137 +++++++++++------- camera/ViewController.swift | 2 +- 3 files changed, 87 insertions(+), 52 deletions(-) diff --git a/camera.xcodeproj/project.xcworkspace/xcuserdata/nataliaterlecka.xcuserdatad/UserInterfaceState.xcuserstate b/camera.xcodeproj/project.xcworkspace/xcuserdata/nataliaterlecka.xcuserdatad/UserInterfaceState.xcuserstate index f0bcd21a223c6b059aeca64959924f09aeec1035..1638a5e4e7e5f506a09f8611b42147169cbac7bc 100644 GIT binary patch literal 95283 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

g)=e^P&w&Kco@<{#F)(#@BJ{COwoge7 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%0A{sarbdAyf`{CR(lFR%ui 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 delta 30899 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 diff --git a/camera/CameraManager.swift b/camera/CameraManager.swift index 37107c8..a33c521 100644 --- a/camera/CameraManager.swift +++ b/camera/CameraManager.swift @@ -160,53 +160,7 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { } set(newCameraOutputMode) { if newCameraOutputMode != self.currentCameraOutputMode { - self.captureSession?.beginConfiguration() - - // remove current setting - switch self.currentCameraOutputMode { - case .StillImage: - if let validStillImageOutput = self.stillImageOutput? { - self.captureSession?.removeOutput(validStillImageOutput) - } - case .VideoOnly, .VideoWithMic: - if let validMovieOutput = self.movieOutput? { - self.captureSession?.removeOutput(validMovieOutput) - } - if self.currentCameraOutputMode == .VideoWithMic { - if let validMic = self.mic? { - self.captureSession?.removeInput(validMic) - } - } - } - // configure new devices - switch newCameraOutputMode { - case .StillImage: - if (self.stillImageOutput == nil) { - self._setupOutputs() - } - if let validStillImageOutput = self.stillImageOutput? { - self.captureSession?.addOutput(validStillImageOutput) - } - case .VideoOnly, .VideoWithMic: - if (self.movieOutput == nil) { - self._setupOutputs() - } - if let validMovieOutput = self.movieOutput? { - self.captureSession?.addOutput(validMovieOutput) - } - if newCameraOutputMode == .VideoWithMic { - if (self.mic == nil) { - self._setupMic() - } - if let validMic = self.mic? { - self.captureSession?.addInput(validMic) - } - } - } - self.captureSession?.commitConfiguration() - self._orientationChanged() - - self.currentCameraOutputMode = newCameraOutputMode + self._setupOutputMode(newCameraOutputMode) } } } @@ -379,7 +333,7 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { func startRecordingVideo() { if self.cameraOutputMode != .StillImage { - self.movieOutput?.startRecordingToOutputFileURL(self.tempFilePath, recordingDelegate: self) + self._getMovieOutput().startRecordingToOutputFileURL(self.tempFilePath, recordingDelegate: self) } else { self._show("Capture session output still image", message: "I can only take pictures") } @@ -439,6 +393,38 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { } } + private func _getMovieOutput() -> AVCaptureMovieFileOutput + { + var shouldReinitializeMovieOutput = self.movieOutput == nil + if !shouldReinitializeMovieOutput { + if let connection = self.movieOutput!.connectionWithMediaType(AVMediaTypeVideo) { + shouldReinitializeMovieOutput = shouldReinitializeMovieOutput || !connection.active + } + } + + if shouldReinitializeMovieOutput { + self.movieOutput = AVCaptureMovieFileOutput() + self.captureSession?.addOutput(self.movieOutput) + } + return self.movieOutput! + } + + private func _getCaptureSession() -> AVCaptureSession + { + var shouldReinitializeCaptureSession = self.captureSession == nil + if !shouldReinitializeCaptureSession { + shouldReinitializeCaptureSession = shouldReinitializeCaptureSession || !self.captureSession!.running + shouldReinitializeCaptureSession = shouldReinitializeCaptureSession || self.captureSession!.interrupted + } + + if shouldReinitializeCaptureSession { + self.captureSession = AVCaptureSession() + self._setupOutputs() + self._setupPreviewLayer() + } + return self.captureSession! + } + @objc private func _orientationChanged() { var currentConnection: AVCaptureConnection?; @@ -446,7 +432,7 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { case .StillImage: currentConnection = self.stillImageOutput?.connectionWithMediaType(AVMediaTypeVideo) case .VideoOnly, .VideoWithMic: - currentConnection = self.movieOutput?.connectionWithMediaType(AVMediaTypeVideo) + currentConnection = self._getMovieOutput().connectionWithMediaType(AVMediaTypeVideo) } if let validPreviewLayer = self.previewLayer? { @@ -491,7 +477,7 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { validCaptureSession.sessionPreset = AVCaptureSessionPresetHigh self._addVideoInput() self._setupOutputs() - self.cameraOutputMode = self.currentCameraOutputMode + self._setupOutputMode(self.currentCameraOutputMode) self.cameraOutputQuality = self.currentCameraOutputQuality self._setupPreviewLayer() validCaptureSession.commitConfiguration() @@ -582,7 +568,56 @@ class CameraManager: NSObject, AVCaptureFileOutputRecordingDelegate { } } } - + + private func _setupOutputMode(newCameraOutputMode: CameraOutputMode) + { + self.captureSession?.beginConfiguration() + + if (self.currentCameraOutputMode != newCameraOutputMode) { + // remove current setting + switch self.currentCameraOutputMode { + case .StillImage: + if let validStillImageOutput = self.stillImageOutput? { + self.captureSession?.removeOutput(validStillImageOutput) + } + case .VideoOnly, .VideoWithMic: + if let validMovieOutput = self.movieOutput? { + self.captureSession?.removeOutput(validMovieOutput) + } + if self.currentCameraOutputMode == .VideoWithMic { + if let validMic = self.mic? { + self.captureSession?.removeInput(validMic) + } + } + } + } + + // configure new devices + switch newCameraOutputMode { + case .StillImage: + if (self.stillImageOutput == nil) { + self._setupOutputs() + } + if let validStillImageOutput = self.stillImageOutput? { + self.captureSession?.addOutput(validStillImageOutput) + } + case .VideoOnly, .VideoWithMic: + self.captureSession?.addOutput(self._getMovieOutput()) + + if newCameraOutputMode == .VideoWithMic { + if (self.mic == nil) { + self._setupMic() + } + if let validMic = self.mic? { + self.captureSession?.addInput(validMic) + } + } + } + self.captureSession?.commitConfiguration() + self.currentCameraOutputMode = newCameraOutputMode; + self._orientationChanged() + } + private func _setupOutputs() { if (self.stillImageOutput == nil) { diff --git a/camera/ViewController.swift b/camera/ViewController.swift index 46a73fc..10475e7 100644 --- a/camera/ViewController.swift +++ b/camera/ViewController.swift @@ -26,7 +26,7 @@ class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - self.cameraManager.addPreviewLayerToView(self.cameraView, newCameraOutputMode: CameraOutputMode.VideoWithMic) + self.cameraManager.addPreviewLayerToView(self.cameraView, newCameraOutputMode: CameraOutputMode.StillImage) self.cameraManager.cameraDevice = .Front self.imageView.hidden = true CameraManager.sharedInstance.showErrorBlock = { (erTitle: String, erMessage: String) -> Void in