Beispiel #1
0
        protected EventManager(IEventProvider eventProvider)
        {
            m_eventProvider = eventProvider;

            m_callback  = MediaPlayerEventOccured;
            m_hCallback = Marshal.GetFunctionPointerForDelegate(m_callback);
        }
Beispiel #2
0
 public static void Attach(IntPtr event_manager, libvlc_event_e eType, VlcEventHandlerDelegate handler)
 {
     if (LibVlcMethods.libvlc_event_attach(event_manager, eType, Marshal.GetFunctionPointerForDelegate(handler), IntPtr.Zero) != 0)
     {
         throw new OutOfMemoryException("Failed to subscribe to event notification");
     }
 }
Beispiel #3
0
        protected EventManager(IEventProvider eventProvider)
        {
            m_eventProvider = eventProvider;

            VlcEventHandlerDelegate callback1 = MediaPlayerEventOccured;

            hCallback1 = Marshal.GetFunctionPointerForDelegate(callback1);
            m_callbacks.Add(callback1);
        }
Beispiel #4
0
        private void Initialize()
        {
            opaqueForCallbacks             = Marshal.AllocHGlobal(4);
            vlcVideoLockHandlerDelegate    = VlcVideoLockCallBack;
            vlcVideoUnlockHandlerDelegate  = VlcVideoUnlockCallBack;
            vlcVideoDisplayHandlerDelegate = VlcVideoDisplayCallBack;
            media = new IntPtr();


            mediaPlayer = LibVlcMethods.libvlc_media_player_new(LibVLC);
            LibVlcMethods.libvlc_media_player_retain(mediaPlayer);

            //Handle some VLC events!
            VlcEventHandlerDelegate h = VlcEventHandler;
            IntPtr ptr          = Marshal.GetFunctionPointerForDelegate(h);
            IntPtr eventManager = LibVlcMethods.libvlc_media_player_event_manager(mediaPlayer);
        }
        /// <summary>
        /// 是否开启视频帧解析
        /// </summary>
        /// <param name="isoncallback"></param>
        public VlcPlayerCore(bool isoncallback = false)
        {
            this.isoncallback = isoncallback;
            string[] args = new string[]
            {
                "-I",
                "dumy",
                "--ignore-config",
                "--no-osd",
                "--disable-screensaver",
                "--ffmpeg-hw",
                "--plugin-path=./plugins"
            };

            dMediaPlaying        = MediaPlaying;
            dMediaPaused         = MediaPaused;
            dMediaPos            = MediaPos;
            dMediaStoped         = MediaStoped;
            dMediaEndReached     = MediaEndReached;
            dlockEventHandler    = mLockEventHandler;
            dunlockEventHandler  = mUnlockEventHandler;
            ddisplayEventHandler = mDisplayEventHandler;

            m_hMediaLib     = LibVlcMethods.libvlc_new(args.Length, args);
            m_hMediaPlayer  = LibVlcMethods.libvlc_media_player_new(m_hMediaLib);
            m_hEventManager = LibVlcMethods.libvlc_media_player_event_manager(m_hMediaPlayer);

            EventManager.Attach(m_hEventManager, libvlc_event_e.libvlc_MediaPlayerPlaying, dMediaPlaying);
            EventManager.Attach(m_hEventManager, libvlc_event_e.libvlc_MediaPlayerPaused, dMediaPaused);
            EventManager.Attach(m_hEventManager, libvlc_event_e.libvlc_MediaPlayerPositionChanged, dMediaPos);
            EventManager.Attach(m_hEventManager, libvlc_event_e.libvlc_MediaPlayerStopped, dMediaStoped);
            EventManager.Attach(m_hEventManager, libvlc_event_e.libvlc_MediaPlayerEndReached, dMediaEndReached);

            if (isoncallback)
            {
                //LibVlcMethods.libvlc_video_set_format(m_hMediaPlayer, new char[] { 'R', 'V', '3', '2' }, frameWidth, height, frameWidth * framePixelBits);
                LibVlcMethods.libvlc_video_set_callbacks(m_hMediaPlayer, dlockEventHandler, dunlockEventHandler, ddisplayEventHandler, IntPtr.Zero);
            }
        }
Beispiel #6
0
 public static void Dettach(IntPtr event_manager, libvlc_event_e eType, VlcEventHandlerDelegate handler)
 {
     LibVlcMethods.libvlc_event_detach(event_manager, eType, Marshal.GetFunctionPointerForDelegate(handler), IntPtr.Zero);
 }