mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-24 07:05:35 +00:00
[Temp] Input panel progress
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user