mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Camera and editor improvements
This commit is contained in:
@@ -8,9 +8,21 @@ private let defaultFPS: Double = 30.0
|
||||
final class CameraDevice {
|
||||
var position: Camera.Position = .back
|
||||
|
||||
deinit {
|
||||
if let videoDevice = self.videoDevice {
|
||||
self.unsubscribeFromChanges(videoDevice)
|
||||
}
|
||||
}
|
||||
|
||||
public private(set) var videoDevice: AVCaptureDevice? = nil {
|
||||
didSet {
|
||||
if let previousVideoDevice = oldValue {
|
||||
self.unsubscribeFromChanges(previousVideoDevice)
|
||||
}
|
||||
self.videoDevicePromise.set(.single(self.videoDevice))
|
||||
if let videoDevice = self.videoDevice {
|
||||
self.subscribeForChanges(videoDevice)
|
||||
}
|
||||
}
|
||||
}
|
||||
private var videoDevicePromise = Promise<AVCaptureDevice?>()
|
||||
@@ -93,12 +105,12 @@ final class CameraDevice {
|
||||
}
|
||||
}
|
||||
|
||||
private func subscribeForChanges() {
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.subjectAreaChanged), name: Notification.Name.AVCaptureDeviceSubjectAreaDidChange, object: self.videoDevice)
|
||||
private func subscribeForChanges(_ device: AVCaptureDevice) {
|
||||
NotificationCenter.default.addObserver(self, selector: #selector(self.subjectAreaChanged), name: Notification.Name.AVCaptureDeviceSubjectAreaDidChange, object: device)
|
||||
}
|
||||
|
||||
private func unsubscribeFromChanges() {
|
||||
NotificationCenter.default.removeObserver(self, name: Notification.Name.AVCaptureDeviceSubjectAreaDidChange, object: self.videoDevice)
|
||||
private func unsubscribeFromChanges(_ device: AVCaptureDevice) {
|
||||
NotificationCenter.default.removeObserver(self, name: Notification.Name.AVCaptureDeviceSubjectAreaDidChange, object: device)
|
||||
}
|
||||
|
||||
@objc private func subjectAreaChanged() {
|
||||
@@ -171,6 +183,12 @@ final class CameraDevice {
|
||||
device.focusPointOfInterest = point
|
||||
device.focusMode = focusMode
|
||||
}
|
||||
|
||||
device.isSubjectAreaChangeMonitoringEnabled = monitorSubjectAreaChange
|
||||
|
||||
if abs(device.exposureTargetBias) > 0.0 {
|
||||
device.setExposureTargetBias(0.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user