Swiftgram/submodules/AccountContext/Sources/IsMediaStreamable.swift
2024-09-18 01:04:29 +08:00

61 lines
1.5 KiB
Swift

import Foundation
import Postbox
import TelegramCore
private let minimalStreamableSize: Int = 384 * 1024
public func isMediaStreamable(message: Message, media: TelegramMediaFile) -> Bool {
if message.containsSecretMedia {
return false
}
if message.id.peerId.namespace == Namespaces.Peer.SecretChat {
return false
}
guard let size = media.size else {
return false
}
if size < minimalStreamableSize {
return false
}
for attribute in media.attributes {
if case let .Video(_, _, flags, _, _, _) = attribute {
if flags.contains(.supportsStreaming) {
return true
}
break
}
}
#if DEBUG
if let fileName = media.fileName, fileName.hasSuffix(".mkv") {
return true
}
#endif
return false
}
public func isMediaStreamable(media: TelegramMediaFile) -> Bool {
guard let size = media.size else {
return false
}
if size < minimalStreamableSize {
return false
}
for attribute in media.attributes {
if case let .Video(_, _, flags, _, _, _) = attribute {
if flags.contains(.supportsStreaming) {
return true
}
break
}
}
return false
}
public func isMediaStreamable(resource: MediaResource) -> Bool {
if let size = resource.size, size >= minimalStreamableSize {
return true
} else {
return false
}
}