Releases: SuRGeoNix/Flyleaf
Flyleaf v3.7.3 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog (v3.7.3)
- AudioDecoder: Adds FFmpeg filters support (using embedded atempo for Player speed)
- AudioDecoder: Adds draining support
- AudioDecoder: Performance improvements
- AudioDecoder: Fixes a critical issue with swr_convert
- AudioDecoder: Fixes an issue that it wouldn't respect the Config.Decoder.MaxAudioFrames
- Demuxer: Adds more locks in packet queues to ensure stability
- Player: A/V Sync improvements (calculates the audio device delay)
- Renderer: D3D11 minor performance improvements
Changelog (v3.7.1)
- Demuxer: Open implementation improvements
- Demuxer: Fixes a critical null reference issue with custom I/O streams (Fixes torrents for Sample)
- Renderer: Fixes a dead lock (during Open)
Changelog (v3.7.0)
- Renderer: New implementation for FlyleafVP's pixel shaders which now supports almost all YUV/RGB formats (GPU process instead of SwsScale CPU)
- Demuxer: Improves Url syntax which combines force format with devices in one and allows to pass optons (fmt://$format$[/]?$input$&$options$) to force a specific format for an input and pass options directly
- Demuxer: Fixes an issue when FindStreamInfo is disabled it wouldn't find the video stream
- Demuxer: Fixes an issue with Extension which could cause Remuxer(Downloader/Recorder) to fail
- Engine: Improves Video Cap Devices by including all the supported streams/formats (thanks to @anguzo )
- Player: Allows slower FPS (it could cause issues with 1fps)
- Player: Fixes a null reference issue with AudioOnly screamer
New API
- Config.Demuxer.ForceFormat (to force a specific input format)
- Config.Video.SwsForce (to use Sws instead of FlyleafVP pixel shaders if required)
- Config.Video.SwapForceR8G8B8A8 (to force R8G8B8A8 instead of B8G8R8A8 for the swapchain)
- Config.Audio.FiltersEnabled (if you want to use filters, atempo by default)
- Config.Audio.Filters (to add your filters)
- Player.Audio.UpdateFilter (to update filter's property)
- Player.Audio.ReloadFilters (to reload all the graph filters)
Breaking Changes
- Drops support for FFmpeg v4 (it had different values for AVPixelFormats and could cause issues)
- Drops support for Player.Usage.LowLatencyVideo/ZeroLatencyAudioVideo as they have been replaced with Config.Player.MaxLatency
- Reduces default value for Config.Demuxer.BufferDuration from 2min to 30sec
- Changing speed from 8 down to 1 directly will cause atempo to crash
- Min value changed for Speed from 0.25 to 0.5
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.11 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog
- DecoderContext: Fixes a rare dead lock while opening a stream and seeking
- Demuxer: Introduces Config.Demuxer.AllowFindStreamInfo which can be disabled for faster opening of the input
- Engine: Adds FFmpeg.Autogen latest 5.1.2.1 support (removes deprecated LoadedLibraries)
- Engine: Improves High Performance Timers for multiple players and enables them only when required
- Updates Vortice
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.10 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog (3.6.8-3.6.10)
- Engine: Fixes a possible crashing issue with threading and ObservableCollections (it could happen on audio device changes)
- Player: Changes Zoom from pixels to percentage
- Player: Introduces ZoomIn, ZoomOut based on specific Point
- Config: Changes Player.ZoomOffset from 50 to 10 (as now indicates percentage instead of pixels)
- FlyleafHost (WPF/WinForms): Improves Zoom with Ctrl+MouseWheel to use mouse pointer as center
- FlyleafME: Adds Zoom percentage to pop-up menu
- FlyleafME: Adds Zoom Offset to Settings
- Plugins: Updates BitSwarm
- Plugins: Updates YoutubeDL (exe only)
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.7 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog
-
Renderer: Introduces Composition and currently supports CornerRadius windows (thanks to @xmine64)
-
Renderer: Improves D3D11 Pan Move/Zoom and fixes issues when combined with rotation (fixes #241)
-
Renderer: Fixes an idle rendering issue
-
FlyleafHost.Wpf: Introduces CornerRadius
-
FlyleafHost.Wpf: Fixes a possible NPE issue with multiple monitors
-
FlyleafHost.Wpf: Fixes an issue with AllowsTransparency when is already set (thanks to @afunc233)
-
FlyleafME: Fixes an issue during initialization when Overlay is already loaded
-
Samples.FlyleafPlayer: Fixes Player disposal on new window close
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.6 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog
- Audio: Introduces SamplesAdded event which informs of the currently playing audio samples
- Demuxer: Programs improvements
- Engine: Boot load performance improvements
- Engine: Introduces StartAsync method and Loaded event which allows faster boot of the application without blocking the UI thread
- FlyleafHost.Wpf: Fixes possible issues with release mouse capture
- FlyleafHost.Wpf: Fullscreen performance improvements
- FlyleafHost.Wpf: In Standalone mode will show the Surface only when the Overlay has been fully loaded
Release Notes / Breaking Changes
- If you use Engine.StartAsync you will need to make sure that it has been fully loaded before initializing a Player/Configuration (use Engine.Loaded event)
- You will need to manually load your assembly that contains embedded plugins after the Engine has been loaded from Engine.Plugins.LoadPlugin(your_assembly)
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.5 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog
- Player: Improves performance by replacing DateTime with StopWatch for elapsed time calculation
- Player.Activity: Hides mouse cursor only when FlyleafHost is focused
- Renderer: Fixes an issue with Aces/Hable HDRtoSDR method when luminance was less than 1
- Renderer: Fixes a critical issue with the new WndProc subclass (not properly setting the IntPtr during SetWindowSubclass/RemoveWindowSubclass which could cause FailFast exceptions when multiple add/remove subclass for the same Handle)
- FlyleafHost.WinForms: Fixes an issue with Activity Mode (it wouldn't refresh on MouseMove)
- FlyleafHost.Wpf: Proper way to set the Overlay Content and Template through OverlayTemplate DP which fixes performance, design and binding issues during transfer
- FlyleafHost.Wpf: Fixes stability and disposal issues with Surface/Overlay windows (Player will not be disposed only the swap chain which means that the application must manually dispose it)
- FlyleafHost.Wpf: Fixes an issue when Owner window has TopMost=true
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.3 (AIO x64 .NET7 / FFmpeg v5.1.2)
Changelog (v3.6.3)
- Demuxer: Fixes issues with reverse playback and minor issue with remuxer's extension
- Decoder: Fixes Frame Stepping with formats that allow timestamp discontinuities
- Remuxer: Fixes critical issues while dts/pts having no value (AV_NOPTS_VALUE)
- Player: Improves recording, reverse playback and frame stepping
- Player.Screamer: Better handling of wrong video timestamps (even when audio timestamps are normal)
Changelog (v3.6.2)
- Demuxer: Adds HLS Live Seek support for FFmpeg v5.1.2 and drops supports for older versions
- Demuxer: Introduces StartRealTime
- Demuxer: Fixes seeking issue to the very beginning (0)
- Engine: Introduces Config.FFmpegHLSLiveSeek to manually enable HLS Live Seek (disabled by default as it can cause critical issues if the version doesn't match with the HLSContext structure)
- Player: Fixes (slow performance) an issues with Frame Stepping backwards on MPEG-TS formats (FFmpeg fails to properly seek backwards)
- Renderer: Fixes Aspect Ratio on 90 and 270 degrees angle Rotation
- Renderer: Fixes Rotation for Flyleaf video processor (wasn't rotating clock-wise)
- FlyleafHost.Wpf: Adds MouseBindings dependency property to easy enable or disable them
- FlyleafME: Adds Porfile Mismatch to Video Settings
- PlayerDebug: Adds Rotation and Porfile Mismatch
- NuGet: Adds .NET 7 and drops .NET 5 support
Solution
- Updates FFmpeg libraries to v5.1.2 (patched)
- Updates FFmpeg.Autotgen to v5.1.1 for Samples/Tests
- Updates to C# 11 language version
- Adds .NET 7 and drops .NET 5 support for Samples/Tests
- Includes Publish Profiles for Sample releases
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.1.2 (29/11/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6.1 (AIO x64 .NET6 with FFmpeg v4 / v5)
Changelog
-
VideoDecoder: Fixes a rare issue with keyframes
-
Player: Improves buffering cancellation while seeking but still gives few ms to show one frame
-
Renderer: Becomes completely independent from WPF/WinForms and requires only a Window Handle (IntPtr)
-
Renderer: GPUAdapters clean-up and improvements (adds Engine.Video.Screens)
-
Renderer: Restores WARP device fallback
-
FlyleafHost.Wpf: Adds some support for multi-monitors
-
FlyleafHost.Wpf: Fixes a bug during restore from maximized
-
FlyleafME: Transfers subtitles/video Popup menus to FlyleafBar (it was causing an Activity mode issue)
-
FlyleafME: Fixes icons for Popup Menu
-
YoutubeDL: Fixes an issue with video stream suggestion
-
YoutubeDL: Fixes an issue with IPv4/IPv6 between yt-dlp and ffmpeg
-
FlyleafPlayer: Extends FlyleafME's Popup Menu (Open/Close Window, Always On Top & Ratio Resize)
Notes
Compiled Libraries, Plugins & Samples
Flyleaf Player 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 yt-dlp is detected as a virus
FFmpeg Libraries 4.4.2 and 5.0.1 (30/5/2022) patched for HLS issue
FFmpeg Devices You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6 (AIO x64 .NET6 with FFmpeg v4 / v5)
Introduces FlyleafHost a new DPI aware, hardware accelerated Direct3D Surface (WPF VideoView's replacement and Flyleaf's for Winforms)
- Early and fast initialization of handles and renderer which will also resolve several issues
- Adds Attach / Detach functionality
- Self Drag Move also on attach mode (within the host's owner bounds)
- Drag & Drop Swap between FlyleafHosts (Shift + Drag)
- Custom non-borders resizable windows both on attach and detach mode (can keep input's ratio)
- Adds Z-order surfaces support
- Resolves several issues when the host's rectangle was clipped
- Adds support for WPF Windows to the Renderer in addition to WinForms UserControl
- Resolves several issues with DPI
- Better UI performance overall (including swaps and switching between Normal / Full Screen)
Introduces FlyleafME, a WPF Media Element Control (Flyleaf replacement)
- Code clean-up and styles / templates to allow easier override and customization
- Updated with the new FlyleafHost (old ViewView) and gains better performance with more functionality
- Adds Activity Timeout on Settings
- Adds Rotation to Popup menu
- Fixes several issues with DPI
- Fixes issues with Activity / Idle Mode
- Fixes an issue to respect Subtitles FontStyle
- Updates FlyleafLib
Player
- Adds Rotation Support (Shift + Wheel)
- Fixes a UI threading issue that it could cause Player.Initialization to crash
- Fixes Activity / Idle Mode issues
- General code clean-up and performance improvements
Breaking Changes
- VideoView has been renamed to FlyleafHost
- Flyleaf (WPF Control) has been renamed to FlyleafME (Media Element) and does not require a FlyleafHost as it was required previously with the VideoView (it derives from it)
- Player.IsFullScreen, Config.Player.ActivityTimeout, Config.Player.MouseBindings and Config.Player.KeyBindings.(Enabled/FlyleafWindow) has been transferred to FlyleafHost
- Player.ActivityMode has been removed (its the same as ActivityTimeout=0) however Player.Activity.IsEnabled can be used to temporary turn it on/off
- Player.Swap has been removed as you can now set directly the Players to FlyleafHosts
Notes
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.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
FFmpeg Devices | Note: You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)
Flyleaf v3.6-pre2 (AIO x64 .NET6 with FFmpeg v4/v5)
-= Re-designing of UI Controls (Focus on WPF) =-
New Features / Resolved Issues
- Introduces FlyleafHost Renderer D3D Surface (WPF VideoView's replacement and Flyleaf's for Winforms)
Early and fast initialization of handles and renderer which will also resolve several issues (related to #204)
Adds Attach / Detach functionality
Self Drag Move also on attach mode (within the host's owner bounds)
Drag n Drop Swap between FlyleafHosts (Shift + Drag)
Custom non-borders resizable windows both on attach and detach mode
Adds support for resize based on Player's aspect ratio
Better UI Performance overall (including Swaps and Switching between Normal to Full Screen)
Adds Z-order surfaces support (related to #149)
Adds support for WPF Windows to the Renderer in addition to WinForms UserControl
Resolves several issues when the host's rectangle was clipped (related to #170)
- Introduces FlyleafME WPF Media Element Control (WPF Flyleaf Control replacement)
Updated with the new FlyleafHost and gains better performance
Code clean-up and styles to allow easier override and customization
Early initialization and respect to the provided configuration (such as Activity Timeout, UI Refresh, Key bindings etc.)
Fixes an issue to respect Subtitles FontStyle
Adds Activity Timeout on Settings
- Code clean-up and performance improvements
- Resolves several issues with DPI (related to #197)
Breaking Changes
- VideoView has been renamed to FlyleafHost
- Flyleaf (WPF Control) has been renamed to FlyleafME (Media Element) and does not require a FlyleafHost as it was required previously with the VideoView (it derives from it)
- Player.IsFullScreen, Config.Player.ActivityTimeout, Config.Player.MouseBindings and Config.Player.KeyBindings.(Enabled/FlyleafWindow) has been transferred to FlyleafHost (see .cs)
- Player.ActivityMode has been removed (its the same as ActivityTimeout=0) however Player.Activity.IsEnabled to temporary turn it on/off
- Swap has been removed as you can now set directly the Players to FlyleafHosts
Solutions Changes
- FlyleafPlayer (WPF Control) (WPF) [Demo/Sample Release] has been updated with new style based on FlyleafME
- FlyleafPlayer (WPF Control) (WinForms) has been removed and it will be reviewed if required in the future
- FlyleafPlayer has been removed as a new repository will be created soon
- WpfFlyleafHost new Test (sample) added for the new FlyleafHost control (ideal for beta testers)
- Utils and Logger has been transferred to new folder under Utils
- Forces C# lang ver 7.3 to make sure everything is compatible with .net framework
New FlyleafHost Sample Usage for WPF (see Controls/WPF/FlyleafHost.cs and WpfFlyleafHost test/sample for more details):
<fl:FlyleafHost Player="{Binding Player1}" Margin="300 200 0 0" Width="140" Height="110" VerticalAlignment="Top" HorizontalAlignment="Left"
AttachedDragMove="Surface" AttachedResize="Overlay"
DetachedDragMove="Both" DetachedResize="Overlay" DetachedTopMost="True"
IsAttached="False"
KeepRatioOnResize="True"
DetachedRememberPosition="True" DetachedRememberSize="True"
DetachedFixedPosition="100 100" DetachedFixedSize="350 200"
DetachedPosition="BottomRight" DetachedPositionMargin="0 0 10 50"
PanMoveWithCtrl="None" PanZoomWithCtrlWheel="None"
>
<fl:FlyleafHost.DetachedContent>
<Border DataContext="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type fl:FlyleafHost}}}" BorderBrush="DarkBlue" BorderThickness="4">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsAttached}" Value="True">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel>
<TextBlock Text="Detached" Foreground="DarkRed" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<ToggleButton Content="Attach / Detach" Foreground="DarkRed" Background="Black" IsChecked="{Binding IsAttached, Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</Border>
</fl:FlyleafHost.DetachedContent>
<Border BorderBrush="DarkBlue" BorderThickness="4">
<ToggleButton Content="Attach / Detach" Foreground="DarkRed" Background="Black" IsChecked="{Binding IsAttached, Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
</fl:FlyleafHost>
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.2 and 5.0.1 (latest 30/5/2022) patched for HLS issue
FFmpeg Devices | Note: You need to manually enable them from the Flyleaf.Engine.xml (set FFmpegDevices to true)