/// <summary> /// Create instance of MediaPlayerIPhone object with additional arguments /// </summary> /// <param name="monoObject">MonoBehaviour instanse</param> /// <param name="videoOutputObjects">Objects that will be rendering video output</param> /// <param name="options">Additional player options</param> public MediaPlayerIPhone(MonoBehaviour monoObject, GameObject[] videoOutputObjects, PlayerOptionsIPhone options) { _monoObject = monoObject; _videoOutputObjects = videoOutputObjects; _options = options; _wrapper = new WrapperInternal(_options); if (_wrapper.NativeIndex < 0) { Debug.LogError("Don't support video playback on current platform or you use incorrect UMP libraries!"); throw new Exception(); } if (_options != null) { _optionsLine = _options.GetOptions('\n'); if (_options.FixedVideoSize != Vector2.zero) { _videoBuffer = new PlayerBufferVideo((int)_options.FixedVideoSize.x, (int)_options.FixedVideoSize.y); _wrapper.NativeSetPixelsBuffer(_videoBuffer.FramePixelsAddr, _videoBuffer.Width, _videoBuffer.Height); } } _wrapper.NativeInitPlayer(_optionsLine); _eventManager = new PlayerManagerEvents(_monoObject, this); _eventManager.PlayerPlayingListener += OnPlayerPlaying; _eventManager.PlayerPausedListener += OnPlayerPaused; }
private void MediaPlayerInit() { _vlcObj = _wrapper.ExpandedLibVLCNew(_arguments); if (_vlcObj == IntPtr.Zero) { throw new Exception("Can't create new libVLC object instance"); } _playerObj = _wrapper.ExpandedMediaPlayerNew(_vlcObj); if (_playerObj == IntPtr.Zero) { throw new Exception("Can't create new media player object instance"); } _eventManagerPtr = _wrapper.ExpandedEventManager(_playerObj); _eventHandlerPtr = _wrapper.NativeMediaPlayerEventCallback(); EventsAttach(_eventManagerPtr, _eventHandlerPtr); _eventManager = new PlayerManagerEvents(_monoObject, this); _eventManager.PlayerPlayingListener += OnPlayerPlaying; _eventManager.PlayerPausedListener += OnPlayerPaused; if (_logDetail != LogLevels.Disable) { _wrapper.ExpandedLogSet(_vlcObj, _wrapper.NativeGetLogMessageCallback(), new IntPtr(_wrapper.NativeIndex)); } _logManager = new PlayerManagerLogs(_monoObject, this); _logManager.LogDetail = _logDetail; _logManager.LogMessageListener += _logListener; _lockPtr = _wrapper.NativeGetVideoLockCallback(); _displayPtr = _wrapper.NativeGetVideoDisplayCallback(); _formatSetupPtr = _wrapper.NativeGetVideoFormatCallback(); _audioFormatPtr = _wrapper.NativeGetAudioSetupCallback(); _audioPlayPtr = _wrapper.NativeGetAudioPlayCallback(); _wrapper.ExpandedVideoSetCallbacks(_playerObj, _lockPtr, IntPtr.Zero, _displayPtr, new IntPtr(_wrapper.NativeIndex)); if (_videoBuffer == null) { _wrapper.ExpandedVideoSetFormatCallbacks(_playerObj, _formatSetupPtr, IntPtr.Zero); } else { _wrapper.ExpandedVideoSetFormat(_playerObj, _videoBuffer.Chroma, (uint)_videoBuffer.Width, (uint)_videoBuffer.Height, (uint)_videoBuffer.Pitch); } if (_audioManager != null && _audioManager.IsValid) { _wrapper.ExpandedAudioSetFormatCallbacks(_playerObj, _audioFormatPtr, IntPtr.Zero); _wrapper.ExpandedAudioSetCallbacks(_playerObj, _audioPlayPtr, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, new IntPtr(_wrapper.NativeIndex)); _wrapper.NativeSetAudioParams(2, AudioSettings.outputSampleRate); } _mediaStats = new MediaStats(); }
public void Release() { Stop(); if (_eventManager != null) { _eventManager.RemoveAllEvents(); _eventManager = null; } _wrapper.PlayerRelease(); }
/// <summary> /// Release current video player /// </summary> public void Release() { if (_playerObj != IntPtr.Zero) { Stop(); } if (_eventManager != null) { _eventManager.RemoveAllEvents(); _eventManager = null; if (_eventHandlerPtr != IntPtr.Zero) { EventsDettach(_eventManagerPtr, _eventHandlerPtr); } } if (_logManager != null) { _logManager.RemoveAllEvents(); if (_logDetail != LogLevels.Disable && _vlcObj != IntPtr.Zero) { _wrapper.ExpandedLogUnset(_vlcObj); } } if (_audioManager != null) { _audioManager.RemoveAllListeners(); } if (_playerObj != IntPtr.Zero) { _wrapper.PlayerRelease(_playerObj); } _playerObj = IntPtr.Zero; if (_vlcObj != IntPtr.Zero) { _wrapper.ExpandedLibVLCRelease(_vlcObj); } _vlcObj = IntPtr.Zero; }
/// <summary> /// Create instance of MediaPlayerAndroid object with additional arguments /// </summary> /// <param name="monoObject">MonoBehaviour instanse</param> /// <param name="videoOutputObjects">Objects that will be rendering video output</param> /// <param name="options">Additional player optons</param> public MediaPlayerAndroid(MonoBehaviour monoObject, GameObject[] videoOutputObjects, PlayerOptionsAndroid options) { _monoObject = monoObject; _videoOutputObjects = videoOutputObjects; _options = options; _wrapper = new WrapperAndroid(_options); if (_wrapper.NativeIndex < 0) { Debug.LogError("Don't support video playback on current platform or you use incorrect UMP libraries!"); throw new Exception(); } _eventManager = new PlayerManagerEvents(_monoObject, this); _eventManager.PlayerPlayingListener += OnPlayerPlaying; _eventManager.PlayerPausedListener += OnPlayerPaused; }
/// <summary> /// Create instance of MediaPlayerWebGL object with additional arguments /// </summary> /// <param name="monoObject">MonoBehaviour instanse</param> /// <param name="videoOutputObjects">Objects that will be rendering video output</param> /// <param name="options">Additional player options</param> public MediaPlayerWebGL(MonoBehaviour monoObject, GameObject[] videoOutputObjects, PlayerOptions options) { _monoObject = monoObject; _videoOutputObjects = videoOutputObjects; _options = options; _wrapper = new WrapperInternal(null); if (_options != null) { if (_options.FixedVideoSize != Vector2.zero) { _videoBuffer = new PlayerBufferVideo((int)_options.FixedVideoSize.x, (int)_options.FixedVideoSize.y); } } _eventManager = new PlayerManagerEvents(_monoObject, this); _eventManager.PlayerPlayingListener += OnPlayerPlaying; _eventManager.PlayerPausedListener += OnPlayerPaused; }
public void CopyPlayerEvents(PlayerManagerEvents events) { RemoveAllEvents(); foreach (Action eh in events._playerOpeningListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerOpeningListener += eh; } } foreach (Action <float> eh in events._playerBufferingListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerBufferingListener += eh; } } foreach (Action <Texture2D> eh in events._playerPreparedListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerPreparedListener += eh; } } foreach (Action eh in events._playerPlayingListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerPlayingListener += eh; } } foreach (Action eh in events._playerPausedListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerPausedListener += eh; } } foreach (Action eh in events._playerStoppedListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerStoppedListener += eh; } } foreach (Action eh in events._playerEndReachedListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerEndReachedListener += eh; } } foreach (Action eh in events._playerEncounteredErrorListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerEncounteredErrorListener += eh; } } foreach (Action <long> eh in events._playerTimeChangedListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerTimeChangedListener += eh; } } foreach (Action <float> eh in events._playerPositionChangedListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerPositionChangedListener += eh; } } foreach (Action <string> eh in events._playerSnapshotTakenListener.GetInvocationList()) { if (!IsNativeEvents(eh.Target)) { PlayerSnapshotTakenListener += eh; } } }
private void MediaPlayerInit() { _vlcObj = _wrapper.ExpandedLibVLCNew(_arguments); if (_vlcObj == IntPtr.Zero) { throw new Exception("Can't create new libVLC object instance"); } _playerObj = _wrapper.ExpandedMediaPlayerNew(_vlcObj); if (_playerObj == IntPtr.Zero) { throw new Exception("Can't create new media player object instance"); } _eventManagerPtr = _wrapper.ExpandedEventManager(_playerObj); _eventHandlerPtr = _wrapper.NativeMediaPlayerEventCallback(); EventsAttach(_eventManagerPtr, _eventHandlerPtr); _eventManager = new PlayerManagerEvents(_monoObject, this); _eventManager.PlayerPlayingListener += OnPlayerPlaying; _eventManager.PlayerPausedListener += OnPlayerPaused; if (_logDetail != LogLevels.Disable) { _wrapper.ExpandedLogSet(_vlcObj, _wrapper.NativeGetLogMessageCallback(), new IntPtr(_wrapper.NativeIndex)); } _logManager = new PlayerManagerLogs(_monoObject, this); _logManager.LogDetail = _logDetail; _logManager.LogMessageListener += _logListener; _lockPtr = _wrapper.NativeGetVideoLockCallback(); _displayPtr = _wrapper.NativeGetVideoDisplayCallback(); _formatSetupPtr = _wrapper.NativeGetVideoFormatCallback(); _audioFormatPtr = _wrapper.NativeGetAudioSetupCallback(); _audioPlayPtr = _wrapper.NativeGetAudioPlayCallback(); _wrapper.ExpandedVideoSetCallbacks(_playerObj, _lockPtr, IntPtr.Zero, _displayPtr, new IntPtr(_wrapper.NativeIndex)); if (_options.FixedVideoSize == Vector2.zero) { _wrapper.ExpandedVideoSetFormatCallbacks(_playerObj, _formatSetupPtr, IntPtr.Zero); } else { _wrapper.ExpandedVideoSetFormat(_playerObj, PlayerBufferVideo.Chroma, (int)_options.FixedVideoSize.x, (int)_options.FixedVideoSize.y, PlayerBufferVideo.CalculatePitch((int)_options.FixedVideoSize.x)); } _manageBufferSizeCallback = InitBufferSize; _wrapper.NativeSetBufferSizeCallback(Marshal.GetFunctionPointerForDelegate(_manageBufferSizeCallback)); if (_audioManager != null && _audioManager.IsValid) { _wrapper.ExpandedAudioSetFormatCallbacks(_playerObj, _audioFormatPtr, IntPtr.Zero); _wrapper.ExpandedAudioSetCallbacks(_playerObj, _audioPlayPtr, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, new IntPtr(_wrapper.NativeIndex)); _wrapper.NativeSetAudioParams(2, AudioSettings.outputSampleRate); } _mediaStats = new MediaStats(); }