mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
51 lines
1.4 KiB
Swift
51 lines
1.4 KiB
Swift
import Foundation
|
|
import AsyncDisplayKit
|
|
import Display
|
|
import AVFoundation
|
|
|
|
private final class CameraPreviewNodeLayerNullAction: NSObject, CAAction {
|
|
@objc func run(forKey event: String, object anObject: Any, arguments dict: [AnyHashable : Any]?) {
|
|
}
|
|
}
|
|
|
|
private final class CameraPreviewNodeLayer: AVSampleBufferDisplayLayer {
|
|
override func action(forKey event: String) -> CAAction? {
|
|
return CameraPreviewNodeLayerNullAction()
|
|
}
|
|
}
|
|
|
|
public final class CameraPreviewNode: ASDisplayNode {
|
|
private var displayLayer: AVSampleBufferDisplayLayer
|
|
|
|
public override init() {
|
|
self.displayLayer = AVSampleBufferDisplayLayer()
|
|
self.displayLayer.videoGravity = .resizeAspectFill
|
|
|
|
super.init()
|
|
|
|
self.clipsToBounds = true
|
|
|
|
self.layer.addSublayer(self.displayLayer)
|
|
}
|
|
|
|
func prepare() {
|
|
DispatchQueue.main.async {
|
|
self.displayLayer.flushAndRemoveImage()
|
|
}
|
|
}
|
|
|
|
func enqueue(_ sampleBuffer: CMSampleBuffer) {
|
|
self.displayLayer.enqueue(sampleBuffer)
|
|
}
|
|
|
|
override public func layout() {
|
|
super.layout()
|
|
|
|
var transform = CGAffineTransform(rotationAngle: CGFloat.pi / 2.0)
|
|
transform = transform.scaledBy(x: 1.0, y: 1.0)
|
|
self.displayLayer.setAffineTransform(transform)
|
|
|
|
self.displayLayer.frame = self.bounds
|
|
}
|
|
}
|