mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-23 22:12:43 +00:00
Merge branch 'master' of gitlab.com:peter-iakovlev/telegram-ios
This commit is contained in:
commit
bc6b9b1b61
@ -44,7 +44,8 @@ let package = Package(
|
|||||||
"MediaPlayerFramePreview.swift",
|
"MediaPlayerFramePreview.swift",
|
||||||
"VideoPlayerProxy.swift",
|
"VideoPlayerProxy.swift",
|
||||||
"ChunkMediaPlayer.swift",
|
"ChunkMediaPlayer.swift",
|
||||||
"ChunkMediaPlayerV2.swift"
|
"ChunkMediaPlayerV2.swift",
|
||||||
|
"ChunkMediaPlayerDirectFetchSourceImpl.swift"
|
||||||
]),
|
]),
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
@ -10,6 +10,91 @@ private let internal_isHardwareAv1Supported: Bool = {
|
|||||||
let value = VTIsHardwareDecodeSupported(kCMVideoCodecType_AV1)
|
let value = VTIsHardwareDecodeSupported(kCMVideoCodecType_AV1)
|
||||||
return value
|
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
|
#endif
|
||||||
|
|
||||||
public enum MediaDataReaderReadSampleBufferResult {
|
public enum MediaDataReaderReadSampleBufferResult {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user