public void OpenVideoFile(MediaPlaylist.MediaItem mediaItem) { bool isMediaAlreadyLoaded = false; if (NextPlayer.MediaPath == mediaItem.mediaPath) { isMediaAlreadyLoaded = true; } if (!mediaItem.isOverrideTransition) { SetTransition(_defaultTransition, _defaultTransitionDuration, _defaultTransitionEasing); } else { SetTransition(mediaItem.overrideTransition, mediaItem.overrideTransitionDuration, mediaItem.overrideTransitionEasing); } this.Loop = NextPlayer.Loop = mediaItem.loop; NextPlayer.MediaPath = new MediaPath(mediaItem.mediaPath); this.MediaPath = new MediaPath(mediaItem.mediaPath); NextPlayer.AudioMuted = _playlistAudioMuted; NextPlayer.AudioVolume = _playlistAudioVolume; if (_transitionTimer < _currentTransitionDuration && _currentTransition != Transition.None) { NextPlayer.AudioVolume = 0f; } if (isMediaAlreadyLoaded) { NextPlayer.Rewind(false); if (_nextItem.startMode == StartMode.Immediate) { NextPlayer.Play(); } // TODO: We probably want to wait until the new frame arrives before swapping after a Rewind() SwapPlayers(); } else { if (string.IsNullOrEmpty(NextPlayer.MediaPath.Path)) { NextPlayer.CloseMedia(); } else { NextPlayer.OpenMedia(NextPlayer.MediaPath.PathType, NextPlayer.MediaPath.Path, _nextItem.startMode == StartMode.Immediate); } } }
public void OpenVideoFile(MediaPlaylist.MediaItem mediaItem) { bool isMediaAlreadyLoaded = false; /* * if (NextPlayer.m_VideoPath == mediaItem.filePath && NextPlayer.m_VideoLocation == mediaItem.fileLocation) * { * isMediaAlreadyLoaded = true; * }*/ if (mediaItem.isOverrideTransition) { SetTransition(mediaItem.overrideTransition, mediaItem.overrideTransitionDuration, mediaItem.overrideTransitionEasing.preset); } else { SetTransition(_nextTransition, _transitionDuration, _transitionEasing.preset); } this.m_Loop = NextPlayer.m_Loop = mediaItem.loop; this.m_AutoStart = NextPlayer.m_AutoStart = mediaItem.autoPlay; this.m_VideoLocation = NextPlayer.m_VideoLocation = mediaItem.fileLocation; this.m_VideoPath = NextPlayer.m_VideoPath = mediaItem.filePath; this.m_StereoPacking = NextPlayer.m_StereoPacking = mediaItem.stereoPacking; this.m_AlphaPacking = NextPlayer.m_AlphaPacking = mediaItem.alphaPacking; if (isMediaAlreadyLoaded) { NextPlayer.Rewind(false); if (_nextItem.startMode == StartMode.Immediate) { NextPlayer.Play(); } // TODO: We probably want to wait until the new frame arrives before swapping after a Rewind() SwapPlayers(); } else { if (string.IsNullOrEmpty(NextPlayer.m_VideoPath)) { NextPlayer.CloseVideo(); } else { //NextPlayer.m_AutoStart = false; NextPlayer.OpenVideoFromFile(NextPlayer.m_VideoLocation, NextPlayer.m_VideoPath, _nextItem.startMode == StartMode.Immediate); } } }
public bool JumpToItem(int index) { if (_playlistLoopMode == PlaylistLoopMode.Loop) { if (_playlist.Items.Count > 0) { index %= _playlist.Items.Count; if (index < 0) { index += _playlist.Items.Count; } } } if (_playlist.HasItemAt(index)) { _playlistIndex = index; _nextItem = _playlist.Items[_playlistIndex]; OpenVideoFile(_nextItem); return(true); } return(false); }
public void OpenVideoFile(MediaPlaylist.MediaItem mediaItem) { bool isMediaAlreadyLoaded = false; if (NextPlayer.m_VideoPath == mediaItem.filePath && NextPlayer.m_VideoLocation == mediaItem.fileLocation) { isMediaAlreadyLoaded = true; } SetTransition(_nextTransition); this.m_Loop = NextPlayer.m_Loop = mediaItem.loop; this.m_VideoLocation = NextPlayer.m_VideoLocation = mediaItem.fileLocation; this.m_VideoPath = NextPlayer.m_VideoPath = mediaItem.filePath; this.m_StereoPacking = NextPlayer.m_StereoPacking = mediaItem.stereoPacking; this.m_AlphaPacking = NextPlayer.m_AlphaPacking = mediaItem.alphaPacking; if (isMediaAlreadyLoaded) { NextPlayer.Rewind(false); NextPlayer.Play(); // TODO: We probably want to wait until the new frame arrives before swapping after a Rewind() SwapPlayers(); } else { if (string.IsNullOrEmpty(NextPlayer.m_VideoPath)) { NextPlayer.CloseVideo(); } else { //NextPlayer.m_AutoStart = false; NextPlayer.OpenVideoFromFile(NextPlayer.m_VideoLocation, NextPlayer.m_VideoPath, true); } } }
private void SwapPlayers() { // Pause the previously playing video // This is useful for systems that will struggle to play 2 videos at once if (_pausePreviousOnTransition) { CurrentPlayer.Pause(); } // Tell listeners that the playlist item has changed Events.Invoke(this, MediaPlayerEvent.EventType.PlaylistItemChanged, ErrorCode.None); // Start the transition if (_currentTransition != Transition.None) { // Create a new transition texture if required Texture currentTexture = GetCurrentTexture(); Texture nextTexture = GetNextTexture(); if (currentTexture != null && nextTexture != null) { int maxWidth = Mathf.Max(nextTexture.width, currentTexture.width); int maxHeight = Mathf.Max(nextTexture.height, currentTexture.height); if (_rt != null) { if (_rt.width != maxWidth || _rt.height != maxHeight) { RenderTexture.ReleaseTemporary(_rt = null); } } if (_rt == null) { _rt = RenderTexture.GetTemporary(maxWidth, maxHeight, 0, RenderTextureFormat.Default, RenderTextureReadWrite.Default, 1); Graphics.Blit(currentTexture, _rt); } _material.SetTexture(_propFromTex, currentTexture); _easeFunc = Easing.GetFunction(_currentTransitionEasing); _transitionTimer = 0f; } else { _transitionTimer = _currentTransitionDuration; } } // Swap the videos if (NextPlayer == _playerA) { _nextPlayer = _playerB; } else { _nextPlayer = _playerA; } // Swap the items _currentItem = _nextItem; _nextItem = null; }