public void StartBackgroundPlayback() { if (!IsEnabled) { return; } IScreenControl screenControl = ServiceRegistration.Get <IScreenControl>(); IVideoPlayerSynchronizationStrategy current = screenControl.VideoPlayerSynchronizationStrategy; if (current != _backgroundPlayerStrategy) { // We replace the default strategy with our own to prefer the video background player. screenControl.VideoPlayerSynchronizationStrategy = _backgroundPlayerStrategy; } IPlayerManager playerManager = ServiceRegistration.Get <IPlayerManager>(); if (_backgroundPsc == null) { _backgroundPsc = playerManager.OpenSlot(); } if (_backgroundPsc == null) { return; } // If we already have a player active, don't start a new one. IPlayer currentPlayer = _backgroundPsc.CurrentPlayer; if (currentPlayer != null && currentPlayer.State == PlayerState.Active) { return; } try { _backgroundPsc.Play(_video, StartTime.AtOnce); BaseDXPlayer player = _backgroundPsc.CurrentPlayer as BaseDXPlayer; if (player != null) { player.AutoRepeat = true; } VideoPlayer = player as ISharpDXVideoPlayer; } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Error("VideoBackgroundModel: Error opening MediaItem {0} for background playback!", ex, _videoFilename); } }
protected bool DoPlay_NoLock(MediaItem mediaItem, StartTime startTime) { if (mediaItem == null) { return(false); } _currentMediaItem = mediaItem; IPlayerSlotController psc = _slotController; if (psc == null) { return(false); } return(!psc.IsClosed && psc.Play(mediaItem, startTime)); }
protected bool DoPlay_NoLock(MediaItem mediaItem, StartTime startTime) { if (mediaItem == null) { return(false); } IServerConnectionManager scm = ServiceRegistration.Get <IServerConnectionManager>(); IContentDirectory cd = scm.ContentDirectory; if (cd != null) { cd.NotifyPlayback(mediaItem.MediaItemId); } _currentMediaItem = mediaItem; IPlayerSlotController psc = _slotController; if (psc == null) { return(false); } return(!psc.IsClosed && psc.Play(mediaItem, startTime)); }