src/UI/Logic/VideoPlayers/LibVlcDynamic/README.md
This document describes the three control views available for the LibVLC video player in Subtitle Edit Avalonia.
Three control implementations are provided, each using a different rendering approach:
Uses native window embedding to let VLC render directly to a platform-specific window handle.
NativeControlHostlibvlc_media_player_set_hwnd() on Windows and libvlc_media_player_set_xwindow() on Linux/macOSvar vlcPlayer = new LibVlcDynamicPlayer();
var control = new LibVlcDynamicNativeControl(vlcPlayer);
control.LoadFile("video.mp4");
Uses memory rendering callbacks to capture raw video frames and display them using Avalonia's WriteableBitmap.
ControlWriteableBitmapvar vlcPlayer = new LibVlcDynamicPlayer();
var control = new LibVlcDynamicSoftwareControl(vlcPlayer);
control.LoadFile("video.mp4");
Uses memory rendering callbacks to capture video frames and uploads them to OpenGL textures for hardware-accelerated display.
OpenGlControlBasevar vlcPlayer = new LibVlcDynamicPlayer();
var control = new LibVlcDynamicOpenGlControl(vlcPlayer);
control.LoadFile("video.mp4");
All three controls implement the same basic API:
public interface IVlcControl
{
LibVlcDynamicPlayer? Player { get; }
void LoadFile(string path);
void TogglePlayPause();
void Unload();
}
Potential improvements for all controls: