[Temp] Input panel progress

This commit is contained in:
Ali
2022-06-21 21:47:01 +01:00
parent abe701f625
commit 0f1b382265
44 changed files with 1728 additions and 196 deletions

View File

@@ -5,6 +5,7 @@ import TelegramCore
import SwiftSignalKit
import CoreMedia
import UniversalMediaPlayer
import AVFoundation
public let softwareVideoApplyQueue = Queue()
public let softwareVideoWorkers = ThreadPool(threadCount: 3, threadPriority: 0.2)
@@ -25,7 +26,8 @@ public final class SoftwareVideoLayerFrameManager {
private let resource: MediaResource
private let secondaryResource: MediaResource?
private let queue: ThreadPoolQueue
private let layerHolder: SampleBufferLayer
private let layerHolder: SampleBufferLayer?
private weak var layer: AVSampleBufferDisplayLayer?
private var rotationAngle: CGFloat = 0.0
private var aspect: CGFloat = 1.0
@@ -33,9 +35,9 @@ public final class SoftwareVideoLayerFrameManager {
private var layerRotationAngleAndAspect: (CGFloat, CGFloat)?
private var didStart = false
var started: () -> Void = { }
public var started: () -> Void = { }
public init(account: Account, fileReference: FileMediaReference, layerHolder: SampleBufferLayer, hintVP9: Bool = false) {
public init(account: Account, fileReference: FileMediaReference, layerHolder: SampleBufferLayer?, layer: AVSampleBufferDisplayLayer? = nil, hintVP9: Bool = false) {
var resource = fileReference.media.resource
var secondaryResource: MediaResource?
for attribute in fileReference.media.attributes {
@@ -54,8 +56,9 @@ public final class SoftwareVideoLayerFrameManager {
self.secondaryResource = secondaryResource
self.queue = ThreadPoolQueue(threadPool: softwareVideoWorkers)
self.layerHolder = layerHolder
layerHolder.layer.videoGravity = .resizeAspectFill
layerHolder.layer.masksToBounds = true
self.layer = layer ?? layerHolder?.layer
self.layer?.videoGravity = .resizeAspectFill
self.layer?.masksToBounds = true
self.fetchDisposable = fetchedMediaResource(mediaBox: account.postbox.mediaBox, reference: fileReference.resourceReference(resource)).start()
}
@@ -139,8 +142,8 @@ public final class SoftwareVideoLayerFrameManager {
for i in (0 ... latestFrameIndex).reversed() {
self.frames.remove(at: i)
}
if self.layerHolder.layer.status == .failed {
self.layerHolder.layer.flush()
if self.layer?.status == .failed {
self.layer?.flush()
}
/*if self.layerRotationAngleAndAspect?.0 != self.rotationAngle || self.layerRotationAngleAndAspect?.1 != self.aspect {
self.layerRotationAngleAndAspect = (self.rotationAngle, self.aspect)
@@ -150,7 +153,7 @@ public final class SoftwareVideoLayerFrameManager {
}
self.layerHolder.layer.setAffineTransform(transform)
}*/
self.layerHolder.layer.enqueue(frame.sampleBuffer)
self.layer?.enqueue(frame.sampleBuffer)
if !self.didStart {
self.didStart = true