Example #1
0
        /// <summary>
        /// Set decoded video chroma and dimensions. This only works in combination with
        /// <see cref="SetVideoCallbacks" />
        /// </summary>
        /// <param name="videoFormat">Callback to select the video format (cannot be NULL)</param>
        /// <param name="cleanup">Callback to release any allocated resources (or NULL)</param>
        public void SetVideoFormatCallbacks(VideoFormatCallback videoFormat, CleanupVideoCallback cleanup)
        {
            if (videoFormat == null)
            {
                throw new ArgumentNullException(nameof(videoFormat));
            }

            this._videoFormatCallbackReference = videoFormat;
            this._cleanupCallbackReference     = cleanup;

            this.Manager.SetVideoFormatCallbacks(this.myMediaPlayerInstance, this._videoFormatCallbackReference, this._cleanupCallbackReference);
        }
        public MemoryRendererEx(IntPtr hMediaPlayer)
        {
            m_hMediaPlayer = hMediaPlayer;

            LockEventHandler    leh            = OnpLock;
            DisplayEventHandler deh            = OnpDisplay;
            VideoFormatCallback formatCallback = OnFormatCallback;

            pFormatCallback  = Marshal.GetFunctionPointerForDelegate(formatCallback);
            pLockCallback    = Marshal.GetFunctionPointerForDelegate(leh);
            pDisplayCallback = Marshal.GetFunctionPointerForDelegate(deh);

            m_callbacks.Add(leh);
            m_callbacks.Add(deh);
            m_callbacks.Add(formatCallback);

            m_timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
            m_timer.Interval = 1000;
            SAR = AspectRatio.Default;
            LibVlcMethods.libvlc_video_set_format_callbacks(m_hMediaPlayer, pFormatCallback, IntPtr.Zero);
            LibVlcMethods.libvlc_video_set_callbacks(m_hMediaPlayer, pLockCallback, IntPtr.Zero, pDisplayCallback, IntPtr.Zero);
        }
Example #3
0
 public void SetVideoFormatCallback(VideoFormatCallback formatCallback, VideoCleanupCallback cleanupCallback)
 {
     _setVideoFormatCallbackFunction.Delegate(InstancePointer, formatCallback, cleanupCallback);
 }
Example #4
0
        public void Initialize(String libVlcPath, String[] libVlcOption)
        {
            if (ApiManager.IsInitialized)
                return;

            ApiManager.Initialize(libVlcPath, libVlcOption);
            VlcMediaPlayer = ApiManager.Vlc.CreateMediaPlayer();
            VlcMediaPlayer.PositionChanged += VlcMediaPlayerPositionChanged;
            VlcMediaPlayer.TimeChanged += VlcMediaPlayerTimeChanged;
            VlcMediaPlayer.Playing += VlcMediaPlayerStateChanged;
            VlcMediaPlayer.Paused += VlcMediaPlayerStateChanged;
            VlcMediaPlayer.Stoped += VlcMediaPlayerStateChanged;
            VlcMediaPlayer.Opening += VlcMediaPlayerStateChanged;
            VlcMediaPlayer.Buffering += VlcMediaPlayerStateChanged;
            VlcMediaPlayer.EndReached += VlcMediaPlayerStateChanged;
            VlcMediaPlayer.SeekableChanged += VlcMediaPlayerSeekableChanged;
            VlcMediaPlayer.LengthChanged += VlcMediaPlayerLengthChanged;

            _lockCallback = VideoLockCallback;
            _unlockCallback = VideoUnlockCallback;
            _displayCallback = VideoDisplayCallback;
            _formatCallback = VideoFormatCallback;
            _cleanupCallback = VideoCleanupCallback;

            _lockCallbackHandle = GCHandle.Alloc(_lockCallback);
            _unlockCallbackHandle = GCHandle.Alloc(_unlockCallback);
            _displayCallbackHandle = GCHandle.Alloc(_displayCallback);
            _formatCallbackHandle = GCHandle.Alloc(_formatCallback);
            _cleanupCallbackHandle = GCHandle.Alloc(_cleanupCallback);
        }
Example #5
0
        /// <summary>
        ///     Initialize VLC player with path of LibVlc and options.
        /// </summary>
        /// <param name="libVlcPath"></param>
        /// <param name="libVlcOption"></param>
        public void Initialize(String libVlcPath, params String[] libVlcOption)
        {
            if (!ApiManager.IsInitialized)
            {
                ApiManager.Initialize(libVlcPath, libVlcOption);
            }

            switch (CreateMode)
            {
            case PlayerCreateMode.NewVlcInstance:
                var vlc = new Vlc(libVlcOption);
                VlcMediaPlayer = vlc.CreateMediaPlayer();
                ApiManager.Vlcs.Add(vlc);
                break;

            case PlayerCreateMode.Default:
            default:
                VlcMediaPlayer = ApiManager.DefaultVlc.CreateMediaPlayer();
                break;
            }

            if (VlcMediaPlayer != null)
            {
                VlcMediaPlayer.PositionChanged += VlcMediaPlayerPositionChanged;
                VlcMediaPlayer.TimeChanged     += VlcMediaPlayerTimeChanged;
                VlcMediaPlayer.Playing         += VlcMediaPlayerStateChanged;
                VlcMediaPlayer.Paused          += VlcMediaPlayerStateChanged;
                VlcMediaPlayer.Stoped          += VlcMediaPlayerStateChanged;
                VlcMediaPlayer.Opening         += VlcMediaPlayerStateChanged;
                VlcMediaPlayer.Buffering       += VlcMediaPlayerStateChanged;
                VlcMediaPlayer.EndReached      += VlcMediaPlayerStateChanged;
                VlcMediaPlayer.SeekableChanged += VlcMediaPlayerSeekableChanged;
                VlcMediaPlayer.LengthChanged   += VlcMediaPlayerLengthChanged;

                _lockCallback    = VideoLockCallback;
                _unlockCallback  = VideoUnlockCallback;
                _displayCallback = VideoDisplayCallback;
                _formatCallback  = VideoFormatCallback;
                _cleanupCallback = VideoCleanupCallback;
                //_audioSetupCallback = AudioFormatSetupCallback;
                //_audioCleanupCallback = AudioFormatCleanupCallback;
                //_audioPlayCallback = AudioPlayCallback;
                //_audioPauseCallback = AudioPauseCallback;
                //_audioResumeCallback = AudioResumeCallback;
                //_audioFlushCallback = AudioFlushCallback;
                //_audioDrainCallback = AudioDrainCallback;
                //_audioSetVolumeCallback = AudioSetVolumeCallback;

                _lockCallbackHandle    = GCHandle.Alloc(_lockCallback);
                _unlockCallbackHandle  = GCHandle.Alloc(_unlockCallback);
                _displayCallbackHandle = GCHandle.Alloc(_displayCallback);
                _formatCallbackHandle  = GCHandle.Alloc(_formatCallback);
                _cleanupCallbackHandle = GCHandle.Alloc(_cleanupCallback);
                //_audioSetupCallbackHandle = GCHandle.Alloc(_audioSetupCallback);
                //_audioCleanupCallbackHandle = GCHandle.Alloc(_audioCleanupCallback);
                //_audioPlayCallbackHandle = GCHandle.Alloc(_audioPlayCallback);
                //_audioPauseCallbackHandle = GCHandle.Alloc(_audioPauseCallback);
                //_audioResumeCallbackHandle = GCHandle.Alloc(_audioResumeCallback);
                //_audioFlushCallbackHandle = GCHandle.Alloc(_audioFlushCallback);
                //_audioDrainCallbackHandle = GCHandle.Alloc(_audioDrainCallback);
                //_audioSetVolumeCallbackHandle = GCHandle.Alloc(_audioSetVolumeCallback);

                VlcMediaPlayer.SetVideoDecodeCallback(_lockCallback, _unlockCallback, _displayCallback, IntPtr.Zero);
                VlcMediaPlayer.SetVideoFormatCallback(_formatCallback, _cleanupCallback);
                //VlcMediaPlayer.SetAudioCallback(_audioPlayCallback, _audioPauseCallback, _audioResumeCallback, _audioFlushCallback, _audioDrainCallback);
                //VlcMediaPlayer.SetAudioFormatCallback(_audioSetupCallback, _audioCleanupCallback);
                //VlcMediaPlayer.SetAudioVolumeCallback(_audioSetVolumeCallback);
            }
        }
Example #6
0
        /// <summary>
        ///     Initialize VLC player with path of LibVlc and options.
        /// </summary>
        /// <param name="libVlcPath"></param>
        /// <param name="libVlcOption"></param>
        public void Initialize(string libVlcPath, params string[] libVlcOption)
        {
            if (!ApiManager.IsInitialized)
            {
                ApiManager.Initialize(libVlcPath, libVlcOption);
            }

            if (VlcMediaPlayer != null)
            {
                throw new InvalidOperationException("VlcPlayer is been initialized.");
            }

            switch (CreateMode)
            {
            case PlayerCreateMode.NewVlcInstance:
                Vlc = new Vlc(libVlcOption);
                ApiManager.Vlcs.Add(Vlc);
                break;

            case PlayerCreateMode.Default:
            default:
                Vlc = ApiManager.DefaultVlc;
                break;
            }

            VlcMediaPlayer player = Vlc.CreateMediaPlayer();

            _lockCallback    = VideoLockCallback;
            _unlockCallback  = VideoUnlockCallback;
            _displayCallback = VideoDisplayCallback;
            _formatCallback  = VideoFormatCallback;
            _cleanupCallback = VideoCleanupCallback;
            //_audioSetupCallback = AudioFormatSetupCallback;
            //_audioCleanupCallback = AudioFormatCleanupCallback;
            //_audioPlayCallback = AudioPlayCallback;
            //_audioPauseCallback = AudioPauseCallback;
            //_audioResumeCallback = AudioResumeCallback;
            //_audioFlushCallback = AudioFlushCallback;
            //_audioDrainCallback = AudioDrainCallback;
            //_audioSetVolumeCallback = AudioSetVolumeCallback;

            _lockCallbackHandle    = GCHandle.Alloc(_lockCallback);
            _unlockCallbackHandle  = GCHandle.Alloc(_unlockCallback);
            _displayCallbackHandle = GCHandle.Alloc(_displayCallback);
            _formatCallbackHandle  = GCHandle.Alloc(_formatCallback);
            _cleanupCallbackHandle = GCHandle.Alloc(_cleanupCallback);
            //_audioSetupCallbackHandle = GCHandle.Alloc(_audioSetupCallback);
            //_audioCleanupCallbackHandle = GCHandle.Alloc(_audioCleanupCallback);
            //_audioPlayCallbackHandle = GCHandle.Alloc(_audioPlayCallback);
            //_audioPauseCallbackHandle = GCHandle.Alloc(_audioPauseCallback);
            //_audioResumeCallbackHandle = GCHandle.Alloc(_audioResumeCallback);
            //_audioFlushCallbackHandle = GCHandle.Alloc(_audioFlushCallback);
            //_audioDrainCallbackHandle = GCHandle.Alloc(_audioDrainCallback);
            //_audioSetVolumeCallbackHandle = GCHandle.Alloc(_audioSetVolumeCallback);

            if (player == null)
            {
                throw new Exception("Vlc media player initialize fail.");
            }

            AttachPlayer(player);
        }
Example #7
0
 public void SetVideoFormatCallbacks(VideoFormatCallback videoFormatCallback, CleanupVideoCallback cleanupCallback)
 {
     myManager.GetInteropDelegate <SetVideoFormatCallbacks>().Invoke(this.Pointer, videoFormatCallback, cleanupCallback);
 }
Example #8
0
 public void SetVideoFormatCallback(VideoFormatCallback formatCallback, VideoCleanupCallback cleanupCallback)
 {
     SetVideoFormatCallbackFunction.Delegate(InstancePointer, formatCallback, cleanupCallback);
 }
        public void SetVideoFormatCallbacks(VlcMediaPlayerInstance mediaPlayerInstance, VideoFormatCallback videoFormatCallback, CleanupVideoCallback cleanupCallback)
        {
            if (mediaPlayerInstance == IntPtr.Zero)
            {
                throw new ArgumentException("Media player instance is not initialized.");
            }

            myLibraryLoader.GetInteropDelegate <SetVideoFormatCallbacks>().Invoke(mediaPlayerInstance, videoFormatCallback, cleanupCallback);
        }