github SuRGeoNix/Flyleaf v3.9
Flyleaf v3.9 (AIO x64 .NET8 / FFmpeg v8)

latest releases: v3.11.12, v3.11.11, v3.11.10...
12 months ago

Major A/V (Playback & Rendering) Improvements

Significant A/V performance and stability upgrades resulting in no tearing, fewer dropped frames (even on high refresh rates) and no audio crackling.

Core Changes

  • Switched from DXGI swapchain to DirectComposition (DComp) with WS_EX_NOREDIRECTIONBITMAP, bypassing the WPF/WinForms/WinUI rendering pipeline and rendering directly to the DWM compositor
    ✅ Eliminates GPU→CPU copies, frame drops, and UI freezes

  • Re-implemented high-performance rendering loops (for both Playback and Idle modes)
    ✅ Calls to ResizeBuffers and SetViewPort occur only when necessary
    ✅ Avoids locking and improves frame throughput

  • Re-implemented A/V Playback (Screamer)
    ✅ Fully separated A/V threads to prevent desync and delay issues
    ✅ Decoupled Render/Draw from Present, giving the GPU more time per frame for smooth playback

Changelog

  • Renderer.Device: Improves creation implementation
  • Renderer.Swapchain: Switches to DirectComposition (DComp)
  • Renderer.Swapchain: Gets dynamically the GPU output from the adapter during creation
  • Renderer.Swapchain: Fixes support for RGBA (instead of BGRA) and might perform even better (currently not default as causes critical issues with Super Resolution - see Config.Video.SwapForceR8G8B8A8)
  • Renderer.Present: Re-implementation with new rendering loops for playback and idle modes with VSync-Wait mode (deprecates DoNotWait)
  • Renderer.Present: Separates rendering and presenting for playback to achieve less dropped frames
  • Renderer.D3D11VP: Fixes an issue with Super Resolution during Rotation
  • Renderer.D3D11VP: Fixes issues with DeInterlace (separates Bob for double rate with Weave/Blend for normal rate)
  • Player.Screamer: New AVSD implementation which separates A/V threads with less dropped frames, less audio crackling and better A/V sync
  • Player.Stats: Real-time accurate frame statistics from DWM
  • AudioDecoder: Workaround with Circular Buffer that could cause unexpected results during re-allocation
  • VideoDecoder: Fixes issues with extra frames (+1 required for renderer and handle max allowed by the system)
  • VideoStream: Better handling of Fps (could cause issues with interlace and formats that announce huge wrong numbers)
  • Demuxer: Fixes an issue with IsHLSLive falsely set to true
  • Demuxer: Fixes an issue with backwards seeking that it would return forward packets from cache
  • Config.Video: Introduces DoubleRate for DeInterlace (forces D3D11VP to use Bob instead of Weave/Blend)
  • FlyleafME.Settings.Video: Adds DoubleRate for DeInterlace

Breaking Changes

  • Config.Video: Defaults VSync to 1 to avoid tearing
  • Config.Video: Deprecates PresentFlags (no support for DoNotWait - no reason)
  • Config.Player: Deprecates IdleFps
  • Config.Player: Renames UICurTimePerFrame to UICurTime
  • Config.Decoder: Defaults AllowProfileMismatch to true
  • Engine.Config: Deprecates UICurTimePerSecond (use Config.Player.UICurTime instead)
  • Engine.Config: Defaults UIRefresh to true (for proper UI updates/refreshes)
  • Engine.Video: Deprecates Screens and RecommendedLuminance (use GPUAdapter.GetGPUOutputs instead)
  • Engine.Video: Separates GPUOutput from GPUAdapter
  • Renderer/FlyleafHost.Wpf: Deprecates replica/child (might re-include it in the future)

Package Contains (x64)

FlyleafPlayer Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback

Plugins

  • OpenSubtitlesOrg
  • SubtitlesConverter
  • TorrentBitSwarm
  • YoutubeDL

FFmpeg v8.0 (d8605a6)

  • Patched for HLS issue
  • Patched for .NET issue
  • No encoders

Don't miss a new Flyleaf release

NewReleases is sending notifications on new releases.