Ejemplo n.º 1
0
        /// <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();
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 5
0
        /// <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;
        }
Ejemplo n.º 7
0
        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;
                }
            }
        }
Ejemplo n.º 8
0
        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();
        }