From 91a7d728e322796e0b618648cc642f9f1c9a08a4 Mon Sep 17 00:00:00 2001 From: Mikhail Filimonov Date: Thu, 2 Jan 2025 07:51:34 +0400 Subject: [PATCH] macos related changes --- submodules/MediaPlayer/Package.swift | 1 - .../Sources/ChunkMediaPlayer.swift | 11 ++- .../Sources/FFMpegFileReader.swift | 30 +++---- .../MediaPlayer/Sources/MediaDataReader.swift | 87 +------------------ .../Sources/GroupCallContext.swift | 2 + 5 files changed, 27 insertions(+), 104 deletions(-) diff --git a/submodules/MediaPlayer/Package.swift b/submodules/MediaPlayer/Package.swift index 79a112c8b1..8fb647e978 100644 --- a/submodules/MediaPlayer/Package.swift +++ b/submodules/MediaPlayer/Package.swift @@ -43,7 +43,6 @@ let package = Package( "MediaPlayerAudioRenderer.swift", "MediaPlayerFramePreview.swift", "VideoPlayerProxy.swift", - "ChunkMediaPlayer.swift", "ChunkMediaPlayerV2.swift", "ChunkMediaPlayerDirectFetchSourceImpl.swift" ]), diff --git a/submodules/MediaPlayer/Sources/ChunkMediaPlayer.swift b/submodules/MediaPlayer/Sources/ChunkMediaPlayer.swift index 2d363ac114..19f7fb2f8f 100644 --- a/submodules/MediaPlayer/Sources/ChunkMediaPlayer.swift +++ b/submodules/MediaPlayer/Sources/ChunkMediaPlayer.swift @@ -1,10 +1,10 @@ import Foundation -import UIKit + import SwiftSignalKit import Postbox import CoreMedia import TelegramCore -import TelegramAudio + public final class ChunkMediaPlayerPart { public enum Id: Hashable { @@ -118,6 +118,11 @@ public final class ChunkMediaPlayerPartsState { } } +#if os(iOS) + +import UIKit +import TelegramAudio + public protocol ChunkMediaPlayer: AnyObject { var status: Signal { get } var audioLevelEvents: Signal { get } @@ -136,3 +141,5 @@ public protocol ChunkMediaPlayer: AnyObject { func seek(timestamp: Double, play: Bool?) func setBaseRate(_ baseRate: Double) } + +#endif diff --git a/submodules/MediaPlayer/Sources/FFMpegFileReader.swift b/submodules/MediaPlayer/Sources/FFMpegFileReader.swift index 6f1cf016ed..7441f2eaa7 100644 --- a/submodules/MediaPlayer/Sources/FFMpegFileReader.swift +++ b/submodules/MediaPlayer/Sources/FFMpegFileReader.swift @@ -62,22 +62,22 @@ private func FFMpegFileReader_seekCallback(userData: UnsafeMutableRawPointer?, o } } -final class FFMpegFileReader { - enum SourceDescription { +public final class FFMpegFileReader { + public enum SourceDescription { case file(String) case resource(mediaBox: MediaBox, resource: MediaResource, size: Int64) } - final class StreamInfo: Equatable { - let index: Int - let codecId: Int32 - let startTime: CMTime - let duration: CMTime - let timeBase: CMTimeValue - let timeScale: CMTimeScale - let fps: CMTime + public final class StreamInfo: Equatable { + public let index: Int + public let codecId: Int32 + public let startTime: CMTime + public let duration: CMTime + public let timeBase: CMTimeValue + public let timeScale: CMTimeScale + 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.codecId = codecId self.startTime = startTime @@ -87,7 +87,7 @@ final class FFMpegFileReader { self.fps = fps } - static func ==(lhs: StreamInfo, rhs: StreamInfo) -> Bool { + public static func ==(lhs: StreamInfo, rhs: StreamInfo) -> Bool { if lhs.index != rhs.index { return false } @@ -169,8 +169,8 @@ final class FFMpegFileReader { } } - enum SelectedStream { - enum MediaType { + public enum SelectedStream { + public enum MediaType { case audio case video } @@ -179,7 +179,7 @@ final class FFMpegFileReader { case index(Int) } - enum ReadFrameResult { + public enum ReadFrameResult { case frame(MediaTrackFrame) case waitingForMoreData case endOfStream diff --git a/submodules/MediaPlayer/Sources/MediaDataReader.swift b/submodules/MediaPlayer/Sources/MediaDataReader.swift index ec7444fcef..38a29aedb5 100644 --- a/submodules/MediaPlayer/Sources/MediaDataReader.swift +++ b/submodules/MediaPlayer/Sources/MediaDataReader.swift @@ -6,95 +6,10 @@ import VideoToolbox import Postbox #if os(macOS) -private let internal_isHardwareAv1Supported: Bool = { +public 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 { diff --git a/submodules/TelegramVoip/Sources/GroupCallContext.swift b/submodules/TelegramVoip/Sources/GroupCallContext.swift index b0af5d23a2..1c2e36f36f 100644 --- a/submodules/TelegramVoip/Sources/GroupCallContext.swift +++ b/submodules/TelegramVoip/Sources/GroupCallContext.swift @@ -1037,7 +1037,9 @@ public final class OngoingGroupCallContext { } func addRemoteConnectedEvent(isRemoteConntected: Bool) { + #if os(iOS) self.context.addRemoteConnectedEvent(isRemoteConntected) + #endif } }