private void CreateMedia(MediaPlayer mediaPlayer) { CheckMediaDisabledFlags(); SafeMILHandle unmanagedProxy = null; MediaEventsHelper.CreateMediaEventsHelper(mediaPlayer, out _mediaEventsHelper, out unmanagedProxy); try { using (FactoryMaker myFactory = new FactoryMaker()) { HRESULT.Check(UnsafeNativeMethods.MILFactory2.CreateMediaPlayer( myFactory.FactoryPtr, unmanagedProxy, SecurityHelper.CallerHasMediaPermission(MediaPermissionAudio.AllAudio, MediaPermissionVideo.AllVideo, MediaPermissionImage.NoImage), out _nativeMedia )); } } catch { if (_nativeMedia != null && !_nativeMedia.IsInvalid) { _nativeMedia.Close(); } throw; } _helper = new Helper(_nativeMedia); AppDomain.CurrentDomain.ProcessExit += _helper.ProcessExitHandler; }
/// <summary> /// Create the unmanaged media resources /// </summary> private void CreateMedia(MediaPlayer mediaPlayer) { SafeMILHandle unmanagedProxy = null; MediaEventsHelper.CreateMediaEventsHelper(mediaPlayer, out _mediaEventsHelper, out unmanagedProxy); try { using (FactoryMaker myFactory = new FactoryMaker()) { HRESULT.Check(UnsafeNativeMethods.MILFactory2.CreateMediaPlayer( myFactory.FactoryPtr, unmanagedProxy, true, out _nativeMedia )); } } catch { if (_nativeMedia != null && !_nativeMedia.IsInvalid) { _nativeMedia.Close(); } throw; } _helper = new Helper(_nativeMedia); AppDomain.CurrentDomain.ProcessExit += _helper.ProcessExitHandler; }
/// <summary> /// Create /// </summary> internal static void CreateMediaEventsHelper(MediaPlayer mediaPlayer, out MediaEventsHelper eventsHelper, out SafeMILHandle unmanagedProxy) { eventsHelper = new MediaEventsHelper(mediaPlayer); // Created with ref count = 1. Since this object does not hold on // to the unmanaged proxy, the lifetime is now controlled by whoever // called CreateMediaEventsHelper. unmanagedProxy = EventProxyWrapper.CreateEventProxyWrapper(eventsHelper); }
internal static void CreateMediaEventsHelper(MediaPlayer mediaPlayer, out MediaEventsHelper eventsHelper, out SafeMILHandle unmanagedProxy) { eventsHelper = new MediaEventsHelper(mediaPlayer); // Created with ref count = 1. Since this object does not hold on // to the unmanaged proxy, the lifetime is now controlled by whoever // called CreateMediaEventsHelper. unmanagedProxy = EventProxyWrapper.CreateEventProxyWrapper(eventsHelper); }