Skip to content

Commit

Permalink
Fix VP9 Encodes being shorter (switched to libvpx-vp9)
Browse files Browse the repository at this point in the history
  • Loading branch information
Alkl58 committed Apr 2, 2021
1 parent 1fa559b commit fadec4b
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 156 deletions.
7 changes: 0 additions & 7 deletions NotEnoughAV1Encodes/CheckDependencies.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,6 @@ public static void Check()
else { MainWindow.SvtAV1Path = null; }
SmallFunctions.Logging("SVT-AV1 Path: " + MainWindow.SvtAV1Path);

// Sets / Checks vpx Path
if (File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "vpxenc.exe"))) { MainWindow.VPXPath = Directory.GetCurrentDirectory(); }
else if (File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "Apps", "vpx", "vpxenc.exe"))) { MainWindow.VPXPath = Path.Combine(Directory.GetCurrentDirectory(), "Apps", "vpx"); }
else if (ExistsOnPath("vpxenc.exe")) { MainWindow.VPXPath = GetFullPathWithOutName("vpxenc.exe"); }
else { MainWindow.VPXPath = null; }
SmallFunctions.Logging("VPXEnc Path: " + MainWindow.VPXPath);

// Sets / Checks mkvtoolnix Path
if (File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "mkvmerge.exe"))) { MainWindow.MKVToolNixPath = Directory.GetCurrentDirectory(); }
else if (File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "Apps", "mkvtoolnix", "mkvmerge.exe"))) { MainWindow.MKVToolNixPath = Path.Combine(Directory.GetCurrentDirectory(), "Apps", "mkvtoolnix"); }
Expand Down
25 changes: 7 additions & 18 deletions NotEnoughAV1Encodes/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -249,11 +249,11 @@
<GroupBox Header="Video" HorizontalAlignment="Left" Height="190" Margin="10,10,0,0" VerticalAlignment="Top" Width="385">
<Grid>
<Label Content="Encoder:" HorizontalAlignment="Left" Margin="19,15,0,0" VerticalAlignment="Top"/>
<ComboBox x:Name="ComboBoxVideoEncoder" HorizontalAlignment="Left" Margin="135,14,0,0" VerticalAlignment="Top" Width="128" Height="28" VerticalContentAlignment="Center" SelectionChanged="ComboBoxVideoEncoder_SelectionChanged" ToolTip="Encoder to use" SelectedIndex="0">
<ComboBoxItem Content="aomenc" IsSelected="True"/>
<ComboBox x:Name="ComboBoxVideoEncoder" HorizontalAlignment="Left" Margin="135,14,0,0" VerticalAlignment="Top" Width="128" Height="28" VerticalContentAlignment="Center" SelectionChanged="ComboBoxVideoEncoder_SelectionChanged" ToolTip="Encoder to use" SelectedIndex="3">
<ComboBoxItem Content="aomenc"/>
<ComboBoxItem Content="rav1e"/>
<ComboBoxItem Content="svt-av1"/>
<ComboBoxItem Content="vp9"/>
<ComboBoxItem Content="vp9" IsSelected="True"/>
</ComboBox>
<Label Content="Bit-Depth:" HorizontalAlignment="Left" Margin="19,54,0,0" VerticalAlignment="Top"/>
<ComboBox x:Name="ComboBoxVideoBitDepth" HorizontalAlignment="Left" Margin="135,52,0,0" VerticalAlignment="Top" Width="60" Height="30" VerticalContentAlignment="Center" ToolTip="Bit-Depth. 10bit recommended for animation and to avoid banding.">
Expand Down Expand Up @@ -294,7 +294,7 @@
</Grid>
</GroupBox>
<Label Content="Advanced Settings:" HorizontalAlignment="Left" Margin="815,10,0,0" VerticalAlignment="Top"/>
<mah:ToggleSwitch x:Name="ToggleSwitchAdvancedVideoSettings" Header="&#xA;" HorizontalAlignment="Left" Height="73" Margin="936,-34,0,0" VerticalAlignment="Top" Width="89" RenderTransformOrigin="0.44,0.39"/>
<mah:ToggleSwitch x:Name="ToggleSwitchAdvancedVideoSettings" Header="&#xA;" HorizontalAlignment="Left" Height="73" Margin="936,-34,0,0" VerticalAlignment="Top" Width="89" RenderTransformOrigin="0.44,0.39" IsOn="True"/>
</Grid>
</mah:MetroTabItem>
<mah:MetroTabItem Header="Advanced" Visibility="{Binding ElementName=ToggleSwitchAdvancedVideoSettings, Path=IsOn, Converter={StaticResource b2v}}">
Expand Down Expand Up @@ -344,9 +344,9 @@
<TextBox x:Name="TextBoxVP9LagInFrames" HorizontalAlignment="Left" Height="29" TextWrapping="Wrap" Text="25" VerticalAlignment="Top" Width="90" Canvas.Left="184" Canvas.Top="119" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label x:Name="LabelVP9ColorFormat" Content="Color Format:" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="312" Canvas.Top="121" />
<ComboBox x:Name="ComboBoxVP9ColorFormat" HorizontalAlignment="Left" VerticalAlignment="Top" Width="115" Canvas.Left="433" Canvas.Top="119" Height="29" VerticalContentAlignment="Center" RenderTransformOrigin="0.722,0.448">
<ComboBoxItem Content="i420" IsSelected="True"/>
<ComboBoxItem Content="i422"/>
<ComboBoxItem Content="i444"/>
<ComboBoxItem Content="4:2:0" IsSelected="True"/>
<ComboBoxItem Content="4:2:2"/>
<ComboBoxItem Content="4:4:4"/>
</ComboBox>
<ComboBox x:Name="ComboBoxAomencVP9Max" IsEnabled="{Binding IsChecked, ElementName=CheckBoxVP9ARNR}" HorizontalAlignment="Left" VerticalAlignment="Top" Width="90" Canvas.Left="740" Canvas.Top="15" Height="29" VerticalContentAlignment="Center" RenderTransformOrigin="0.722,0.448">
<ComboBoxItem Content="15" IsSelected="True"/>
Expand Down Expand Up @@ -396,17 +396,6 @@
<ComboBoxItem Content="psnr" IsSelected="True"/>
<ComboBoxItem Content="ssim"/>
</ComboBox>
<Label x:Name="LabelVP9ColorFormat_Copy" Content="Color Space:" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="312" Canvas.Top="155" />
<ComboBox x:Name="ComboBoxVP9Space" HorizontalAlignment="Left" VerticalAlignment="Top" Width="115" Canvas.Left="433" Canvas.Top="154" Height="29" VerticalContentAlignment="Center" RenderTransformOrigin="0.722,0.448">
<ComboBoxItem Content="unknown" IsSelected="True"/>
<ComboBoxItem Content="bt601"/>
<ComboBoxItem Content="bt709"/>
<ComboBoxItem Content="smpte170"/>
<ComboBoxItem Content="smpte240"/>
<ComboBoxItem Content="bt2020"/>
<ComboBoxItem Content="reserved"/>
<ComboBoxItem Content="sRGB"/>
</ComboBox>
<Label x:Name="LabelVP9LagInFrames_Copy" Content="Max GOP:" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="56" Canvas.Top="155"/>
<TextBox x:Name="TextBoxVP9MaxKF" HorizontalAlignment="Left" Height="29" TextWrapping="Wrap" Text="240" VerticalAlignment="Top" Width="90" Canvas.Left="184" Canvas.Top="153" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"/>
<Label x:Name="LabelVP9ARNRStrength_Copy" IsEnabled="{Binding IsChecked, ElementName=CheckBoxVP9ARNR}" Content="ARNR Type:" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="614" Canvas.Top="85" />
Expand Down
82 changes: 22 additions & 60 deletions NotEnoughAV1Encodes/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,6 @@ public partial class MainWindow : MetroWindow
public static string Rav1ePath = null; // Path to rav1e
public static string SvtAV1Path = null; // Path to svt-av1
public static string MKVToolNixPath = null; // Path to mkvtoolnix
public static string VPXPath = null; // Path to vpxenc
public static bool PySceneFound = false; //
// Temp Variables
public static bool EncodeStarted = false; // Encode Started Boolean
Expand Down Expand Up @@ -795,15 +794,6 @@ private void ComboBoxVideoEncoder_SelectionChanged(object sender, System.Windows
SliderVideoSpeed.Value = 4;
SliderVideoQuality.Value = 30;
SliderVideoQuality.Maximum = 63;
if (VPXPath == null)
{
if (MessageBox.Show("Could not find vpxenc!\nOpen Updater?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
{
Updater updater = new Updater(ComboBoxBaseTheme.Text, ComboBoxAccentTheme.Text);
updater.ShowDialog();
CheckDependencies.Check();
}
}
}
}

Expand Down Expand Up @@ -2206,58 +2196,33 @@ private string SetSvtAV1Command()
private string SetVP9Command()
{
string cmd = "";
cmd += " --bit-depth=" + ComboBoxVideoBitDepth.Text; // Bit-Depth

if (ComboBoxVP9ColorFormat.SelectedIndex == 0)
{
// yuv420p
if (ComboBoxVideoBitDepth.SelectedIndex == 1 || ComboBoxVideoBitDepth.SelectedIndex == 2)
{
// profile=2: 10bit / 12bit
cmd += " --profile=2";
}
}
else
{
// yuv420p / yuv422p / yuv444p
if (ComboBoxVideoBitDepth.SelectedIndex == 1 || ComboBoxVideoBitDepth.SelectedIndex == 2)
{
// profile=3: 10bit / 12bit
cmd += " --profile=3";
}
}

cmd += " --cpu-used=" + SliderVideoSpeed.Value; // Speed
cmd += " -cpu-used " + SliderVideoSpeed.Value; // Speed

// Constant Quality or Target Bitrate
if (RadioButtonVideoConstantQuality.IsChecked == true) { cmd += " --end-usage=q --cq-level=" + SliderVideoQuality.Value; }
else if (RadioButtonVideoBitrate.IsChecked == true) { cmd += " --end-usage=vbr --target-bitrate=" + TextBoxVideoBitrate.Text; }
if (RadioButtonVideoConstantQuality.IsChecked == true) { cmd += " -b:v 0 -crf " + SliderVideoQuality.Value; }
else if (RadioButtonVideoBitrate.IsChecked == true) { cmd += " -b:v " + TextBoxVideoBitrate.Text + "k"; }

if (ToggleSwitchAdvancedVideoSettings.IsOn == false)
{
// Default params when User don't select advanced settings
cmd += " --threads=4 --tile-columns=2 --tile-rows=1";
cmd += " -threads 4 -tile-columns 2 -tile-rows 1";
}
else
{
cmd += " --" + ComboBoxVP9ColorFormat.Text; // Color Format
cmd += " --threads=" + ComboBoxVP9Threads.Text; // Max Threads
cmd += " --tile-columns=" + ComboBoxVP9TileColumns.SelectedIndex; // Tile Columns
cmd += " --tile-rows=" + ComboBoxVP9TileRows.SelectedIndex; // Tile Rows
cmd += " --lag-in-frames=" + TextBoxVP9LagInFrames.Text; // Lag in Frames
cmd += " --kf-max-dist=" + TextBoxVP9MaxKF.Text; // Max GOP
cmd += " --aq-mode=" + ComboBoxVP9AQMode.SelectedIndex; // AQ-Mode
cmd += " --tune=" + ComboBoxVP9ATune.Text; // Tune
cmd += " --tune-content=" + ComboBoxVP9ATuneContent.Text; // Tune-Content
if (ComboBoxVP9Space.SelectedIndex != 0)
{
cmd += " --color-space=" + ComboBoxVP9Space.Text; // Color Space
}
cmd += " -threads " + ComboBoxVP9Threads.Text; // Max Threads
cmd += " -tile-columns " + ComboBoxVP9TileColumns.SelectedIndex; // Tile Columns
cmd += " -tile-rows " + ComboBoxVP9TileRows.SelectedIndex; // Tile Rows
cmd += " -lag-in-frames " + TextBoxVP9LagInFrames.Text; // Lag in Frames
cmd += " -g " + TextBoxVP9MaxKF.Text; // Max GOP
cmd += " -aq-mode " + ComboBoxVP9AQMode.SelectedIndex; // AQ-Mode
cmd += " -tune " + ComboBoxVP9ATune.SelectedIndex; // Tune
cmd += " -tune-content " + ComboBoxVP9ATuneContent.SelectedIndex; // Tune-Content
if (CheckBoxVP9ARNR.IsChecked == true)
{
cmd += " --arnr-maxframes=" + ComboBoxAomencVP9Max.Text; // ARNR Max Frames
cmd += " --arnr-strength=" + ComboBoxAomencVP9Strength.Text; // ARNR Strength
cmd += " --arnr-type=" + ComboBoxAomencVP9ARNRType.Text; // ARNR Type
cmd += " -arnr-maxframes " + ComboBoxAomencVP9Max.Text; // ARNR Max Frames
cmd += " -arnr-strength " + ComboBoxAomencVP9Strength.Text; // ARNR Strength
cmd += " -arnr-type " + ComboBoxAomencVP9ARNRType.Text; // ARNR Type
}
}

Expand Down Expand Up @@ -2898,15 +2863,16 @@ private void EncodeVideo()
}
else if (EncodeMethod == 3) // vp9
{
ffmpegPipe = InputVideo + " " + FilterCommand + PipeBitDepthCommand + " " + VSYNC + " ";
if (OnePass) // One Pass Encoding
{
encoderCMD = '\u0022' + Path.Combine(VPXPath, "vpxenc.exe") + '\u0022' + " - --passes=1" + EncoderVP9Command + " --output=";
encoderCMD += '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + ".ivf") + '\u0022';
encoderCMD = " " + EncoderVP9Command + " ";
encoderCMD += '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + ".webm") + '\u0022';
}
else // Two Pass Encoding First Pass
{
encoderCMD = '\u0022' + Path.Combine(VPXPath, "vpxenc.exe") + '\u0022' + " - --passes=2 --pass=1" + EncoderVP9Command + " --fpf=";
encoderCMD += '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + "_stats.log") + '\u0022' + " --output=NUL";
encoderCMD = " -pass 1 " + EncoderVP9Command + " -passlogfile ";
encoderCMD += '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + "_stats.log") + '\u0022' + " NUL";
}
}
Expand Down Expand Up @@ -2957,9 +2923,9 @@ private void EncodeVideo()
}
else if (EncodeMethod == 3) // vp9
{
encoderCMD = '\u0022' + Path.Combine(VPXPath, "vpxenc.exe") + '\u0022' + " - --passes=2 --pass=2" + EncoderVP9Command + " --fpf=";
encoderCMD = " -pass 2 " + EncoderVP9Command + " -passlogfile ";
encoderCMD += '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + "_stats.log") + '\u0022';
encoderCMD += " --output=" + '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + ".ivf") + '\u0022';
encoderCMD += " " + '\u0022' + Path.Combine(TempPath, TempPathFileName, "Chunks", "split" + index.ToString("D5") + ".webm") + '\u0022';
}
startInfo.Arguments = "/C ffmpeg.exe" + FFmpegProgress + ffmpegPipe + encoderCMD;
Expand Down Expand Up @@ -3326,8 +3292,6 @@ private void SaveSettings(bool SaveProfile, string SaveName)
writer.WriteElementString("VideoAdvancedVP9AQMode", ComboBoxVP9AQMode.SelectedIndex.ToString()); // Video Advanced Settings VP9 AQ Mode
writer.WriteElementString("VideoAdvancedVP9Tune", ComboBoxVP9ATune.SelectedIndex.ToString()); // Video Advanced Settings VP9 Tune
writer.WriteElementString("VideoAdvancedVP9TuneContent", ComboBoxVP9ATuneContent.SelectedIndex.ToString()); // Video Advanced Settings VP9 Tune Content
writer.WriteElementString("VideoAdvancedVP9ColorFormat", ComboBoxVP9ColorFormat.SelectedIndex.ToString()); // Video Advanced Settings VP9 Color Format
writer.WriteElementString("VideoAdvancedVP9ColorSpace", ComboBoxVP9Space.SelectedIndex.ToString()); // Video Advanced Settings VP9 Color Space
writer.WriteElementString("VideoAdvancedVP9ARNR", CheckBoxVP9ARNR.IsChecked.ToString()); // Video Advanced Settings VP9 ARNR
if (CheckBoxAomencARNRMax.IsChecked == true)
{
Expand Down Expand Up @@ -3504,8 +3468,6 @@ private void LoadSettings(bool LoadProfile, string SaveName)
case "VideoAdvancedVP9AQMode": ComboBoxVP9AQMode.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 AQ Mode
case "VideoAdvancedVP9Tune": ComboBoxVP9ATune.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 Tune
case "VideoAdvancedVP9TuneContent": ComboBoxVP9ATuneContent.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 Tune Content
case "VideoAdvancedVP9ColorFormat": ComboBoxVP9ColorFormat.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 Color Format
case "VideoAdvancedVP9ColorSpace": ComboBoxVP9Space.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 Color Space
case "VideoAdvancedVP9ARNR": CheckBoxVP9ARNR.IsChecked = n.InnerText == "True"; break; // Video Advanced Settings VP9 ARNR
case "VideoAdvancedVP9ARNRMax": ComboBoxAomencVP9Max.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 ARNR Max
case "VideoAdvancedVP9ARNRStre": ComboBoxAomencVP9Strength.SelectedIndex = int.Parse(n.InnerText); break; // Video Advanced Settings VP9 ARNR Strength
Expand Down

0 comments on commit fadec4b

Please sign in to comment.