示例#1
0
        public EsStreamController(EsPlayerPacketStorage storage, Window window)
        {
            if (SynchronizationContext.Current == null)
            {
                throw new ArgumentNullException(nameof(SynchronizationContext.Current));
            }

            _syncCtx = SynchronizationContext.Current;

            // Create placeholder to data streams & chunk states
            esStreams         = new EsStream[(int)StreamType.Count];
            playbackErrorSubs = new IDisposable[(int)StreamType.Count];

            _playerClock                 = new PlayerClockProvider(_clockScheduler);
            dataSynchronizer             = new Synchronizer(_playerClock);
            _dataClock                   = new DataClockProvider(_clockScheduler, _playerClock);
            _dataClock.SynchronizerClock = dataSynchronizer.Pts();

            packetStorage = storage;
            displayWindow = window;

            try
            {
                player = new ESPlayer.ESPlayer();
                OpenPlayer();
            }
            catch (Exception e)
            {
                logger.Error(e);
            }
        }
示例#2
0
        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();
        }