/// <summary> /// Creates the CompositionSurfaceBrush if one hasn't already been created. Also assigns the /// brush to the video SpriteVisual. /// </summary> private void EnsureVideoBrush() { if (_videoSurface == null) { // Getting the surface that represents the MediaPlayer's swapchain for video content // is easy, just pass a Compositor to the MediaPlayer! _videoSurface = _mediaPlayer.GetSurface(_compositor); // Create a brush for our new surface and attach it to our visual. _videoBrush = _compositor.CreateSurfaceBrush(_videoSurface.CompositionSurface); _videoVisual.Brush = _videoBrush; } }
private void EnsureVideoSurface() { if (_mediaSurface == null) { // Create a surface from our MediaPlayer. _mediaSurface = _player.GetSurface(_compositor); var surface = _mediaSurface.CompositionSurface; // Make a brush out of it and apply it to our effect. _videoBrush = _compositor.CreateSurfaceBrush(surface); //_visual.Brush = _videoBrush; _effectBrush.SetSourceParameter("Video", _videoBrush); // Enable our button now that we have everything set up. EffectButton.IsEnabled = true; } }
private void Play(GalleryItem item) { try { var parent = Surface; //var container = Flip.ContainerFromItem(item) as ContentControl; //if (container != null && container.ContentTemplateRoot is Grid parent) { //_surface = parent.FindName("Surface") as ImageView; _surface = parent; _mediaPlayer.MediaPlayer.SetSurfaceSize(new Size(_surface.ActualWidth, _surface.ActualHeight)); var swapchain = _mediaPlayer.MediaPlayer.GetSurface(_layerVisual.Compositor); var brush = _layerVisual.Compositor.CreateSurfaceBrush(swapchain.CompositionSurface); var size = new Vector2((float)_surface.ActualWidth, (float)_surface.ActualHeight); //var mask = Unigram.Common.ImageLoader.Instance.LoadCircle(240, Colors.White).Brush; //var graphicsEffect = new AlphaMaskEffect //{ // Source = new CompositionEffectSourceParameter("image"), // AlphaMask = new CompositionEffectSourceParameter("mask") //}; //var effectFactory = _layerVisual.Compositor.CreateEffectFactory(graphicsEffect); //var effectBrush = effectFactory.CreateBrush(); //effectBrush.SetSourceParameter("image", brush); //effectBrush.SetSourceParameter("mask", mask); _surfaceVisual = _layerVisual.Compositor.CreateSpriteVisual(); _surfaceVisual.Size = size; _surfaceVisual.Brush = brush; ElementCompositionPreview.SetElementChildVisual(_surface, _surfaceVisual); _mediaSurface = swapchain; _mediaPlayer.Source = MediaSource.CreateFromUri(item.GetVideoSource()); _mediaPlayer.MediaPlayer.IsLoopingEnabled = item.IsLoop; _mediaPlayer.MediaPlayer.Play(); } } catch { } }
// </SnippetDoubleTapped> //private void SetVideoVisual() //{ // // <SnippetCompositor> // Visual elementVisual = ElementCompositionPreview.GetElementVisual(_compositionCanvas); // var compositor = elementVisual.Compositor; // _mediaPlayer.SetSurfaceSize(new Size(_compositionCanvas.ActualWidth, _compositionCanvas.ActualHeight)); // MediaPlayerSurface surface = _mediaPlayer.GetSurface(compositor); // SpriteVisual spriteVisual = compositor.CreateSpriteVisual(); // spriteVisual.Brush = compositor.CreateSurfaceBrush(surface.CompositionSurface); // ElementCompositionPreview.SetElementChildVisual(_compositionCanvas, spriteVisual); // // </SnippetCompositor> //} private void SetVideoVisualButton_Click(object sender, RoutedEventArgs e) { // <SnippetCompositor> mediaPlayer.SetSurfaceSize(new Size(_compositionCanvas.ActualWidth, _compositionCanvas.ActualHeight)); var compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; MediaPlayerSurface surface = mediaPlayer.GetSurface(compositor); SpriteVisual spriteVisual = compositor.CreateSpriteVisual(); spriteVisual.Size = new System.Numerics.Vector2((float)_compositionCanvas.ActualWidth, (float)_compositionCanvas.ActualHeight); CompositionBrush brush = compositor.CreateSurfaceBrush(surface.CompositionSurface); spriteVisual.Brush = brush; ContainerVisual container = compositor.CreateContainerVisual(); container.Children.InsertAtTop(spriteVisual); ElementCompositionPreview.SetElementChildVisual(_compositionCanvas, container); // </SnippetCompositor> }
private void resetSize() { if (ElementCompositionPreview.GetElementChildVisual(_compositionCanvas) != null && video) { ElementCompositionPreview.GetElementChildVisual(_compositionCanvas).Dispose(); MediaPlayer _mediaPlayer = ViewModel.MediaPlayer; _mediaPlayer.SetSurfaceSize(new Size(_compositionCanvas.Width, _compositionCanvas.Height)); var compositor = ElementCompositionPreview.GetElementVisual(this).Compositor; MediaPlayerSurface surface = _mediaPlayer.GetSurface(compositor); SpriteVisual spriteVisual = compositor.CreateSpriteVisual(); spriteVisual.Size = new System.Numerics.Vector2((float)_compositionCanvas.Width, (float)_compositionCanvas.Height); CompositionBrush brush = compositor.CreateSurfaceBrush(surface.CompositionSurface); spriteVisual.Brush = brush; ContainerVisual container = compositor.CreateContainerVisual(); container.Children.InsertAtTop(spriteVisual); ElementCompositionPreview.SetElementChildVisual(_compositionCanvas, container); } }