Skip to content

Flyleaf v3.6-pre2 (AIO x64 .NET6 with FFmpeg v4/v5)

Compare
Choose a tag to compare
@SuRGeoNix SuRGeoNix released this 04 Nov 16:21
· 371 commits to master since this release

-= 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)