Releases: SuRGeoNix/Flyleaf
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)
Flyleaf v3.5.10 (AIO x64 .NET6 with FFmpeg v4/v5)
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)
- Engine: Fixes an issue with engine's thread for stats calculation while using multiple players
- Config: Adds Config.Subtitles.Parser for custom formatting/parsing
- Config: Adds Config.Player.MaxLatency for the new low latency with audio implementation which is embedded to default AVS usage
- Player: Fixes a thread safety issue during Stop and Open/OpenAsync/Config.Video.AspectRatio change
- Player: Adds Usage.ZeroLatencyAudioVideo for another low latency which supports audio with (no respect to min buffer or max latency)
- Player: Improves speed playback
- Plugins: Improves handling with media file extensions
- Renderer: Fixes a rendering issue while the Player was buffering (no layout update)
- VideoView: Fixes an issue with jitter while dragging (DPI)
- VideoView: Fixes an issue with Subscribe Events on early player assignment (mainly for front window)
- VideoView: Fixes an issue with front window's visibility
- VideoView: Fixes an issue with early actions (eg. swapping when collapsed in a tab control) before the template has been applied by creating winforms control earlier
- Controls.WPF: Includes the new Max Latency in Settings
- Controls.WPF: Updates FlyleafLib, MaterialDesign and Dragablz
Flyleaf v3.5.8 (AIO x64 .NET6 with FFmpeg v4/v5)
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)
- Player: Introduces TakeSnapshotToBitmap and renames old TakeSnapshot to TakeSnapshotToFile
- Player: Fixes a critical issue with playlists (switching between playlist streams)
- Renderer: Fixes issues and improves GetBitmap
- Logger: Improves file writer with caching and by avoiding writing to file from UI thread
- Engine.Config: Introduces LogCachedLines to set cached lines before writing/flushing to file
- Plugins.YoutubeDL: Fixes an issue with invalid filename on windows systems
- Updates Vortice
- Controls.WPF: Introduces ThemeLoaded event to properly manually change theme colors if required
Flyleaf v3.5.7 (AIO x64 .NET6 with FFmpeg v5)
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)
- Overall: UI update improvements
- VideoView: Fixes an issue with WindowsFormsHost and Front Window within a Scroll Viewer
- Renderer: Introduces Player.renderer.GetBitmap which can be used in parallel with rendering to retrieve (and resize if required) a gpu texture
- TakeSnapshot: Improvements and adds resize on gpu support
- Languages: Better handling of audio, subtitles and online subtitles languages (using windows cultures)
- Config: Introduces Config.Video.ClearScreenOnOpen to allow the last frame to be presented until the new open has been completed
- Config: Introduces Config.Video.Swap10Bit to use 10-bit instead of 8-bit swap chain
- Config: Introduces Config.Video.SwapBuffers to manually set render's swap chain buffers
- Controls.WPF: Fixes UIConfig to properly save for subtitles FontWeight, FontStyle and FontStretch
Flyleaf v3.5.6 (AIO x64 .NET6 with FFmpeg v5)
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)
- Config: Fixes clone implementation
- Demuxer/Screamer: Improves EOF without raising errors in some cases
- M3UPlaylist: Fixes an issue with Tags
- Mouse: Fixes an issue with WinMoveOnDrag (sometimes it was moving the window when it should not)
- Remuxer: Fixes a possible issue with TS extension by adding it manually on the demuxer
- Renderer: Allows D3D11 to play HDR videos (even if does not support it yet) when forced as VP
- VideoView: Binds VideoViews visibility with the Foreground Window
- Controls.WPF: Fixes Subtitles Fonts to respect FontFamily configuration
- Controls.WPF: Fixes an issue with Custom Aspect Ratio
Flyleaf v3.5.2 (AIO x64 .NET6) - Includes latest ffmpeg 4/5 patched libraries
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
- Adds FFmpeg 5 support
Just add FFmpeg.Autogen v5 NuGet package to your application
- Adds FFmpeg devices support
- Requires avdevices/avfilters/postproc dlls
- Set FFmpegDevices engine's config to true
- List of available Audio/Video Cap Devices can be found in Engine.Audio/Engine.Video
- Introduces new scheme device://[device_name]?[FFmpeg_Url]
Sample device urls:
device://gdigrab?desktop
device://gdigrab?title=Command Prompt
device://dshow?video=Lenovo Camera
device://dshow?audio=Microphone (Relatek):video=Lenovo Camera
Notes:
- Remuxer (Recording/Downloader) might not support the output format context (it will require transcoding)
- To use with the sample version make sure you edit Flyleaf.Engine.xml and set FFmpegDevices to true (check log file for available cap devices)
- Fixes and improves activity mode
- Fixes an issue with Alt+F4 on VideoView's front window
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)