void airplayServer_PlaybackPositionChanged(object sender, PlaybackPositionEventArgs e) { AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>(); if (currentVideoPlayer != null) { if (e.Position >= 0 && e.Position <= currentVideoPlayer.Duration.TotalSeconds) { currentVideoPlayer.CurrentTime = TimeSpan.FromSeconds(e.Position); } } else { lock (videoInfoSync) { if (currentVideoUrl == null && e.SessionId == lastVideoSessionId && lastVideoUrl != null) { airplayServer.SetPlaybackState(currentVideoSessionId, PlaybackCategory.Video, ShairportSharp.Airplay.PlaybackState.Loading); currentVideoSessionId = lastVideoSessionId; currentVideoUrl = lastVideoUrl; startVideoLoading(currentVideoUrl, lastUseMPUrlSourceFilter); } } } }
void airplayServer_PlaybackInfoRequested(object sender, PlaybackInfoEventArgs e) { AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>(); if (currentVideoPlayer != null) { PlaybackInfo playbackInfo = e.PlaybackInfo; playbackInfo.Duration = currentVideoPlayer.Duration.TotalSeconds; playbackInfo.Position = currentVideoPlayer.CurrentTime.TotalSeconds; playbackInfo.PlaybackLikelyToKeepUp = true; playbackInfo.ReadyToPlay = true; PlaybackTimeRange timeRange = new PlaybackTimeRange(); timeRange.Duration = playbackInfo.Duration; playbackInfo.LoadedTimeRanges.Add(timeRange); playbackInfo.SeekableTimeRanges.Add(timeRange); if (currentVideoPlayer.IsPaused) { playbackInfo.Rate = 0; } else { playbackInfo.Rate = 1; } } }
void airplayServer_GetPlaybackPosition(object sender, GetPlaybackPositionEventArgs e) { AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>(); if (currentVideoPlayer != null) { e.Duration = currentVideoPlayer.Duration.TotalSeconds; e.Position = currentVideoPlayer.CurrentTime.TotalSeconds; } }
void airplayServer_PlaybackRateChanged(object sender, PlaybackRateEventArgs e) { AirplayVideoPlayer currentVideoPlayer = getPlayer <AirplayVideoPlayer>(); if (currentVideoPlayer != null) { if (e.Rate > 0) { if (currentVideoPlayer.IsPaused) { currentVideoPlayer.Resume(); } } else if (e.Rate == 0) { if (!currentVideoPlayer.IsPaused) { currentVideoPlayer.Pause(); } } } }