Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios

This commit is contained in:
Ilya Laktyushin 2024-12-28 14:42:08 +04:00
commit bc6b9b1b61
2 changed files with 87 additions and 1 deletions

View File

@ -44,7 +44,8 @@ let package = Package(
"MediaPlayerFramePreview.swift",
"VideoPlayerProxy.swift",
"ChunkMediaPlayer.swift",
"ChunkMediaPlayerV2.swift"
"ChunkMediaPlayerV2.swift",
"ChunkMediaPlayerDirectFetchSourceImpl.swift"
]),
]
)

View File

@ -10,6 +10,91 @@ private let internal_isHardwareAv1Supported: Bool = {
let value = VTIsHardwareDecodeSupported(kCMVideoCodecType_AV1)
return value
}()
public final class ChunkMediaPlayerPart {
public enum Id: Hashable {
case tempFile(path: String)
case directFile(path: String, audio: DirectStream?, video: DirectStream?)
}
public struct DirectStream: Hashable {
public let index: Int
public let startPts: CMTime
public let endPts: CMTime
public let duration: Double
public init(index: Int, startPts: CMTime, endPts: CMTime, duration: Double) {
self.index = index
self.startPts = startPts
self.endPts = endPts
self.duration = duration
}
}
public enum Content {
public final class TempFile {
public let file: TempBoxFile
public init(file: TempBoxFile) {
self.file = file
}
deinit {
TempBox.shared.dispose(self.file)
}
}
public final class FFMpegDirectFile {
public let path: String
public let audio: DirectStream?
public let video: DirectStream?
public init(path: String, audio: DirectStream?, video: DirectStream?) {
self.path = path
self.audio = audio
self.video = video
}
}
case tempFile(TempFile)
case directFile(FFMpegDirectFile)
}
public let startTime: Double
public let endTime: Double
public let content: Content
public let clippedStartTime: Double?
public let codecName: String?
public var id: Id {
switch self.content {
case let .tempFile(tempFile):
return .tempFile(path: tempFile.file.path)
case let .directFile(directFile):
return .directFile(path: directFile.path, audio: directFile.audio, video: directFile.video)
}
}
public init(startTime: Double, clippedStartTime: Double? = nil, endTime: Double, content: Content, codecName: String?) {
self.startTime = startTime
self.clippedStartTime = clippedStartTime
self.endTime = endTime
self.content = content
self.codecName = codecName
}
}
public final class ChunkMediaPlayerPartsState {
public let duration: Double?
public let parts: [ChunkMediaPlayerPart]
public init(duration: Double?, parts: [ChunkMediaPlayerPart]) {
self.duration = duration
self.parts = parts
}
}
#endif
public enum MediaDataReaderReadSampleBufferResult {