/// <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); }