Releases: SuRGeoNix/Flyleaf
Release list
Flyleaf v3.5 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
[Enchantments]
- Playlists: Adds playlists support (for M3U, PLS, YoutubeDL, Torrent)
- Sessions: Allows to open a previously opened session with the same configuration
- Subtitles: Improves suggestions and adds SearchLocal/SearchLocalOnInputType/SearchOnline/SearchOnlineOnInputType configuration
- Renderer: Improves compatibility with proper fallback to WARP device and improves the way you specify a GPU adapter
- ModelView: Includes playlist items and streams (embedded and external) in library's model view
- OpenAsync: Improves threading implementation, locking and interrupts
[Issues]
- Fixes a critical issue with timestamps (mainly for some avi files while using show frame prev/next)
- Fixes an NPE on Renderer's SetViewport
- Fixes an NPE on Audio.Mute
[Control.WPF Enchantments]
- Playlists: Adds playlists support (on pop-up menu)
- Settings: Adds Search Local / Search Online
- External Streams: Will be all now be under External sub-menu
- UI Config: Extends UI Config with the subtitles options
[Control.WPF Issues]
- Fixes an issue that it wouldn't go idle when the mouse was above the sliders
[Important / Breaking Changes]
- Player.Title can now be accessed from Player.Playlist.Selected.Title
- Player.PlaybackCompleted renamed to Player.PlaybackStopped
- Player.[AVS].Inputs and Player.[AVS].ExternalStreams can be accessed from Playlist.Items and Playlist.Items[N].External[AVS]Streams
- LogOutput for files now will not append by default check Engine.Config.LogAppend
- Config.Video.GPUAdapterLUID renamed to Config.Video.GPUAdapter (LUID can change on system reboot, now you can use a string to match)
- Player can start playing now before the control's assignment or its handle creation
- Changes the way that Player's Open Completed events will fire (only what user requested to open). If you still need to catch all the events subscribe on the Decoder Context's events (Player.decoder)
Flyleaf v3.5-pre (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
[New Features]
* Playlist
- Adds Playlist support on the decoder context (will be extended to support playlist files such as .pls/.m3u/.m3u8 etc.)
- Adds Playlist support for BitSwarm (Torrent) and YoutubeDL (Web) plugins
- Allows playing received items while playlist is still in progress
- Separates main user input with playlist items, embedded streams and external streams
- Adds basic scraping (for title, season, episode)
* Sessions: Adds support to re-open a previously opened session (with the same input/playlist item/streams/curtime/audio and subs delay)
* Subtitles
- Adds basic local search support and improves suggestion algorithm
- Adds Config.Subtitles.SearchLocal/SearchLocalOnInputType/SearchOnline/SearchOnlineOnInputType
[Enchantments]
* Overall Code Clean-up
* Renderer
- Allows late assignment of the Control/Handle (you can start playing before the control has been created)
- Allows WARP device to be forced from the configuration (luid=-1000)
* Threading, Locking and Cancellation
- Improves Open/OpenAsync implementation
- Replaces threads with tasks and gets rid of EnsureThreadDone
- Improves locking and cancellation
* Demuxer Packet Queue, CurTime and BufferedDuration
* UI Updates mainly for Streams (as ObservableCollection)
[Issues]
* Fixes a null reference on renderer's SetViewport with D3D11 VP #158
* Fixes a rare dead lock on player's seek
* Fixes an issue on WPF Control that it wouldn't go idle when the mouse was above the sliders
* Fixes an issue with Downloader while downloading only audio (on external audio demuxer)
[Important/Breaking Changes]
* Player.Title can now be accessed from Player.Playlist.Selected.Title
* Player.PlaybackCompleted renamed to Player.PlaybackStopped
* Player.[AVS].Inputs and Player.[AVS].ExternalStreams can be accessed from Playlist.Items and Playlist.Items[N].External[AVS]Streams
* LogOutput for files now will not append by default check Engine.Config.LogAppend
* Changes the way that Player's Open Completed events will fire (only what user requested to open). If you still need to catch all the events subscribe on the Decoder Context's events (Player.decoder)
Flyleaf v3.4.14 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
- Introduces Config.Demuxer.BufferPackets as a second option for buffering limits along with the BufferDuration
- Introduces Config.Demuxer.MaxAudioPackets to prevent memory leaks on timestamps wrapping (2^33 ffmpeg bug) which will fire AudioLimit event (can be used to restart the player)
- Improves support for VideoView within another VideoView overlay
- Fixes an issue with Brightness/Contrast while switching between video processors
- Fixes an audio compatibility issue with the Device Id for Win7/8
- Fixes an issue with OpenFromFileDialog and WinMoveOnDrag
- Fixes a critical issue with Recording while loglevel is less than info
- Updates Vortice
Flyleaf v3.4.10 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
- Adds support for playback speed 1.25, 1.5, 1.75, etc.
- Fixes Brightness/Contrast dim issues while switching to Flyleaf Video Processor (FLVP)
- Disables by default the new Config.Decoder.AllowProfileMismatch as it causes issues (mainly with HEVC)
Flyleaf v3.4.7 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
Enriches FlyleafLib with Logging
- Adds Log Support for both FlyleafLib and FFmpeg (with separate log levels for each)
- Organizes the previously Master and renaming it to Engine
- Allows runtime/dynamic changes to log configuration
- Collects all the Global configuration to one place and allows Load/Save
- Controls.WPF: Renames Buffering Tab to Player and adds the new Logging settings
- Controls.WPF: Adds Read Timeout to Player Settings
- AudioOnly: Prevents the initialization of VideoDecoder and Renderer
- Adds a read timeout even on the demuxer (Player.VideoDemuxer.TimedOut)
Breaking/Important Changes
- New way to initialize FlyleafLib with Engine.Start
- Master has been renamed to Engine
- Master.RegisterFFmpeg and Master.RegisterPlugins have been removed
- Master.GPUAdapters transferred to Engine.Video.GPUAdapters
- Master.AudioMaster.Devices transferred to Engine.Audio.Devices
- Master configuration properties transferred to Engine.Config
Start Engine Example
Engine.Start(new EngineConfig()
{
UIRefresh = true, // Required for Activity,BufferedDuration,Stats in combination with Config.Player.Stats = true
UIRefreshInterval = 250; // How often to update the UI
UICurTimePerSecond = false, // Whether to update CurTime only when it's second changed or by UIRefreshInterval
HighPerformaceTimers= false, // Forces TimeBeginPeriod(1) always active
//LogOutput = ":debug",
//LogOutput = ":console",
LogOutput = "C:\\logs\\file.log",
LogLevel = LogLevel.Debug,
FFmpegLogLevel = FFmpegLogLevel.Warning,
PluginsPath = "C:\\SomePath\\Plugins",
FFmpegPath = "C:\\SomePath\\FFmpeg",
});- FFmpegPath and PluginsPath support both relative and absolute paths and can specify the ":" prefix for any folder below the current
Solution Notes
- FFmpeg libraries for x86 platforms have been removed from the solution
- FFmpeg libraries have been transferred to FFmpeg/ folder
- All the global classes have been transferred to Engine/
Flyleaf v3.4.5 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
D3D11 Video Processor Support & Media Renderer Improvements
Extends the current embedded video processor (FLVP pixel shaders) with the D3D11VP to support more filters, alternative color conversions, basic bob deinterlace and preparing others including HDR native.
Use Config.Video.VideoProcessor to choose which one to use. By default "Auto" is recommended to allow the library to switch when it requires.
- FLVP supports HDR to SDR, D3D11 does not
- FLVP supports Pan Move/Zoom, D3D11 does not
- D3D11 possible performs better with color conversion and filters, FLVP supports only brightness/contrast filters
- D3D11 supports deinterlace (bob)
- D3D11 currently performs only with video accelerated (hardware) frames
Adds Config.Video.Deinterlace to enable/disable deinterlace
Adds Config.Video.Filters to set filters (ensure that is actually available and supported by the VPs)
Adds Config.Player.MouseBindings.WinMoveOnDrag to allow draging the control's parent window (enabled by default)
Adds Player.LastError to keep track of open/playback/buffering errors in the UI
Renderer: Code clean up and improvements
Renderer: TakeSnapshot now works more efficiently
Controls.WPF: Updates Settings with Filters/Deinterlace
Extractor: Adds support also to the new D3D11VP
Updates Vortice (you might need to update System.Runtime.CompilerServices.Unsafe to Version>=6.0.0.0)
Issues
Audio: Fixes a critical backwards compatibility issue with XAudio by updating Vortice libraries
Renderer: Possible brings back the broken backwards compatibility (Win7/Win8) from the previous 3.4.4 (not tested)
VideoDecoder: Fixes few performance issues with the new get_format / hardware frames allocation
Downloader: Fixes downloads that require two demusers (youtube-dl)
Player: Fixes ShowFramePrev issue that on some videos it wouldn't work
Flyleaf v3.4.4 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
Video Acceleration, Disposal and Swaping Improvements
- Re-designs and improves Video Acceleration with custom hardware frame pool allocation, zero-copy, proper width/height alignments
- Re-designs and improves VideoDecoder's and MediaRenderer's disposal which resolves major memory leaks
- Re-designs of player's swap implementation with better perfomance (Uses the new static Player.SwapPlayers from now on for both WPF/WinForms)
- Renderer: Changes from Discard to FlipDiscard and from single backbuffer to two (for better performance and avoid memory leaks)
- Adds Master.RegisterPlugins to allow different path for plugins than default
- Plugins.YoutubeDL: Adds retries and fallback to manifest url support
- Controls.WPF: Adds PlayerDebug with all Player's properties
- Controls.WPF: Adds ZeroCopy to Video Settings
- Controls.WPF: Removes GPU Usage
- Controls.WPF: Updates MaterialDesign
Issues
- Fixes memory leaks caused by FFmpeg and VA by reseting the renderer on every new input
- Fixes an issue with Volume/Mute
- Fixes an issue with Enable/Disable Streams
Important / Breaking Changes
- Decoder: ZeroCopy automatically detects padding and will be disabled (changes Config.Decoder.ZeroCopy from bool to enum with Auto/Enabled/Disabled)
- Renderer: FlipDiscard with two backbufffers can cause issues with win7/8
Flyleaf v3.4.3 (AIO x64 .NET6)
(Updated on 1/5/2022 fixed a critical issue with FlyleafPlayer Sample, keybindings were not working)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
Video Acceleration Performance Improvements
- Introduces Config.Decoder.ZeroCopy (enabled by default) to use the decoder's texture directly to the renderer's pipeline
- Introduces Config.Decoder.VAPoolSize to pre-allocate the hardware frames on the ffmpeg decoder (it was re-allocating them on every flush causing serious performance issues)
- Adds support for streams that change codecs live/dynamically (still in progress)
- Improves Player.Stop() with interrupt while opening
Issues
- Fixes a crashing issue during renderer's disposal
- Fixes an issue on audio device removal (by resetting players' with this device to default)
- Fixes an issue with VolumeMax
- Fixes an issue with Volume's value accuracy on get
- Fixes UI update issues with Volume and Mute
- Fixes an issue with AddFirewallRule and findstr (uses literal strings now)
- Fixes a critical issue with BitSwarm/APF that didn't allow to open an already created part file (3/1/2021 updated)
- Prevents Youtube-DL from opening some radio stations and mp3 (to avoid the delay)
Important/Breaking Changes
Drops support for MaxVideoFramesReverse, will use MaxVideoFrames instead (cannot be different at the moment)
Flyleaf v3.4.2 (AIO x64 .NET6)
Compiled Libraries, Plugins & Samples
Flyleaf Player | Note: Pop-up on first run is to add itself to windows firewall for proper yt-dlp and bitswarm playback
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
Re-design audio implementation from the decoder's to the player's layer
- Replaces NAudio's Core/Wasapi with Vortice's XAudio2/MediaFoundation (Direct COM Interops)
- Performance and memory improvements for audio processing by using a single custom circular buffer
- Better audio/video sync and more accurate timestamps as now audio plays with zero latency
- More clear sound with no gaps between audio frames (it was happening at the beginning and after seeking)
- Possible fixes for audio bluetooth devices and few other NAudio issues with dead locks and threading
Important/Breaking Changes
- Audio output format changed from 32-bit to 16-bit (faster processing/less memory as currenlty 32-bit not required)
- AudioMaster handles only the audio devices now (everything else has been removed, e.g. master/session's volume/mute etc.)
- Config.Audio.Latency has been removed
Flyleaf v3.4 (AIO x64 .NET5)
Compiled Libraries, Plugins & Samples
Flyleaf Player
Flyleaf Downloader
Flyleaf Extractor
Flyleaf Plugins | Note: yt-dlp is detected as a virus
FFmpeg Libraries | Note: 4.4.1.2 patched for HLS issue
[New Features]
- Helpers: Extended config and player with a number of new methods/properties/events/icommands to help the front-end development
- Key/Mouse Bindings: Adds and enables by default all the commonly used key and mouse bindings (check github wiki)
- Activity Mode: Monitors user's activity and notifies for Idle/Active/FullActive activity status changes
- Master Thread: Monitors and updates players activity mode, buffered duration and other stats
- Accurate Timestamps: Improves timestamps (including HLS live streams) accuracy and ensures UI refresh
- Accurate Seeking: Adds accurate seeking support to the additional keyframe seeking functionallity
- HLS Live: Adds seek in queue support
- Config: Timing adjustments to improve performance and use less resources
[Issues]
- Fixes critical issues with swaping
- Fixes critical read timeout issue with live streams
- Fixes critical yt-dlp plugin delay issue with ipv6
- Fixes a dead lock issue on multiple resyncs with audiodecoder
- Fixes and improves reverse playback and show frame (prev/next/x)
- Fixes and improves audio (only) player
[Important/Breaking Changes]
- Config.Demuxer.FormatOpt["probesize"] & Config.Demuxer.FormatOpt["analyzeduration"] have been added by default which can cause an already exists exception
- Config.Decoder.MaxAudioFrames changed from 30 to 10
- Config.Decoder.MaxVideoFrames changed from Math.Max(10, Environment.ProcessorCount) to 4
- Config.Demuxer.BufferDuration changed from 5 minutes to 2
- Config.Player.MinBufferDuration change from 1000ms to 500ms
- Config.Player.LowLatencyMaxVideoFrames changed from 4 to 2
- Config.Player.Speed & Config.Player.SpeedReverse moved to single Player.Speed (valid values 0.0 - 1.0 and 1,2,3,4)
- VideoView.IsFullScreen / FullScreen / NormalScreen moved to Player and support also WinForms now
- Set Config.Player.KeyBindings.Enabled = false if you don't need them
- Set Config.Player.MouseBindings.Enabled = false if you don't need them
- Set Config.Player.AutoPlay = false if you don't need it