From 0f107ff843b80a4200f3fc511694b9e68cb12c8a Mon Sep 17 00:00:00 2001 From: Frank Skare Date: Fri, 12 Jun 2020 16:15:18 +0200 Subject: [PATCH] 2.1.3.0 --- Changelog.md | 73 ++++++++++++++++++++++++++++++- Encoding/VideoEncoder.vb | 4 +- Forms/AppsForm.vb | 4 +- Forms/CommandLineForm.Designer.vb | 4 +- Forms/MainForm.vb | 7 +++ Forms/MuxerForm.vb | 3 +- General/GlobalCommands.vb | 2 - General/ProcController.vb | 2 +- My Project/AssemblyInfo.vb | 4 +- UI/Controls/Controls.vb | 64 ++++++++++++++------------- UI/Controls/SearchTextBox.vb | 2 +- UI/Controls/SimpleUI.vb | 43 +++++++----------- UI/ToolStripRendererEx.vb | 20 +++------ docs/generated/tools.rst | 4 +- 14 files changed, 146 insertions(+), 90 deletions(-) diff --git a/Changelog.md b/Changelog.md index 618ddd27..781043a8 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,8 +1,79 @@ -2.1.2.3 Beta (not yet available) +2.1.3.1 Beta (not yet available) ============ +2.1.3.0 +======= + +- Processing dialog fix for new Stop After Current Job feature. +- Web URL is included in the search of the Apps dialog. +- Numerous bugs fixed. +- The Processing dialog has a new feature: Stop After Current Job. +- D2V Witch added and enabled by default for VOB/MPG. +- Command line for some processes like ffmsindex wasn't shown while processing. +- Render, scaling and layout fixes and improvements, especially for 96 DPI. +- PowerShell script host supports events, script examples use events, better error handling. +- Improved Log File Viewer (Main Menu > Tools > Log File). + Tip: The Log File Viewer has a context menu. +- The Preview dialog can be resized with the mouse. +- Support for character # in filenames because MP4Box was finally fixed. +- Various dialogs made resizable and remember their size. +- Maximum number of parallel processes increased from 4 to 16. +- The documentation was greatly improved (still far from perfect though). +- Muxer dialog supports Drag & Drop for subtitles, audio and attachments. +- Video Comparison has hardware render support added. +- aomenc.exe GUI re-enabled. +- Dark color theme for built-in help. +- Improved built-in F1 help. +- ffmpeg video encoder codec FFV1. +- x264 and x265 dialogs have a new Bitrate option, the default value is 0 which + means the bitrate of the project/template in the main dialog is used. +- For file batch jobs only the file name is shown in the jobs dialog and not the full path. +- Audio encoder supports extracting DTS core using ffmpeg. +- The audio Copy/Mux profile has a Extract DTS Core feature. +- The command line audio encoder has a Default and Forced option. +- New chunk encoding feature for x265 parallel processing. +- Media info dialog replaced with MediaInfo.NET. +- The command line video and audio encoder uses cmd.exe directly without creating a bat file, + this avoids creating a temporary bat file and adds full unicode support. +- Portable support added, no need to install anything. +- Setting to allow to use tools with wrong version, + for this a Danger Zone tab was added in the settings. +- The auto crop feature shows progress both in the processing dialog and in the crop dialog. +- Improved issue templates on the github issue tracker. +- The ExecuteCommandLine command has a new Working Directory parameter. +- The launch button in the Apps dialog for a console tool shows its help via Windows Terminal +- Windows Terminal available in the main menu with special StaxRip environment (apps and macros). +- The video encoder dialog feature *Show Command Line* is shown using Windows Terminal. +- Execute Command Line in video encoder dialogs is shown via Windows Terminal. +- In the Apps dialog the tools can be listed using PowerShell Out-GridView. +- Shell Execute flag was added to the command ExecuteCommandLine. +- The global setting 'Add filter to convert chroma subsampling to 4:2:0' + uses now ConvertToYUV420 instead of ConverttoYV12. +- In various command line features the path environment variable of the process has all exe tools + added and all macros are available as environment variables. +- Check added that blocks source files with too long path or filename. + A setting that allows to change the limit exists in the Danger Zone section. +- SVT-AV1 support with GUI. +- Media info folder view was replaced with a new powershell based (Get-MediaInfo) + dialog that supports caching for fast startup perforance. +- When a Event Command executes it writes a log entry, this is now disabled by default + but there is a new setting: 'Write Event Commands to log file'. +- In the Jobs dialog there is a button that shows a menu, this menu can now also be shown + as context menu via right-click on the jobs list and it has various new features. +- The Apps dialog allows to clear custom paths. +- The Apps dialog allows to locate files via Everything. +- Check for Updates added to main menu in Help section. +- Version is shown in main dialog title bar. +- 'Main Menu > Help > Info' shows list with contributors. + + +2.1.3.0 +======= + - processing dialog fix for new Stop After Current Job feature +- x264 M-0.160.3000-33f9e14-gcc10.0.1 Patman +- Web URL is included in the search of the Apps dialog 2.1.2.2 Beta diff --git a/Encoding/VideoEncoder.vb b/Encoding/VideoEncoder.vb index 52c90231..490477fe 100644 --- a/Encoding/VideoEncoder.vb +++ b/Encoding/VideoEncoder.vb @@ -183,7 +183,7 @@ Public MustInherit Class VideoEncoder ret.ShowControlBorder = True ret.Font = New Font("Segoe UI", 9 * s.UIScaleFactor) - Dim pad = ret.Font.Height \ 8 + Dim pad = ret.Font.Height \ 9 For Each pair In GetMenu() Dim bn As New ToolStripButton @@ -300,7 +300,7 @@ Public MustInherit Class VideoEncoder End Using End Function - Public Sub LoadMuxer(profile As Profile) + Sub LoadMuxer(profile As Profile) Muxer = DirectCast(ObjectHelp.GetCopy(profile), Muxer) Muxer.Init() g.MainForm.llMuxer.Text = Muxer.OutputExt.ToUpper diff --git a/Forms/AppsForm.vb b/Forms/AppsForm.vb index bdee86d5..364c1e1b 100644 --- a/Forms/AppsForm.vb +++ b/Forms/AppsForm.vb @@ -312,8 +312,6 @@ Public Class AppsForm AddHandler DownloadButton.Click, Sub() g.ShellExecute(CurrentPackage.DownloadURL) DownloadButton.Font = New Font("Segoe UI", 10) - DownloadButton.Margin = New Padding(FontHeight \ 3) - DownloadButton.Padding = New Padding(FontHeight \ 5) DownloadButton.AutoSizeMode = AutoSizeMode.GrowAndShrink DownloadButton.AutoSize = True @@ -508,7 +506,7 @@ Public Class AppsForm For Each pack In Package.Items.Values Dim plugin = TryCast(pack, PluginPackage) - Dim searchString = pack.Name + pack.Description + pack.Version + + Dim searchString = pack.Name + pack.Description + pack.Version + pack.WebURL + plugin?.VSFilterNames.Join(" ") + pack.Path + plugin?.AvsFilterNames.Join(" ") If searchString?.ToLower.Contains(SearchTextBox.Text?.ToLower) Then diff --git a/Forms/CommandLineForm.Designer.vb b/Forms/CommandLineForm.Designer.vb index 9fa738f8..3d3e536a 100644 --- a/Forms/CommandLineForm.Designer.vb +++ b/Forms/CommandLineForm.Designer.vb @@ -75,7 +75,7 @@ Partial Class CommandLineForm ' Me.cbGoTo.Anchor = System.Windows.Forms.AnchorStyles.Left Me.cbGoTo.FormattingEnabled = True - Me.cbGoTo.Location = New System.Drawing.Point(15, 514) + Me.cbGoTo.Location = New System.Drawing.Point(15, 519) Me.cbGoTo.Margin = New System.Windows.Forms.Padding(15, 0, 15, 0) Me.cbGoTo.Name = "cbGoTo" Me.cbGoTo.Size = New System.Drawing.Size(530, 56) @@ -85,7 +85,7 @@ Partial Class CommandLineForm ' Me.bnMenu.Anchor = System.Windows.Forms.AnchorStyles.None Me.bnMenu.ContextMenuStrip = Me.cms - Me.bnMenu.Location = New System.Drawing.Point(664, 507) + Me.bnMenu.Location = New System.Drawing.Point(666, 507) Me.bnMenu.Margin = New System.Windows.Forms.Padding(0, 8, 0, 8) Me.bnMenu.ShowMenuSymbol = True Me.bnMenu.Size = New System.Drawing.Size(100, 70) diff --git a/Forms/MainForm.vb b/Forms/MainForm.vb index b028f5fb..21b9d7e3 100644 --- a/Forms/MainForm.vb +++ b/Forms/MainForm.vb @@ -4176,6 +4176,10 @@ Public Class MainForm l = ui.AddLabel(pathPage, "Default Target Folder:") l.Help = "Leave empty to use the source file folder." + Dim macroAction = Function() As Object + MacrosForm.ShowDialogForm() + End Function + Dim tm = ui.AddTextMenu(pathPage) tm.Label.Visible = False tm.Edit.Expand = True @@ -4184,6 +4188,7 @@ Public Class MainForm tm.AddMenu("Browse Folder...", Function() g.BrowseFolder(p.DefaultTargetFolder)) tm.AddMenu("Directory of source file", "%source_dir%") tm.AddMenu("Parent directory of source file directory", "%source_dir_parent%") + tm.AddMenu("Macros...", macroAction) l = ui.AddLabel(pathPage, "Default Target Name:") l.Help = "Leave empty to use the source filename" @@ -4196,6 +4201,7 @@ Public Class MainForm tm.Edit.SaveAction = Sub(value) p.DefaultTargetName = value tm.AddMenu("Name of source file without extension", "%source_name%") tm.AddMenu("Name of source file directory", "%source_dir_name%") + tm.AddMenu("Macros...", macroAction) l = ui.AddLabel(pathPage, "Temp Files Folder:") l.Help = "Leave empty to use the source file folder." @@ -4216,6 +4222,7 @@ Public Class MainForm tm.Edit.SaveAction = Sub(value) p.TempDir = value tm.AddMenu("Browse Folder...", tempDirFunc) tm.AddMenu("Source File Directory", "%source_dir%%source_name%_temp") + tm.AddMenu("Macros...", macroAction) ui.CreateFlowPage("Assistant") diff --git a/Forms/MuxerForm.vb b/Forms/MuxerForm.vb index fb84bb02..7273e975 100644 --- a/Forms/MuxerForm.vb +++ b/Forms/MuxerForm.vb @@ -877,7 +877,8 @@ Public Class MuxerForm tb.Text = "Title" tb.Expandet = True tb.Property = NameOf(MkvMuxer.Title) - tb.MacroDialog() + tb.Button.Text = "%" + tb.Button.ClickAction = Sub() MacrosForm.ShowDialogForm() Dim t = UI.AddText() t.Text = "Video Track Name" diff --git a/General/GlobalCommands.vb b/General/GlobalCommands.vb index 18fba214..fa2da7e0 100644 --- a/General/GlobalCommands.vb +++ b/General/GlobalCommands.vb @@ -269,8 +269,6 @@ Public Class GlobalCommands If version.MinorRevision <> 0 Then Return "Beta" End If - - Return "Stable" End Function diff --git a/General/ProcController.vb b/General/ProcController.vb index e9432ba1..89d11d81 100644 --- a/General/ProcController.vb +++ b/General/ProcController.vb @@ -29,7 +29,7 @@ Public Class ProcController CheckBox.Margin = New Padding(pad, pad, 0, pad) CheckBox.Appearance = Appearance.Button CheckBox.TextAlign = ContentAlignment.MiddleCenter - CheckBox.Font = New Font("Consolas", 10 * s.UIScaleFactor) + CheckBox.Font = New Font("Consolas", 9 * s.UIScaleFactor) CheckBox.Text = " " + proc.Title + " " Dim sz = TextRenderer.MeasureText(CheckBox.Text, CheckBox.Font) CheckBox.Width = sz.Width + CheckBox.Font.Height diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 301c2ef3..2b45ee4a 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -7,6 +7,6 @@ Imports System.Runtime.InteropServices - - + + diff --git a/UI/Controls/Controls.vb b/UI/Controls/Controls.vb index 7f235f11..a16859bf 100644 --- a/UI/Controls/Controls.vb +++ b/UI/Controls/Controls.vb @@ -793,12 +793,12 @@ Namespace UI Sub MenuOpening(sender As Object, e As CancelEventArgs) Menu.MinimumSize = New Size(Width, 0) - For Each i As ActionMenuItem In Menu.Items - i.Font = New Font("Segoe UI", 9 * s.UIScaleFactor, If(Not Value Is Nothing AndAlso Value.Equals(i.Tag), FontStyle.Bold, FontStyle.Regular)) + For Each mi As ActionMenuItem In Menu.Items + mi.Font = New Font("Segoe UI", 9 * s.UIScaleFactor, If(Not Value Is Nothing AndAlso Value.Equals(mi.Tag), FontStyle.Bold, FontStyle.Regular)) - If (Menu.Width - i.Width) > 2 Then - i.AutoSize = False - i.Width = Menu.Width - 1 + If (Menu.Width - mi.Width) > 2 Then + mi.AutoSize = False + mi.Width = Menu.Width - 1 End If Next End Sub @@ -1001,8 +1001,6 @@ Namespace UI Dim nextPos As Integer For Each ctrl As Control In Controls - If nextPos = 0 Then nextPos = 3 - If ctrl.Visible Then nextPos += ctrl.Margin.Left + ctrl.Width + ctrl.Margin.Right @@ -1036,10 +1034,14 @@ Namespace UI (FlowDirection = FlowDirection.LeftToRight OrElse FlowDirection = FlowDirection.RightToLeft) Then - For Each i As Control In Controls + For Each ctrl As Control In Controls Dim offset = 0 - If TypeOf i Is CheckBox Then offset = 1 - i.Top = CInt((Height - i.Height) / 2) + offset + + If TypeOf ctrl Is CheckBox Then + offset = 1 + End If + + ctrl.Top = CInt((Height - ctrl.Height) / 2) + offset Next End If @@ -1048,8 +1050,8 @@ Namespace UI If labelBlocks.Count > 0 Then Dim hMax = Aggregate i In labelBlocks Into Max(TextRenderer.MeasureText(i.Label.Text, i.Label.Font).Width) - For Each i In labelBlocks - i.Label.Offset = hMax / i.Label.Font.Height + For Each lb In labelBlocks + lb.Label.Offset = hMax / lb.Label.Font.Height Next End If End Sub @@ -1145,10 +1147,9 @@ Namespace UI Dim h = CInt(Font.Height * 0.3) Dim w = h * 2 - Dim cs = ClientSize - Dim x1 = If(Text = "", CInt(cs.Width / 2 - w / 2), cs.Width - w - CInt(w * 0.7)) - Dim y1 = CInt(cs.Height / 2 - h / 2) + Dim x1 = If(Text = "", Width \ 2 - w \ 2, Width - w - CInt(w * 0.7)) + Dim y1 = CInt(Height / 2 - h / 2) Dim x2 = CInt(x1 + w / 2) Dim y2 = y1 + h @@ -1717,7 +1718,7 @@ Namespace UI h -= 1 End If - UpControl.Width = CInt(ClientSize.Height * 0.7) + UpControl.Width = CInt(Height * 0.8) UpControl.Height = h UpControl.Top = 2 UpControl.Left = ClientSize.Width - UpControl.Width - 2 @@ -1727,7 +1728,7 @@ Namespace UI DownControl.Top = ClientSize.Height - h - 2 DownControl.Height = h - TextBox.Top = (ClientSize.Height - TextBox.Height) \ 2 + TextBox.Top = (ClientSize.Height - TextBox.Height) \ 2 + 1 TextBox.Left = 2 TextBox.Width = DownControl.Left - 3 TextBox.Height = TextRenderer.MeasureText("gG", TextBox.Font).Height @@ -1785,7 +1786,7 @@ Namespace UI End If End Sub - Private Class Edit + Class Edit Inherits TextBox Private BlockTextChanged As Boolean @@ -1797,11 +1798,13 @@ Namespace UI End Sub Protected Overrides Sub OnTextChanged(e As EventArgs) - If Not BlockTextChanged Then MyBase.OnTextChanged(e) + If Not BlockTextChanged Then + MyBase.OnTextChanged(e) + End If End Sub End Class - Private Class UpDownButton + Class UpDownButton Inherits Control Private IsUp As Boolean @@ -1851,25 +1854,24 @@ Namespace UI Protected Overrides Sub OnPaint(e As PaintEventArgs) MyBase.OnPaint(e) - - e.Graphics.SmoothingMode = SmoothingMode.HighQuality + Dim gx = e.Graphics + gx.SmoothingMode = SmoothingMode.HighQuality If IsPressed Then - e.Graphics.Clear(Color.LightBlue) + gx.Clear(Color.LightBlue) ElseIf IsHot Then - e.Graphics.Clear(Color.AliceBlue) + gx.Clear(Color.AliceBlue) Else - e.Graphics.Clear(SystemColors.Control) + gx.Clear(SystemColors.Control) End If - ControlPaint.DrawBorder(e.Graphics, ClientRectangle, Color.CadetBlue, ButtonBorderStyle.Solid) + ControlPaint.DrawBorder(gx, ClientRectangle, Color.CadetBlue, ButtonBorderStyle.Solid) Dim h = CInt(Font.Height * 0.2) Dim w = h * 2 - Dim cs = ClientSize - Dim x1 = CInt(cs.Width / 2 - w / 2) - Dim y1 = CInt(cs.Height / 2 - h / 2) + Dim x1 = Width \ 2 - w \ 2 + Dim y1 = CInt(Height / 2 - h / 2) Dim x2 = CInt(x1 + w / 2) Dim y2 = y1 + h @@ -1884,8 +1886,8 @@ Namespace UI End If Using pen = New Pen(If(Enabled, Color.Black, SystemColors.GrayText), Font.Height / 20.0F) - e.Graphics.DrawLine(pen, x1, y1, x2, y2) - e.Graphics.DrawLine(pen, x2, y2, x3, y3) + gx.DrawLine(pen, x1, y1, x2, y2) + gx.DrawLine(pen, x2, y2, x3, y3) End Using End Sub diff --git a/UI/Controls/SearchTextBox.vb b/UI/Controls/SearchTextBox.vb index 0877a69e..9a2dc900 100644 --- a/UI/Controls/SearchTextBox.vb +++ b/UI/Controls/SearchTextBox.vb @@ -127,7 +127,7 @@ Public Class SearchTextBox e.Graphics.Clear(Color.White) End If - Using pen = New Pen(Color.DarkSlateGray, 2) + Using pen = New Pen(Color.DarkSlateGray, FontHeight / 16.0F) Dim offset = CSng(Width / 3.3) e.Graphics.DrawLine(pen, offset, offset, Width - offset, Height - offset) e.Graphics.DrawLine(pen, Width - offset, offset, offset, Height - offset) diff --git a/UI/Controls/SimpleUI.vb b/UI/Controls/SimpleUI.vb index 400130e1..64977949 100644 --- a/UI/Controls/SimpleUI.vb +++ b/UI/Controls/SimpleUI.vb @@ -390,8 +390,8 @@ Public Class SimpleUI FlowDirection = FlowDirection.TopDown End Sub - Protected Overrides Sub OnLayout(levent As LayoutEventArgs) - MyBase.OnLayout(levent) + Protected Overrides Sub OnLayout(e As LayoutEventArgs) + MyBase.OnLayout(e) End Sub Protected Overrides Sub OnCreateControl() @@ -536,9 +536,9 @@ Public Class SimpleUI End Sub Protected Overrides Sub OnLayout(levent As LayoutEventArgs) - Height = CInt(FontHeight * 1.4) - Width = FontHeight * 4 MyBase.OnLayout(levent) + Height = CInt(Font.Height * 1.3) + Width = CInt(Font.Height * 4.5) End Sub Sub Save() @@ -633,7 +633,7 @@ Public Class SimpleUI Width = FontHeight * WidthFactor End If - Height = CInt(FontHeight * 1.4) + Height = CInt(FontHeight * 1.45) End If MyBase.OnLayout(levent) @@ -951,15 +951,6 @@ Public Class SimpleUI NumEdit.Config = value End Set End Property - - Protected Overrides Sub OnLayout(levent As LayoutEventArgs) - If Not NumEdit Is Nothing Then - NumEdit.Height = CInt(FontHeight * 1.4) - NumEdit.Width = FontHeight * 4 - End If - - MyBase.OnLayout(levent) - End Sub End Class Public Class ButtonBlock @@ -1141,7 +1132,7 @@ Public Class SimpleUI Sub New(ui As SimpleUI) MyBase.New(ui) Button.Width = FontHeight * 2 - Button.Height = CInt(FontHeight * 1.5) + Button.Height = CInt(FontHeight * 1.45) Button.AutoSizeMode = AutoSizeMode.GrowOnly Button.AutoSize = True Button.Text = "..." @@ -1172,20 +1163,16 @@ Public Class SimpleUI End Sub Sub BrowseFolder() - Button.ClickAction = Sub() - Using dialog As New FolderBrowserDialog - dialog.SetSelectedPath(s.LastSourceDir) + Button.ClickAction = + Sub() + Using dialog As New FolderBrowserDialog + dialog.SetSelectedPath(s.LastSourceDir) - If dialog.ShowDialog = DialogResult.OK Then - Edit.Text = dialog.SelectedPath - End If - End Using - End Sub - End Sub - - Sub MacroDialog() - Button.Text = "%" - Button.ClickAction = Sub() MacrosForm.ShowDialogForm() + If dialog.ShowDialog = DialogResult.OK Then + Edit.Text = dialog.SelectedPath + End If + End Using + End Sub End Sub End Class diff --git a/UI/ToolStripRendererEx.vb b/UI/ToolStripRendererEx.vb index 19e99198..77d47da2 100644 --- a/UI/ToolStripRendererEx.vb +++ b/UI/ToolStripRendererEx.vb @@ -169,17 +169,9 @@ Public Class ToolStripRendererEx Dim rect = New Rectangle(Point.Empty, e.Item.Size) If IsFlat() Then - Dim button = TryCast(e.Item, ToolStripButton) - - If Not button Is Nothing AndAlso button.Checked Then - Using brush As New SolidBrush(ColorChecked) - gx.FillRectangle(brush, rect) - End Using - Else - Using brush As New SolidBrush(ColorChecked) - gx.FillRectangle(brush, rect) - End Using - End If + Using brush As New SolidBrush(ColorChecked) + gx.FillRectangle(brush, rect) + End Using Else rect = New Rectangle(rect.X, rect.Y, rect.Width - 1, rect.Height - 1) @@ -299,13 +291,13 @@ Public Class ToolStripRendererEx End Using Else Dim x1 = e.Item.Width - e.Item.Height * 0.6F - Dim y1 = e.Item.Height * 0.25F + Dim y1 = (e.Item.Height * 0.25F) - 1 Dim x2 = x1 + e.Item.Height * 0.25F - Dim y2 = e.Item.Height / 2.0F + Dim y2 = (e.Item.Height / 2.0F) - 1 Dim x3 = x1 - Dim y3 = e.Item.Height * 0.75F + Dim y3 = (e.Item.Height * 0.75F) - 1 Using pen = New Pen(e.Item.ForeColor, e.Item.Font.Height / 16.0F) gx.DrawLine(pen, x1, y1, x2, y2) diff --git a/docs/generated/tools.rst b/docs/generated/tools.rst index 4170d053..f87a89fb 100644 --- a/docs/generated/tools.rst +++ b/docs/generated/tools.rst @@ -111,7 +111,7 @@ Tools "mkvmerge","Console App","mkvmerge.exe","47","2020-05-30" "MP4Box","Console App","MP4Box.exe","0.9.0-DEV-rev0-g81b4481e1-gcc10.0.1 Patman","2020-04-18" "mtn","Console App","mtn.exe","2.0.1","2019-06-27" - "NVEnc","Console App","NVEncC64.exe","5.03","2020-05-31" + "NVEnc","Console App","NVEncC64.exe","5.04","2020-06-11" "PNGopt","Console App","apngopt.exe","1.4","2019-01-01" "Python","Console App","python.exe","3.8.3121","2020-04-29" "qaac","Console App","qaac64.exe","2.68","2018-11-20" @@ -120,7 +120,7 @@ Tools "SVT-AV1","Console App","SvtAv1EncApp.exe","0.8.2","2020-04-20" "VCEEnc","Console App","VCEEncC64.exe","6.0","2020-04-20" "vspipe","Console App","vspipe.exe","r50","2020-05-08" - "x264","Console App","x264.exe","2991-1771b55 Patman","2020-02-20" + "x264","Console App","x264.exe","M-0.160.3000-33f9e14-gcc10.0.1 Patman","2020-04-11" "x265","Console App","x265.exe","M-3.4+6-g73f96ff39-gcc11.0.0 Patman","2020-05-30" "xvid_encraw","Console App","xvid_encraw.exe","1.3.7","" "BDSup2Sub++","GUI App","bdsup2sub++.exe","1.0.3","2018-05-09"