Swiftgram/submodules/MediaPlayer/Sources/MediaFrameSource.swift
2023-05-31 21:25:51 +04:00

32 lines
997 B
Swift

import Foundation
import SwiftSignalKit
import CoreMedia
public enum MediaTrackEvent {
case frames([MediaTrackDecodableFrame])
case endOfStream
}
public final class MediaFrameSourceSeekResult {
public let buffers: MediaPlaybackBuffers
public let extraDecodedVideoFrames: [MediaTrackFrame]
public let timestamp: CMTime
public init(buffers: MediaPlaybackBuffers, extraDecodedVideoFrames: [MediaTrackFrame], timestamp: CMTime) {
self.buffers = buffers
self.extraDecodedVideoFrames = extraDecodedVideoFrames
self.timestamp = timestamp
}
}
public enum MediaFrameSourceSeekError {
case generic
}
public protocol MediaFrameSource {
func addEventSink(_ f: @escaping (MediaTrackEvent) -> Void) -> Int
func removeEventSink(_ index: Int)
func generateFrames(until timestamp: Double, types: [MediaTrackFrameType])
func seek(timestamp: Double) -> Signal<QueueLocalObject<MediaFrameSourceSeekResult>, MediaFrameSourceSeekError>
}