Various fixes

This commit is contained in:
Ilya Laktyushin 2023-07-07 02:10:09 +02:00
parent fa6c21fb11
commit eb07ea17e7
5 changed files with 58 additions and 29 deletions

View File

@ -82,7 +82,11 @@ final class CameraDeviceContext {
private var preferredMaxDimensions: CMVideoDimensions {
if self.additional {
if case .iPhoneXS = DeviceModel.current {
return CMVideoDimensions(width: 1440, height: 1080)
} else {
return CMVideoDimensions(width: 1920, height: 1440)
}
} else {
return CMVideoDimensions(width: 1920, height: 1080)
}

View File

@ -86,7 +86,7 @@ final class CameraDevice {
let subtype = CMFormatDescriptionGetMediaSubType(format.formatDescription)
if subtype == kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange {
for range in format.videoSupportedFrameRateRanges {
if range.maxFrameRate > maxFramerate {
if range.maxFrameRate > 60 {
continue outer
}
}
@ -104,11 +104,23 @@ final class CameraDevice {
}
}
if let bestFormat = candidates.last {
device.activeFormat = bestFormat
if !candidates.isEmpty {
var bestFormat: AVCaptureDevice.Format?
outer: for format in candidates {
for range in format.videoSupportedFrameRateRanges {
if range.maxFrameRate > 60 {
continue outer
}
bestFormat = format
}
}
if bestFormat == nil {
bestFormat = candidates.last
}
device.activeFormat = bestFormat!
Logger.shared.log("Camera", "Selected format:")
Logger.shared.log("Camera", bestFormat.description)
Logger.shared.log("Camera", bestFormat!.description)
} else {
Logger.shared.log("Camera", "No format selected")
}

View File

@ -47,7 +47,7 @@ public extension Camera {
}
}
enum DeviceModel: CaseIterable {
enum DeviceModel: CaseIterable, Equatable {
static var allCases: [DeviceModel] {
return [
.iPodTouch1,
@ -72,6 +72,9 @@ enum DeviceModel: CaseIterable {
case iPodTouch6
case iPodTouch7
case iPhoneX
case iPhoneXS
case iPhone12
case iPhone12Mini
case iPhone12Pro
@ -89,48 +92,52 @@ enum DeviceModel: CaseIterable {
case unknown(String)
var modelId: String? {
var modelId: [String] {
switch self {
case .iPodTouch1:
return "iPod1,1"
return ["iPod1,1"]
case .iPodTouch2:
return "iPod2,1"
return ["iPod2,1"]
case .iPodTouch3:
return "iPod3,1"
return ["iPod3,1"]
case .iPodTouch4:
return "iPod4,1"
return ["iPod4,1"]
case .iPodTouch5:
return "iPod5,1"
return ["iPod5,1"]
case .iPodTouch6:
return "iPod7,1"
return ["iPod7,1"]
case .iPodTouch7:
return "iPod9,1"
return ["iPod9,1"]
case .iPhoneX:
return ["iPhone11,2"]
case .iPhoneXS:
return ["iPhone11,4", "iPhone11,6"]
case .iPhone12:
return "iPhone13,2"
return ["iPhone13,2"]
case .iPhone12Mini:
return "iPhone13,1"
return ["iPhone13,1"]
case .iPhone12Pro:
return "iPhone13,3"
return ["iPhone13,3"]
case .iPhone12ProMax:
return "iPhone13,4"
return ["iPhone13,4"]
case .iPhone13:
return "iPhone14,5"
return ["iPhone14,5"]
case .iPhone13Mini:
return "iPhone14,4"
return ["iPhone14,4"]
case .iPhone13Pro:
return "iPhone14,2"
return ["iPhone14,2"]
case .iPhone13ProMax:
return "iPhone14,3"
return ["iPhone14,3"]
case .iPhone14:
return "iPhone14,7"
return ["iPhone14,7"]
case .iPhone14Plus:
return "iPhone14,8"
return ["iPhone14,8"]
case .iPhone14Pro:
return "iPhone15,2"
return ["iPhone15,2"]
case .iPhone14ProMax:
return "iPhone15,3"
return ["iPhone15,3"]
case let .unknown(modelId):
return modelId
return [modelId]
}
}
@ -150,6 +157,10 @@ enum DeviceModel: CaseIterable {
return "iPod touch 6G"
case .iPodTouch7:
return "iPod touch 7G"
case .iPhoneX:
return "iPhone X"
case .iPhoneXS:
return "iPhone XS"
case .iPhone12:
return "iPhone 12"
case .iPhone12Mini:
@ -200,7 +211,7 @@ enum DeviceModel: CaseIterable {
var result: DeviceModel?
if let modelCode {
for model in DeviceModel.allCases {
if model.modelId == modelCode {
if model.modelId.contains(modelCode) {
result = model
break
}

View File

@ -1973,7 +1973,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
} else {
self.previewContainerView.alpha = 1.0
if CACurrentMediaTime() - self.initializationTimestamp > 0.2 {
if CACurrentMediaTime() - self.initializationTimestamp > 0.2, case .image = subject {
self.previewContainerView.layer.allowsGroupOpacity = true
self.previewContainerView.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25, completion: { _ in
self.previewContainerView.layer.allowsGroupOpacity = false
@ -2330,6 +2330,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate
if let view = self.componentHost.view as? MediaEditorScreenComponent.View {
view.animateIn(from: .camera, completion: completion)
}
if let subject = self.subject, case let .video(_, mainTransitionImage, _, _, additionalTransitionImage, _, _, positionChangeTimestamps, pipPosition) = subject, let mainTransitionImage {
var transitionImage = mainTransitionImage
if let additionalTransitionImage {

View File

@ -2220,6 +2220,7 @@ public final class StoryItemSetContainerComponent: Component {
self.controlsContainerView.addSubview(moreButtonView)
}
transition.setFrame(view: moreButtonView, frame: CGRect(origin: CGPoint(x: headerRightOffset - moreButtonSize.width, y: 2.0), size: moreButtonSize))
transition.setAlpha(view: moreButtonView, alpha: component.slice.item.storyItem.isPending ? 0.0 : 1.0)
headerRightOffset -= moreButtonSize.width + 15.0
}