public EsStreamController(EsPlayerPacketStorage storage, Window window) { _playerClock = new PlayerClockProvider(_clockScheduler); _dataClock = new DataClockProvider(_clockScheduler); _suspendResumeLogic = new SuspendResumeLogic(SuspendPlayback, ResumePlayback, SetPlayerState, GetVideoPlayerState, SetDataTransferState, activeTaskCts.Token); displayWindow = window; CreatePlayer(); packetStorage = storage; // Create placeholder to data streams & chunk states esStreams = new EsStream[(int)StreamType.Count]; streamReconfigureSubs = new IDisposable[(int)StreamType.Count]; playbackErrorSubs = new IDisposable[(int)StreamType.Count]; dataSynchronizer = new Synchronizer(_playerClock); AttachEventHandlers(); }
public EsStream(StreamType type, EsPlayerPacketStorage storage, Synchronizer synchronizer, SuspendResumeLogic suspendRedumeLogic) { streamType = type; packetStorage = storage; _dataSynchronizer = synchronizer; _dataSynchronizer.Initialize(streamType); _suspendResumeLogic = suspendRedumeLogic; switch (streamType) { case StreamType.Audio: PushStreamConfig = PushAudioConfig; break; case StreamType.Video: PushStreamConfig = PushVideoConfig; break; default: throw new ArgumentException($"Stream Type {streamType} is unsupported"); } _firstDataPacketTcs = new TaskCompletionSource <object>(); }