mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-06 17:00:13 +00:00
Revert "Fix channel video playback on iOS. < 17.5"
This reverts commit 8b89834d15014d8edb63d3b62ce9f07e507231a4.
This commit is contained in:
parent
41ac4b5130
commit
3c3632c646
@ -91,12 +91,10 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
private let renderSynchronizer: AVSampleBufferRenderSynchronizer
|
||||
private var videoRenderer: AVSampleBufferDisplayLayer
|
||||
private var audioRenderer: AVSampleBufferAudioRenderer?
|
||||
private weak var videoNode: MediaPlayerNode?
|
||||
|
||||
private var partsState = ChunkMediaPlayerPartsState(duration: nil, parts: [])
|
||||
private var loadedParts: [LoadedPart] = []
|
||||
private var loadedPartsMediaData: QueueLocalObject<LoadedPartsMediaData>
|
||||
private var reportedDidEnqueueVideo: Bool = false
|
||||
private var hasSound: Bool = false
|
||||
|
||||
private var statusValue: MediaPlayerStatus? {
|
||||
@ -175,7 +173,6 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
assertionFailure()
|
||||
}
|
||||
self.videoRenderer = playerNode.videoLayer ?? AVSampleBufferDisplayLayer()
|
||||
self.videoNode = playerNode
|
||||
|
||||
self.updateTimer = Foundation.Timer.scheduledTimer(withTimeInterval: 1.0 / 60.0, repeats: true, block: { [weak self] _ in
|
||||
guard let self else {
|
||||
@ -680,8 +677,8 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
|
||||
videoTarget.requestMediaDataWhenReady(on: self.dataQueue.queue, using: { [weak self] in
|
||||
if let loadedPartsMediaData = loadedPartsMediaData.unsafeGet() {
|
||||
let fillResult = ChunkMediaPlayerV2.fillRendererBuffer(bufferTarget: videoTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: true)
|
||||
if fillResult.isReadyForMoreData {
|
||||
let bufferIsReadyForMoreData = ChunkMediaPlayerV2.fillRendererBuffer(bufferTarget: videoTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: true)
|
||||
if bufferIsReadyForMoreData {
|
||||
videoTarget.stopRequestingMediaData()
|
||||
Queue.mainQueue().async {
|
||||
guard let self else {
|
||||
@ -698,12 +695,11 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
if !self.audioIsRequestingMediaData, let audioRenderer = self.audioRenderer {
|
||||
self.audioIsRequestingMediaData = true
|
||||
let loadedPartsMediaData = self.loadedPartsMediaData
|
||||
let reportedDidEnqueueVideo = self.reportedDidEnqueueVideo
|
||||
let audioTarget = audioRenderer
|
||||
audioTarget.requestMediaDataWhenReady(on: self.dataQueue.queue, using: { [weak self] in
|
||||
if let loadedPartsMediaData = loadedPartsMediaData.unsafeGet() {
|
||||
let fillResult = ChunkMediaPlayerV2.fillRendererBuffer(bufferTarget: audioTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: false)
|
||||
if fillResult.isReadyForMoreData {
|
||||
let bufferIsReadyForMoreData = ChunkMediaPlayerV2.fillRendererBuffer(bufferTarget: audioTarget, loadedPartsMediaData: loadedPartsMediaData, isVideo: false)
|
||||
if bufferIsReadyForMoreData {
|
||||
audioTarget.stopRequestingMediaData()
|
||||
Queue.mainQueue().async {
|
||||
guard let self else {
|
||||
@ -713,28 +709,13 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
self.updateInternalState()
|
||||
}
|
||||
}
|
||||
if fillResult.didEnqueue && !reportedDidEnqueueVideo {
|
||||
Queue.mainQueue().async {
|
||||
guard let self else {
|
||||
return
|
||||
}
|
||||
self.reportedDidEnqueueVideo = true
|
||||
if #available(iOS 17.4, *) {
|
||||
} else {
|
||||
if let videoNode = self.videoNode {
|
||||
videoNode.notifyHasSentFramesToDisplay()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
private static func fillRendererBuffer(bufferTarget: AVQueuedSampleBufferRendering, loadedPartsMediaData: LoadedPartsMediaData, isVideo: Bool) -> (isReadyForMoreData: Bool, didEnqueue: Bool) {
|
||||
private static func fillRendererBuffer(bufferTarget: AVQueuedSampleBufferRendering, loadedPartsMediaData: LoadedPartsMediaData, isVideo: Bool) -> Bool {
|
||||
var bufferIsReadyForMoreData = true
|
||||
var didEnqeue = false
|
||||
outer: while true {
|
||||
if !bufferTarget.isReadyForMoreMediaData {
|
||||
bufferIsReadyForMoreData = false
|
||||
@ -774,7 +755,9 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
continue outer
|
||||
}
|
||||
}
|
||||
didEnqeue = true
|
||||
/*if isVideo {
|
||||
print("Enqueue \(isVideo ? "video" : "audio") at \(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).seconds) \(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).value)/\(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).timescale) next \(CMSampleBufferGetPresentationTimeStamp(sampleBuffer).value + CMSampleBufferGetDuration(sampleBuffer).value)")
|
||||
}*/
|
||||
bufferTarget.enqueue(sampleBuffer)
|
||||
hasData = true
|
||||
continue outer
|
||||
@ -787,7 +770,7 @@ public final class ChunkMediaPlayerV2: ChunkMediaPlayer {
|
||||
}
|
||||
}
|
||||
|
||||
return (bufferIsReadyForMoreData, didEnqeue)
|
||||
return bufferIsReadyForMoreData
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -444,11 +444,4 @@ public final class MediaPlayerNode: ASDisplayNode {
|
||||
}
|
||||
self.updateVideoInHierarchy?(self.videoInHierarchy || self.canPlaybackWithoutHierarchy)
|
||||
}
|
||||
|
||||
func notifyHasSentFramesToDisplay() {
|
||||
if !self.didNotifyVideoLayerReadyForDisplay {
|
||||
self.didNotifyVideoLayerReadyForDisplay = true
|
||||
self.hasSentFramesToDisplay?()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -28,6 +28,7 @@ public struct HLSCodecConfiguration {
|
||||
public extension HLSCodecConfiguration {
|
||||
init(context: AccountContext) {
|
||||
var isSoftwareAv1Supported = false
|
||||
var isHardwareAv1Supported = false
|
||||
|
||||
var length: Int = 4
|
||||
var cpuCount: UInt32 = 0
|
||||
@ -43,10 +44,6 @@ public extension HLSCodecConfiguration {
|
||||
isSoftwareAv1Supported = value != 0.0
|
||||
}
|
||||
|
||||
if "".isEmpty {
|
||||
isSoftwareAv1Supported = false
|
||||
}
|
||||
|
||||
self.init(isHardwareAv1Supported: isHardwareAv1Supported, isSoftwareAv1Supported: isSoftwareAv1Supported)
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user