private void OnBufferingChanged(object sender, BufferingChangedEventArgs e) { if (sender == CurrentPlaybackManager) { BufferingChanged?.Invoke(sender, e); } }
private void ObserveLoadedTimeRanges() { var loadedTimeRanges = _player.CurrentItem.LoadedTimeRanges; if (loadedTimeRanges.Length > 0) { var range = loadedTimeRanges[0].CMTimeRangeValue; var duration = TimeSpan.FromSeconds(range.Duration.Seconds); var totalDuration = _player.CurrentItem.Duration; var bufferProgress = duration.TotalSeconds / totalDuration.Seconds; BufferingChanged?.Invoke(this, new BufferingChangedEventArgs(bufferProgress, duration)); } BufferingChanged?.Invoke(this, new BufferingChangedEventArgs(0, TimeSpan.Zero)); }
private void ObserveLoadedTimeRanges() { var loadedTimeRanges = CurrentItem.LoadedTimeRanges; var hasLoadedAnyTimeRanges = loadedTimeRanges != null && loadedTimeRanges.Length > 0; if (hasLoadedAnyTimeRanges) { var range = loadedTimeRanges[0].CMTimeRangeValue; var duration = TimeSpan.FromSeconds(range.Duration.Seconds); var totalDuration = CurrentItem.Duration; var bufferProgress = duration.TotalSeconds / totalDuration.Seconds; BufferingChanged?.Invoke(this, new BufferingChangedEventArgs(bufferProgress, duration)); } else { BufferingChanged?.Invoke(this, new BufferingChangedEventArgs(0, TimeSpan.Zero)); } }
internal void OnServiceConnected(MediaServiceBinder serviceBinder) { Binder = serviceBinder; isBound = true; if (AlternateRemoteCallback != null) { GetMediaPlayerService().AlternateRemoteCallback = AlternateRemoteCallback; } //serviceGetMediaPlayerService().CoverReloaded += (object sender, EventArgs e) => { instance.CoverReloaded?.Invoke(sender, e); }; GetMediaPlayerService().StatusChanged += (object sender, StatusChangedEventArgs e) => { StatusChanged?.Invoke(this, e); }; GetMediaPlayerService().PlayingChanged += (sender, args) => { PlayingChanged?.Invoke(this, args); }; GetMediaPlayerService().BufferingChanged += (sender, args) => { BufferingChanged?.Invoke(this, args); }; GetMediaPlayerService().MediaFinished += (sender, args) => { MediaFinished?.Invoke(this, args); }; GetMediaPlayerService().MediaFileFailed += (sender, args) => { MediaFileFailed?.Invoke(this, args); }; GetMediaPlayerService().MediaFailed += (sender, args) => { MediaFailed?.Invoke(this, args); }; GetMediaPlayerService().SetMediaSession(_sessionManager); }
public AudioPlayerImplementation() { _player = new MediaPlayer(); _playProgressTimer = new Timer(state => { if (_player.PlaybackSession.PlaybackState == MediaPlaybackState.Playing) { var progress = _player.PlaybackSession.Position.TotalSeconds / _player.PlaybackSession.NaturalDuration.TotalSeconds; if (double.IsNaN(progress)) { progress = 0; } PlayingChanged?.Invoke(this, new PlayingChangedEventArgs(progress, _player.PlaybackSession.Position, _player.PlaybackSession.NaturalDuration)); } }, null, 0, int.MaxValue); _player.MediaFailed += (sender, args) => { _status = MediaPlayerStatus.Failed; _playProgressTimer.Change(0, int.MaxValue); MediaFailed?.Invoke(this, new MediaFailedEventArgs(args.ErrorMessage, args.ExtendedErrorCode)); }; _player.PlaybackSession.PlaybackStateChanged += (sender, args) => { switch (sender.PlaybackState) { case MediaPlaybackState.None: _playProgressTimer.Change(0, int.MaxValue); break; case MediaPlaybackState.Opening: Status = MediaPlayerStatus.Loading; _playProgressTimer.Change(0, int.MaxValue); break; case MediaPlaybackState.Buffering: Status = MediaPlayerStatus.Buffering; _playProgressTimer.Change(0, int.MaxValue); break; case MediaPlaybackState.Playing: if (sender.PlaybackRate <= 0 && sender.Position == TimeSpan.Zero) { Status = MediaPlayerStatus.Stopped; } else { Status = MediaPlayerStatus.Playing; _playProgressTimer.Change(0, 50); } break; case MediaPlaybackState.Paused: Status = MediaPlayerStatus.Paused; _playProgressTimer.Change(0, int.MaxValue); break; default: throw new ArgumentOutOfRangeException(); } }; _player.MediaEnded += (sender, args) => { MediaFinished?.Invoke(this, new MediaFinishedEventArgs(_currentMediaFile)); }; _player.PlaybackSession.BufferingProgressChanged += (sender, args) => { var bufferedTime = TimeSpan.FromSeconds(_player.PlaybackSession.BufferingProgress * _player.PlaybackSession.NaturalDuration.TotalSeconds); BufferingChanged?.Invoke(this, new BufferingChangedEventArgs(_player.PlaybackSession.BufferingProgress, bufferedTime)); }; _player.PlaybackSession.SeekCompleted += (sender, args) => { }; }
protected virtual void OnBufferingChanged(BufferingChangedEventArgs e) { BufferingChanged?.Invoke(this, e); }
internal void OnBufferingChanged(ulong previous, ulong current, ulong limit) { MainEventSource.Log.DataChannelBufferingChanged(ID, previous, current, limit); BufferingChanged?.Invoke(previous, current, limit); }
internal void OnBufferingChanged(ulong previous, ulong current, ulong limit) { BufferingChanged?.Invoke(previous, current, limit); }
public void OnBufferingChanged(object sender, BufferingChangedEventArgs e) => BufferingChanged?.Invoke(sender, e);
public VideoPlayerImplementation(IVolumeManager volumeManager) { _volumeManager = volumeManager; _player = new MediaPlayer(); _playProgressTimer = new Timer(state => { if (_player.PlaybackSession.PlaybackState == MediaPlaybackState.Playing) { var progress = _player.PlaybackSession.Position.TotalSeconds / _player.PlaybackSession.NaturalDuration.TotalSeconds; if (double.IsInfinity(progress)) { progress = 0; } PlayingChanged?.Invoke(this, new PlayingChangedEventArgs(progress, _player.PlaybackSession.Position, _player.PlaybackSession.NaturalDuration)); } }, null, 0, int.MaxValue); _player.MediaFailed += (sender, args) => { _status = MediaPlayerStatus.Failed; _playProgressTimer.Change(0, int.MaxValue); MediaFailed?.Invoke(this, new MediaFailedEventArgs(args.ErrorMessage, args.ExtendedErrorCode)); }; _player.PlaybackSession.PlaybackStateChanged += (sender, args) => { switch (sender.PlaybackState) { case MediaPlaybackState.None: _playProgressTimer.Change(0, int.MaxValue); break; case MediaPlaybackState.Opening: Status = MediaPlayerStatus.Loading; _playProgressTimer.Change(0, int.MaxValue); break; case MediaPlaybackState.Buffering: Status = MediaPlayerStatus.Buffering; _playProgressTimer.Change(0, int.MaxValue); break; case MediaPlaybackState.Playing: if ((sender.PlaybackRate <= 0) && (sender.Position == TimeSpan.Zero)) { Status = MediaPlayerStatus.Stopped; } else { Status = MediaPlayerStatus.Playing; _playProgressTimer.Change(0, 50); } break; case MediaPlaybackState.Paused: Status = MediaPlayerStatus.Paused; _playProgressTimer.Change(0, int.MaxValue); break; default: throw new ArgumentOutOfRangeException(); } }; _player.MediaEnded += (sender, args) => { MediaFinished?.Invoke(this, new MediaFinishedEventArgs(_currentMediaFile)); }; _player.PlaybackSession.BufferingProgressChanged += (sender, args) => { var bufferedTime = TimeSpan.FromSeconds(_player.PlaybackSession.BufferingProgress * _player.PlaybackSession.NaturalDuration.TotalSeconds); BufferingChanged?.Invoke(this, new BufferingChangedEventArgs(_player.PlaybackSession.BufferingProgress, bufferedTime)); }; _player.PlaybackSession.SeekCompleted += (sender, args) => { }; _player.MediaOpened += (sender, args) => { _loadMediaTaskCompletionSource.SetResult(true); }; _volumeManager.CurrentVolume = (float)_player.Volume; _volumeManager.Mute = _player.IsMuted; _volumeManager.VolumeChanged += VolumeManagerOnVolumeChanged; }