FrameFlux.Wpf 0.1.1

dotnet add package FrameFlux.Wpf --version 0.1.1
                    
NuGet\Install-Package FrameFlux.Wpf -Version 0.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FrameFlux.Wpf" Version="0.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FrameFlux.Wpf" Version="0.1.1" />
                    
Directory.Packages.props
<PackageReference Include="FrameFlux.Wpf" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FrameFlux.Wpf --version 0.1.1
                    
#r "nuget: FrameFlux.Wpf, 0.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FrameFlux.Wpf@0.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FrameFlux.Wpf&version=0.1.1
                    
Install as a Cake Addin
#tool nuget:?package=FrameFlux.Wpf&version=0.1.1
                    
Install as a Cake Tool

FrameFlux.Wpf

Reusable WPF controls for FrameFlux media playback.

The control is backend-neutral. Reference a backend package and inject its factory during application setup:

Player.PlayerFactory = new FfmpegMediaPlayerFactory();
<frameFlux:MediaView
    Source="{Binding Source}"
    AutoPlay="True"
    Volume="{Binding Volume}"
    IsMuted="{Binding IsMuted}"
    Stretch="Uniform" />

The current FFmpeg backend supports RTSP and RTSPS sources. The control uses the protocol-neutral MediaSource contract so local files and additional media backends can be added without changing the WPF control API.

For end-to-end Windows hardware playback, set MediaView.PresentationMode to NativeSurface or GpuComposition and select a hardware-capable OpenOptions.Video.DecodingPolicy. Both modes accept lease-based D3D11VA frames without reading them back to the CPU.

NativeSurface presents through a DXGI swap chain hosted in a child HWND and remains the minimum-latency option. WPF elements cannot reliably cover that child window because of HWND airspace rules.

GpuComposition converts each decoder texture into a shared BGRA texture, opens it through D3D9Ex, and supplies its surface to WPF D3DImage. Additional children declared inside MediaView can therefore render above the video. Explicit NativeSurface playback is rejected when overlay children exist.

Use Automatic or SoftwareBitmap presentation when portable BGRA frame delivery and snapshot support are required. All three outputs use the same lease-based IMediaVideoOutput contract.

Player.OpenOptions = new MediaOpenOptions
{
    Video = new MediaVideoOptions
    {
        DecodingPolicy = MediaVideoDecodingPolicy.HardwarePreferred
    }
};
Player.PresentationMode = MediaVideoPresentationMode.GpuComposition;

Automatic presentation chooses GpuComposition for a dedicated Windows session with hardware-capable decoding, and SoftwareBitmap otherwise. Explicit GPU modes throw when their requirements are not met. If HardwarePreferred falls back to software, the adaptive output updates EffectivePresentationMode to SoftwareBitmap. Use the read-only IsHardwareVideoDecodingActive and VideoDecoderDiagnostics properties for runtime diagnostics.

FrameReceived exposes managed frames when the active output delivers them. Subscriber exceptions are isolated so one observer cannot block the others.

The WPF bitmap, D3DImage, and native HwndHost outputs own only framework integration and latest-frame queues. Win32 and D3D11 video processing resources live in the shared FrameFlux.Rendering.Windows package.

Product Compatible and additional computed target framework versions.
.NET net8.0-windows7.0 is compatible.  net9.0-windows was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.1 73 9/8/2026
0.1.0 81 9/1/2026