Table of Contents

VAST.UI Libraries

The VAST.UI libraries provide media player controls for .NET applications across multiple UI frameworks. All libraries implement the IMediaPlayer interface for unified playback control, enabling consistent API usage across platforms.

Available Libraries

Library Platform Rendering
VAST.UI for MAUI .NET MAUI (Android, iOS, macOS, Windows) Platform-native (Metal, OpenGL, DirectX, TextureView)
VAST.UI for WinForms Windows Forms DirectX 11, GDI+
VAST.UI for WinUI Windows App SDK (WinUI 3) Direct3D 11 via Win2D, WriteableBitmap
VAST.UI for WPF Windows Presentation Foundation DirectX 11, WriteableBitmap

Common Features

All VAST.UI libraries share these core capabilities:

Feature Description
Hardware Rendering GPU-accelerated video rendering on supported platforms
Software Fallback CPU-based rendering when hardware acceleration is unavailable
Pan/Tilt/Zoom Interactive digital PTZ via mouse or touch gestures
Multiple Streams Audio, video, and subtitle stream selection
Snapshots Capture current video frame as JPEG
Playback Control Play, pause, stop, seek, and playback rate adjustment
Network Statistics Real-time monitoring of stream performance

Controls

MediaPlayerControl

The primary control for video playback. Provides a complete media player experience with:

  • Media source playback (RTSP, HLS, files, custom sources)
  • Audio volume and mute control
  • Playback rate control (slow motion, fast forward, rewind)
  • Full-screen mode
  • Subtitle rendering (WPF, MAUI)
  • Overlay support for custom graphics

VideoPreviewControl

A lightweight preview surface for video capture and mixing scenarios. Connect to capture devices by assigning the renderer:

videoCaptureSource.Renderer = preview.Renderer;

IMediaPlayer Interface

All MediaPlayerControl implementations share the IMediaPlayer interface:

Playback Properties

Property Type Description
AutoPlay bool Auto-start on media load
CanPause bool Media supports pausing
CanSeek bool Media supports seeking
CurrentState PlayerState Current playback state
Duration TimeSpan Total media duration
IsLooping bool Loop playback at end
IsMuted bool Audio mute state
PlaybackRate double Playback speed (1.0 = normal)
Position TimeSpan Current playback position
Source Uri Media source URI
Volume float Audio volume (0.0 to 1.0)

Events

Event Description
CurrentStateChanged Playback state changed
MediaEnded Playback reached end
MediaFailed Error occurred
MediaOpened Media loaded successfully
SeekCompleted Seek operation finished
VideoRenderingStarted First frame rendered

Methods

Method Description
Play Start or resume playback
Pause Pause playback
Stop Stop playback and release resources
TakeSnapshot Capture current frame as JPEG

PlaybackParameters

Configure low-level playback behavior using PlaybackParameters:

player.PlaybackParameters = new PlaybackParameters
{
    RenderingStrategy = RenderingStrategy.LowLatency,
    VideoRendererType = VideoRendererType.Auto,
    AllowDigitalPTZ = true,
};

Key Parameters

Parameter Type Default Description
AllowDigitalPTZ bool false Enable pan, tilt, and zoom via gestures
RenderingStrategy RenderingStrategy LowLatency Frame timing optimization
VideoRendererType VideoRendererType Auto Renderer selection
CleanupOnStop bool true Clear video surface when playback stops
MirrorX bool false Flip video horizontally
MirrorY bool false Flip video vertically

Rendering Strategies

Strategy Description
LowLatency Frames rendered immediately when decoded. Best for live streams.
Smooth Frame timing based on timestamps. Best for VOD content.

Renderer Types

Type Description
Auto Automatically select the best available renderer
Best Force hardware-accelerated rendering
Compatible Use software rendering fallback

Platform Comparison

Feature WPF WinForms WinUI MAUI
Hardware Rendering DirectX 11 DirectX 11 Direct3D 11 Platform-native
Software Fallback WriteableBitmap GDI+ WriteableBitmap Platform-native
Subtitles Yes No No No
Overlays BitmapSource Bitmap No No
Playback Controls Bar No Yes No No
Touch Gestures No No No Yes
Mouse Gestures Yes Yes Yes Yes (Windows)
Designer Support XAML WinForms Designer XAML XAML

Choosing a Library

Scenario Recommended Library
New Windows desktop app WPF or WinUI
Legacy Windows Forms app WinForms
Cross-platform mobile/desktop MAUI
Modern Windows 10/11 app WinUI
App with subtitle requirements WPF

See Also