Skip to content

Commit 747bb4a

Browse files
committed
av1an: Option to set encoder threads, install path length warning, UI improvements
1 parent aa96426 commit 747bb4a

File tree

13 files changed

+103
-27
lines changed

13 files changed

+103
-27
lines changed

ff-utils-winforms/Data/Codecs/Video/AomAv1.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,16 @@ public CodecArgs GetArgs(Dictionary<string, string> encArgs = null, MediaFile me
3535
string preset = encArgs.ContainsKey("preset") ? encArgs["preset"] : Presets[PresetDefault];
3636
string pixFmt = encArgs.ContainsKey("pixFmt") ? encArgs["pixFmt"] : ColorFormats[ColorFormatDefault];
3737
string grain = encArgs.ContainsKey("grainSynthStrength") ? encArgs["grainSynthStrength"] : "0";
38+
string thr = encArgs.ContainsKey("threads") ? encArgs["threads"] : "0";
3839
string denoise = encArgs.ContainsKey("grainSynthDenoise") ? (encArgs["grainSynthDenoise"].GetBool() ? "1" : "0") : "0";
3940
string tiles = CodecUtils.GetTilingArgs(mediaFile.VideoStreams.FirstOrDefault().Resolution, "--tile-columns=", "--tile-rows=");
4041
string cust = encArgs.ContainsKey("custom") ? encArgs["custom"] : "";
41-
return new CodecArgs($" -e aom -v \" --end-usage=q --cpu-used={preset} --cq-level={q} --kf-min-dist=12 --kf-max-dist={g} --threads=4 --enable-dnl-denoising={denoise} --denoise-noise-level={grain} {tiles} --enable-keyframe-filtering=0 {cust} \" --pix-format {pixFmt}");
42+
43+
return new CodecArgs($" -e aom -v \" " +
44+
$"--end-usage=q --cpu-used={preset} --cq-level={q} " +
45+
$"--kf-min-dist=12 --kf-max-dist={g} " +
46+
$"--enable-dnl-denoising={denoise} --denoise-noise-level={grain} " +
47+
$"--enable-keyframe-filtering=0 --threads={thr} {tiles} {cust} \" --pix-format {pixFmt}");
4248
}
4349
}
4450
}

ff-utils-winforms/Data/Codecs/Video/SvtAv1.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ public CodecArgs GetArgs(Dictionary<string, string> encArgs = null, MediaFile me
3636
string preset = encArgs.ContainsKey("preset") ? encArgs["preset"] : Presets[PresetDefault];
3737
string pixFmt = encArgs.ContainsKey("pixFmt") ? encArgs["pixFmt"] : ColorFormats[ColorFormatDefault];
3838
string grain = encArgs.ContainsKey("grainSynthStrength") ? encArgs["grainSynthStrength"] : "0";
39+
string thr = encArgs.ContainsKey("threads") ? encArgs["threads"] : "0";
3940
string tiles = CodecUtils.GetTilingArgs(mediaFile.VideoStreams.FirstOrDefault().Resolution, "--tile-rows ", "--tile-columns ");
4041
string cust = encArgs.ContainsKey("custom") ? encArgs["custom"] : "";
41-
return new CodecArgs($" -e svt-av1 --force -v \" --preset {preset} --crf {q} --keyint {g} --lp 4 --film-grain {grain} {tiles} {cust} \" --pix-format {pixFmt}");
42+
return new CodecArgs($" -e svt-av1 --force -v \" --preset {preset} --crf {q} --keyint {g} --lp {thr} --film-grain {grain} {tiles} {cust} \" --pix-format {pixFmt}");
4243
}
4344
}
4445
}

ff-utils-winforms/Data/Codecs/Video/Vpx.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,18 @@ public CodecArgs GetArgs(Dictionary<string, string> encArgs = null, MediaFile me
3333
bool vmaf = encArgs.ContainsKey("qMode") && (UI.Tasks.Av1an.QualityMode)encArgs["qMode"].GetInt() == UI.Tasks.Av1an.QualityMode.TargetVmaf;
3434
string q = vmaf ? "0" : encArgs.ContainsKey("q") ? encArgs["q"] : QDefault.ToString();
3535
string preset = encArgs.ContainsKey("preset") ? encArgs["preset"] : Presets[PresetDefault];
36+
string thr = encArgs.ContainsKey("threads") ? encArgs["threads"] : "0";
3637
string pixFmt = encArgs.ContainsKey("pixFmt") ? encArgs["pixFmt"] : ColorFormats[ColorFormatDefault];
3738
bool is420 = !(pixFmt.Contains("444") || pixFmt.Contains("422"));
3839
int b = pixFmt.Split('p').LastOrDefault().GetInt();
3940
b = (b > 0) ? b : 8; // Make bit depth default to 8 if it was detected as 0 (e.g. when using yuv420p which does not explicitly specify 8-bit)
4041
int p = b > 8 ? (is420 ? 2 : 3) : (is420 ? 0 : 1); // Profile 0: 4:2:0 8-bit | Profile 1: 4:2:2/4:4:4 8-bit | Profile 2: 4:2:0 10/12-bit | Profile 3: 4:2:2/4:4:4 10/12-bit
4142
string tiles = CodecUtils.GetTilingArgs(mediaFile.VideoStreams.FirstOrDefault().Resolution, "--tile-columns=", "--tile-rows=");
4243
string cust = encArgs.ContainsKey("custom") ? encArgs["custom"] : "";
43-
return new CodecArgs($" -e vpx --force -v \" --codec=vp9 --profile={p} --bit-depth={b} --end-usage=q --cpu-used={preset} --cq-level={q} --kf-max-dist={g} {tiles} {cust} \" --pix-format {pixFmt}");
44+
45+
return new CodecArgs($" -e vpx --force -v \" --codec=vp9 --profile={p} --bit-depth={b} " +
46+
$"--end-usage=q --cpu-used={preset} --cq-level={q} " +
47+
$"--kf-max-dist={g} --threads={thr} --row-mt=1 {tiles} {cust} \" --pix-format {pixFmt}");
4448
}
4549
}
4650
}

ff-utils-winforms/Data/Codecs/Video/X265.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ public CodecArgs GetArgs(Dictionary<string, string> encArgs = null, MediaFile me
3232
string q = vmaf ? "0" : encArgs.ContainsKey("q") ? encArgs["q"] : QDefault.ToString();
3333
string preset = encArgs.ContainsKey("preset") ? encArgs["preset"] : Presets[PresetDefault];
3434
string pixFmt = encArgs.ContainsKey("pixFmt") ? encArgs["pixFmt"] : ColorFormats[ColorFormatDefault];
35+
string thr = encArgs.ContainsKey("threads") ? encArgs["threads"] : "0";
3536
string cust = encArgs.ContainsKey("custom") ? encArgs["custom"] : "";
36-
return new CodecArgs($" -e x265 --force -v \" --crf {q} --preset {preset} --keyint {g} --frame-threads 1 {cust} \" --pix-format {pixFmt}");
37+
return new CodecArgs($" -e x265 --force -v \" --crf {q} --preset {preset} --keyint {g} --frame-threads {thr} {cust} \" --pix-format {pixFmt}");
3738
}
3839
}
3940
}

ff-utils-winforms/Forms/MainForm.Av1an.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ partial class MainForm
2929
public TextBox av1anCustomEncArgsBox { get { return av1anCustomEncArgs; } }
3030
public NumericUpDown av1anGrainSynthStrengthUpDown { get { return av1anGrainSynthStrength; } }
3131
public CheckBox av1anGrainSynthDenoiseBox { get { return av1anGrainSynthDenoise; } }
32+
public NumericUpDown av1anThreadsUpDown { get { return av1anThreads; } }
3233

3334

3435
public ComboBox av1anAudCodecBox { get { return av1anAudCodec; } }
@@ -85,6 +86,7 @@ public void LoadConfigAv1an()
8586
ConfigParser.LoadComboxIndex(av1anOptsChunkMode);
8687
ConfigParser.LoadComboxIndex(av1anOptsConcatMode);
8788
ConfigParser.LoadGuiElement(av1anOptsWorkerCount, false);
89+
ConfigParser.LoadGuiElement(av1anThreads, false);
8890
}
8991

9092
public void SaveConfigAv1an(object sender = null, EventArgs e = null)
@@ -98,6 +100,7 @@ public void SaveConfigAv1an(object sender = null, EventArgs e = null)
98100
ConfigParser.SaveComboxIndex(av1anOptsChunkMode);
99101
ConfigParser.SaveComboxIndex(av1anOptsConcatMode);
100102
ConfigParser.SaveGuiElement(av1anOptsWorkerCount);
103+
ConfigParser.SaveGuiElement(av1anThreads);
101104
}
102105

103106
private void av1anAudCodec_SelectedIndexChanged(object sender, EventArgs e)

ff-utils-winforms/Forms/MainForm.Designer.cs

Lines changed: 57 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ff-utils-winforms/Forms/MainForm.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
using Nmkoder.Data.Ui;
2121
using Nmkoder.Utils;
2222
using Nmkoder.Forms.Utils;
23+
using Paths = Nmkoder.Data.Paths;
2324

2425
namespace Nmkoder.Forms
2526
{
@@ -76,6 +77,9 @@ private async void MainForm_Shown(object sender, EventArgs e)
7677

7778
if (Program.args.Where(x => x.StartsWith("package=")).Count() == 1)
7879
await PackageBuild.Run(Program.args.Where(x => x.StartsWith("package=")).First().Split('=')[1]);
80+
81+
if (Paths.GetExe().Length > 150)
82+
Logger.Log($"Warning: Nmkoder's installation path is very long ({Paths.GetExe().Length} characters) - This can lead to problems. It is recommended to move it to a higher directory to reduce the path length.");
7983
}
8084

8185
void LoadUiConfig()

ff-utils-winforms/Forms/MainForm.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,9 @@
120120
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
121121
<value>17, 17</value>
122122
</metadata>
123+
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
124+
<value>17, 17</value>
125+
</metadata>
123126
<metadata name="checkItemsContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
124127
<value>107, 17</value>
125128
</metadata>

ff-utils-winforms/IO/Config.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,7 @@ private static string WriteDefaultValIfExists(string keyStr, Type type)
267267
if (key == Key.av1anOptsChunkMode) return WriteDefault(key, $"1");
268268
if (key == Key.defaultKeyIntSecs) return WriteDefault(key, $"10");
269269
if (key == Key.av1anOptsWorkerCount) return WriteDefault(key, $"{Av1an.GetDefaultWorkerCount()}");
270+
if (key == Key.av1anThreads) return WriteDefault(key, $"2");
270271
if (key == Key.mp4Faststart) return WriteDefault(key, "True");
271272
if (key == Key.metaMode) return WriteDefault(key, "1");
272273

@@ -291,6 +292,7 @@ public enum Key
291292
{
292293
autoCropSamples,
293294
av1anCmdVisible,
295+
av1anThreads,
294296
av1anOptsChunkMode,
295297
av1anOptsWorkerCount,
296298
cmdDebugMode,

ff-utils-winforms/Media/AvProcess.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ public static async Task RunAv1an(string args, string workingDir, LogMode logMod
207207
}
208208

209209
Logger.Log($"cmd {av1an.StartInfo.Arguments}", true, false, "av1an");
210-
Task.Run(() => Av1anOutputHandler.ParseProgressLoop());
210+
//Task.Run(() => Av1anOutputHandler.ParseProgressLoop());
211211
av1an.Start();
212212
av1an.PriorityClass = ProcessPriorityClass.BelowNormal;
213213

0 commit comments

Comments
 (0)