コード例 #1
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();
        }
コード例 #2
0
        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>();
        }