/// <summary> /// Constructor of VlcControl /// </summary> public VlcControl() { if (!Application.Current.IsRunningOutOfBrowser) { return; } VideoBrush = new ImageBrush(); if (!VlcContext.IsInitialized) { VlcContext.Initialize(); } VlcContext.HandleManager.MediaPlayerHandles[this] = VlcContext.InteropManager.MediaPlayerInterops.NewInstance.Invoke(VlcContext.HandleManager.LibVlcHandle); AudioProperties = new VlcAudioProperties(this); VideoProperties = new VlcVideoProperties(this); LogProperties = new VlcLogProperties(); Medias = new VlcMediaListPlayer(this); AudioOutputDevices = new VlcAudioOutputDevices(); EventsHelper.ExecuteRaiseEventDelegate = delegate(Delegate singleInvoke, object sender, object arg) { if (!Dispatcher.CheckAccess()) { Dispatcher.BeginInvoke(singleInvoke, sender, arg); } }; InitEvents(); myVideoLockCallback = LockCallback; myVideoLockCallbackHandle = GCHandle.Alloc(myVideoLockCallback); //myVideoUnlockCallback = UnlockCallback; //myVideoUnlockCallbackHandle = GCHandle.Alloc(myVideoUnlockCallback); myDisplayCallback = DisplayCallback; myDisplayCallbackHandle = GCHandle.Alloc(myDisplayCallback); myVideoSetFormat = VideoSetFormat; myVideoSetFormatHandle = GCHandle.Alloc(myVideoSetFormat); myVideoCleanup = VideoCleanup; myVideoCleanupHandle = GCHandle.Alloc(myVideoCleanup); CompositionTarget.Rendering += CompositionTargetRendering; VlcContext.InteropManager.MediaPlayerInterops.VideoInterops.SetFormatCallbacks.Invoke(VlcContext.HandleManager.MediaPlayerHandles[this], myVideoSetFormat, myVideoCleanup); VlcContext.InteropManager.MediaPlayerInterops.VideoInterops.SetCallbacks.Invoke(VlcContext.HandleManager.MediaPlayerHandles[this], myVideoLockCallback, null, myDisplayCallback, IntPtr.Zero); }
/// <summary> /// Constructor of VlcControl /// </summary> public VlcControl() { if (!Application.Current.IsRunningOutOfBrowser) return; VideoBrush = new ImageBrush(); if (!VlcContext.IsInitialized) VlcContext.Initialize(); VlcContext.HandleManager.MediaPlayerHandles[this] = VlcContext.InteropManager.MediaPlayerInterops.NewInstance.Invoke(VlcContext.HandleManager.LibVlcHandle); AudioProperties = new VlcAudioProperties(this); VideoProperties = new VlcVideoProperties(this); LogProperties = new VlcLogProperties(); Medias = new VlcMediaListPlayer(this); AudioOutputDevices = new VlcAudioOutputDevices(); EventsHelper.ExecuteRaiseEventDelegate = delegate(Delegate singleInvoke, object sender, object arg) { if (!Dispatcher.CheckAccess()) Dispatcher.BeginInvoke(singleInvoke, sender, arg); }; InitEvents(); myVideoLockCallback = LockCallback; myVideoLockCallbackHandle = GCHandle.Alloc(myVideoLockCallback); //myVideoUnlockCallback = UnlockCallback; //myVideoUnlockCallbackHandle = GCHandle.Alloc(myVideoUnlockCallback); myDisplayCallback = DisplayCallback; myDisplayCallbackHandle = GCHandle.Alloc(myDisplayCallback); myVideoSetFormat = VideoSetFormat; myVideoSetFormatHandle = GCHandle.Alloc(myVideoSetFormat); myVideoCleanup = VideoCleanup; myVideoCleanupHandle = GCHandle.Alloc(myVideoCleanup); CompositionTarget.Rendering += CompositionTargetRendering; VlcContext.InteropManager.MediaPlayerInterops.VideoInterops.SetFormatCallbacks.Invoke(VlcContext.HandleManager.MediaPlayerHandles[this], myVideoSetFormat, myVideoCleanup); VlcContext.InteropManager.MediaPlayerInterops.VideoInterops.SetCallbacks.Invoke(VlcContext.HandleManager.MediaPlayerHandles[this], myVideoLockCallback, null, myDisplayCallback, IntPtr.Zero); }