mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
macos related changes
This commit is contained in:
parent
04eb8524c8
commit
91a7d728e3
@ -43,7 +43,6 @@ let package = Package(
|
|||||||
"MediaPlayerAudioRenderer.swift",
|
"MediaPlayerAudioRenderer.swift",
|
||||||
"MediaPlayerFramePreview.swift",
|
"MediaPlayerFramePreview.swift",
|
||||||
"VideoPlayerProxy.swift",
|
"VideoPlayerProxy.swift",
|
||||||
"ChunkMediaPlayer.swift",
|
|
||||||
"ChunkMediaPlayerV2.swift",
|
"ChunkMediaPlayerV2.swift",
|
||||||
"ChunkMediaPlayerDirectFetchSourceImpl.swift"
|
"ChunkMediaPlayerDirectFetchSourceImpl.swift"
|
||||||
]),
|
]),
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import Foundation
|
import Foundation
|
||||||
import UIKit
|
|
||||||
import SwiftSignalKit
|
import SwiftSignalKit
|
||||||
import Postbox
|
import Postbox
|
||||||
import CoreMedia
|
import CoreMedia
|
||||||
import TelegramCore
|
import TelegramCore
|
||||||
import TelegramAudio
|
|
||||||
|
|
||||||
public final class ChunkMediaPlayerPart {
|
public final class ChunkMediaPlayerPart {
|
||||||
public enum Id: Hashable {
|
public enum Id: Hashable {
|
||||||
@ -118,6 +118,11 @@ public final class ChunkMediaPlayerPartsState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if os(iOS)
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
import TelegramAudio
|
||||||
|
|
||||||
public protocol ChunkMediaPlayer: AnyObject {
|
public protocol ChunkMediaPlayer: AnyObject {
|
||||||
var status: Signal<MediaPlayerStatus, NoError> { get }
|
var status: Signal<MediaPlayerStatus, NoError> { get }
|
||||||
var audioLevelEvents: Signal<Float, NoError> { get }
|
var audioLevelEvents: Signal<Float, NoError> { get }
|
||||||
@ -136,3 +141,5 @@ public protocol ChunkMediaPlayer: AnyObject {
|
|||||||
func seek(timestamp: Double, play: Bool?)
|
func seek(timestamp: Double, play: Bool?)
|
||||||
func setBaseRate(_ baseRate: Double)
|
func setBaseRate(_ baseRate: Double)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -62,22 +62,22 @@ private func FFMpegFileReader_seekCallback(userData: UnsafeMutableRawPointer?, o
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final class FFMpegFileReader {
|
public final class FFMpegFileReader {
|
||||||
enum SourceDescription {
|
public enum SourceDescription {
|
||||||
case file(String)
|
case file(String)
|
||||||
case resource(mediaBox: MediaBox, resource: MediaResource, size: Int64)
|
case resource(mediaBox: MediaBox, resource: MediaResource, size: Int64)
|
||||||
}
|
}
|
||||||
|
|
||||||
final class StreamInfo: Equatable {
|
public final class StreamInfo: Equatable {
|
||||||
let index: Int
|
public let index: Int
|
||||||
let codecId: Int32
|
public let codecId: Int32
|
||||||
let startTime: CMTime
|
public let startTime: CMTime
|
||||||
let duration: CMTime
|
public let duration: CMTime
|
||||||
let timeBase: CMTimeValue
|
public let timeBase: CMTimeValue
|
||||||
let timeScale: CMTimeScale
|
public let timeScale: CMTimeScale
|
||||||
let fps: CMTime
|
public let fps: CMTime
|
||||||
|
|
||||||
init(index: Int, codecId: Int32, startTime: CMTime, duration: CMTime, timeBase: CMTimeValue, timeScale: CMTimeScale, fps: CMTime) {
|
public init(index: Int, codecId: Int32, startTime: CMTime, duration: CMTime, timeBase: CMTimeValue, timeScale: CMTimeScale, fps: CMTime) {
|
||||||
self.index = index
|
self.index = index
|
||||||
self.codecId = codecId
|
self.codecId = codecId
|
||||||
self.startTime = startTime
|
self.startTime = startTime
|
||||||
@ -87,7 +87,7 @@ final class FFMpegFileReader {
|
|||||||
self.fps = fps
|
self.fps = fps
|
||||||
}
|
}
|
||||||
|
|
||||||
static func ==(lhs: StreamInfo, rhs: StreamInfo) -> Bool {
|
public static func ==(lhs: StreamInfo, rhs: StreamInfo) -> Bool {
|
||||||
if lhs.index != rhs.index {
|
if lhs.index != rhs.index {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -169,8 +169,8 @@ final class FFMpegFileReader {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum SelectedStream {
|
public enum SelectedStream {
|
||||||
enum MediaType {
|
public enum MediaType {
|
||||||
case audio
|
case audio
|
||||||
case video
|
case video
|
||||||
}
|
}
|
||||||
@ -179,7 +179,7 @@ final class FFMpegFileReader {
|
|||||||
case index(Int)
|
case index(Int)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ReadFrameResult {
|
public enum ReadFrameResult {
|
||||||
case frame(MediaTrackFrame)
|
case frame(MediaTrackFrame)
|
||||||
case waitingForMoreData
|
case waitingForMoreData
|
||||||
case endOfStream
|
case endOfStream
|
||||||
|
@ -6,95 +6,10 @@ import VideoToolbox
|
|||||||
import Postbox
|
import Postbox
|
||||||
|
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
private let internal_isHardwareAv1Supported: Bool = {
|
public 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 {
|
||||||
|
@ -1037,7 +1037,9 @@ public final class OngoingGroupCallContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func addRemoteConnectedEvent(isRemoteConntected: Bool) {
|
func addRemoteConnectedEvent(isRemoteConntected: Bool) {
|
||||||
|
#if os(iOS)
|
||||||
self.context.addRemoteConnectedEvent(isRemoteConntected)
|
self.context.addRemoteConnectedEvent(isRemoteConntected)
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user