Swiftgram/submodules/MediaPlayer/Sources/MediaFrameSource.swift
2019-06-16 00:51:10 +01:00

32 lines
967 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)
func seek(timestamp: Double) -> Signal<QueueLocalObject<MediaFrameSourceSeekResult>, MediaFrameSourceSeekError>
}