Swiftgram/TelegramUI/MediaFrameSource.swift
2018-01-09 13:18:08 +04:00

30 lines
753 B
Swift

import Foundation
import SwiftSignalKit
import CoreMedia
enum MediaTrackEvent {
case frames([MediaTrackDecodableFrame])
case endOfStream
}
final class MediaFrameSourceSeekResult {
let buffers: MediaPlaybackBuffers
let timestamp: CMTime
init(buffers: MediaPlaybackBuffers, timestamp: CMTime) {
self.buffers = buffers
self.timestamp = timestamp
}
}
enum MediaFrameSourceSeekError {
case generic
}
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>
}