/// <summary> /// Constructor of VlcControl /// </summary> public VlcControl() { if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) { 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.Invoke(DispatcherPriority.Normal, singleInvoke, sender, arg); } else { Dispatcher.BeginInvoke(DispatcherPriority.Normal, singleInvoke, sender, arg); } }; InitEvents(); myVideoLockCallback = LockCallback; myVideoLockCallbackHandle = GCHandle.Alloc(myVideoLockCallback); myVideoUnlockCallback = UnlockCallback; myVideoUnlockCallbackHandle = GCHandle.Alloc(myVideoUnlockCallback); 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, myVideoUnlockCallback, null, IntPtr.Zero); }
/// <summary> /// Constructor of VlcControl /// </summary> public VlcControl() { if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) { 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(); AudioOutputDevices = new VlcAudioOutputDevices(); EventsHelper.ExecuteRaiseEventDelegate = delegate(Delegate singleInvoke, object sender, object arg) { var dispatcherObject = singleInvoke.Target as DispatcherObject; if (dispatcherObject == null) { singleInvoke.DynamicInvoke(sender, arg); return; } if (EventsHelper.CanRaiseEvent) { dispatcherObject.Dispatcher.Invoke(singleInvoke, new[] { sender, arg }); } }; InitEvents(); myVideoLockCallback = LockCallback; myVideoLockCallbackHandle = GCHandle.Alloc(myVideoLockCallback); 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, null, IntPtr.Zero); }