Skip to content

Commit 56c4ece

Browse files
committed
Added av1an advanced encoder args grid, loaded from json for each encoder
1 parent 496cda7 commit 56c4ece

File tree

6 files changed

+129
-17
lines changed

6 files changed

+129
-17
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public CodecArgs GetArgs(Dictionary<string, string> encArgs = null, MediaFile me
4040
string denoise = encArgs.ContainsKey("grainSynthDenoise") ? (encArgs["grainSynthDenoise"].GetBool() ? "1" : "0") : "0";
4141
string tiles = CodecUtils.GetTilingArgs(mediaFile.VideoStreams.FirstOrDefault().Resolution, "--tile-rows=", "--tile-columns=");
4242
string cust = encArgs.ContainsKey("custom") ? encArgs["custom"] : "";
43+
string adv = encArgs.ContainsKey("advanced") ? encArgs["advanced"] : "";
4344
string colors = "";
4445

4546
if(mediaFile != null && mediaFile.ColorData != null)
@@ -57,7 +58,7 @@ public CodecArgs GetArgs(Dictionary<string, string> encArgs = null, MediaFile me
5758
$"--end-usage=q --cpu-used={preset} --cq-level={q} " +
5859
$"--disable-kf --kf-min-dist=12 --kf-max-dist={g} " +
5960
$"--enable-dnl-denoising={denoise} --denoise-noise-level={grain} " +
60-
$"--enable-keyframe-filtering=0 {colors} --threads={thr} {tiles} {cust} \" --pix-format {pixFmt}");
61+
$"{colors} --threads={thr} {tiles} {adv} {cust} \" --pix-format {pixFmt}");
6162
}
6263
}
6364
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ partial class MainForm
3030
public NumericUpDown av1anGrainSynthStrengthUpDown { get { return av1anGrainSynthStrength; } }
3131
public CheckBox av1anGrainSynthDenoiseBox { get { return av1anGrainSynthDenoise; } }
3232
public NumericUpDown av1anThreadsUpDown { get { return av1anThreads; } }
33+
public DataGridView Av1anAdvancedArgsGrid { get { return av1anAdvancedArgsGrid; } }
3334

3435

3536
public ComboBox av1anAudCodecBox { get { return av1anAudCodec; } }

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

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

ff-utils-winforms/Forms/MainForm.resx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,10 @@
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>
123+
<data name="label52.Text" xml:space="preserve">
124+
<value>Here you can modify more advanced encoder settings. If a field is too small, hover over it to show the full text.
125+
Cells in the "Value" column can be edited by either pressing F2 or typing while a cell is selected.</value>
126+
</data>
126127
<metadata name="checkItemsContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
127128
<value>107, 17</value>
128129
</metadata>
@@ -133,7 +134,7 @@
133134
<data name="runBtn.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
134135
<value>
135136
iVBORw0KGgoAAAANSUhEUgAAADAAAAAgCAYAAABU1PscAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
136-
wwAADsMBx2+oZAAAAOZJREFUWEftl7ENwjAQRSNR0cIAjMAO7EDBFoyQji3YgiWyAhNQ01EQ3pfPHUIY
137+
wAAADsABataJCQAAAOZJREFUWEftl7ENwjAQRSNR0cIAjMAO7EDBFoyQji3YgiWyAhNQ01EQ3pfPHUIY
137138
nMQHftJXFOd8+l9KHLupVH6Evu9bJFob8oWMB/81wHNovEQzu82OjMu9rjaUFxpvUYfWNpQVGUdi0ADi
138139
hg5obo+yQL/RAkTOaGOPv4ZeowcQd3RECyv7GHpMEiByQTtk1ekwd9IAkRNa2ZQkmFdEAHFFe5S05FJf
139140
TIBI0pJLbXEBxNtLLjU1wEto/DevkOuP2O0y6vZH5nor4XYz53o77fpA4/tIOTQyHvzXANMg48G/0wAV

ff-utils-winforms/UI/Tasks/Av1an.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static async Task RunResumeWithNewArgs(string sourceFile, string override
5050

5151
public static async Task Run(bool resume = false, string overrideTempDir = "", string overrideArgs = "")
5252
{
53-
if (TrackList.current.File.IsDirectory)
53+
if (overrideTempDir == "" && TrackList.current.File.IsDirectory)
5454
{
5555
RunTask.Cancel("Av1an cannot use image sequence inputs!");
5656
return;

ff-utils-winforms/UI/Tasks/Av1anUi.cs

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using Nmkoder.Data;
1+
using Newtonsoft.Json;
2+
using Nmkoder.Data;
23
using Nmkoder.Data.Codecs;
34
using Nmkoder.Data.Streams;
45
using Nmkoder.Data.Ui;
@@ -98,6 +99,7 @@ public static void VidEncoderSelected(int index)
9899
LoadQualityLevel(enc);
99100
LoadPresets(enc);
100101
LoadColorFormats(enc);
102+
LoadAdvancedArgsGrid(enc);
101103
}
102104

103105
public static void AudEncoderSelected(int index)
@@ -171,6 +173,48 @@ static void LoadColorFormats(IEncoder enc)
171173
form.av1anColorsBox.SelectedIndex = enc.ColorFormatDefault; // Select default pix_fmt
172174
}
173175

176+
public static void LoadAdvancedArgsGrid(IEncoder enc)
177+
{
178+
string jsonPath = Path.Combine(Paths.GetDataPath(), "encoderArgs", enc.Name + ".json");
179+
180+
DataGridView grid = Program.mainForm.Av1anAdvancedArgsGrid;
181+
grid.Rows.Clear();
182+
183+
if (!File.Exists(jsonPath))
184+
return;
185+
186+
if (grid.Columns.Count != 3)
187+
{
188+
grid.Columns.Clear();
189+
grid.Columns.Add("0", "Argument");
190+
grid.Columns.Add("1", "Value");
191+
grid.Columns.Add("2", "Description, Possible Values");
192+
}
193+
194+
List<string[]> args = new List<string[]>();
195+
try
196+
{
197+
args = JsonConvert.DeserializeObject<List<string[]>>(File.ReadAllText(jsonPath));
198+
}
199+
catch(Exception e)
200+
{
201+
Logger.Log($"Error loading advanced arg JSON: {e.Message}");
202+
args = new List<string[]>();
203+
}
204+
205+
foreach(string[] arg in args)
206+
grid.Rows.Add(arg[0], arg[1], arg[2]);
207+
208+
grid.RowHeadersVisible = false;
209+
grid.Columns[0].ReadOnly = true;
210+
grid.Columns[2].ReadOnly = true;
211+
grid.Columns.Cast<DataGridViewColumn>().ToList().ForEach(x => x.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill);
212+
grid.Columns.Cast<DataGridViewColumn>().ToList().ForEach(x => x.SortMode = DataGridViewColumnSortMode.NotSortable);
213+
grid.Columns[0].FillWeight = 25;
214+
grid.Columns[1].FillWeight = 20;
215+
grid.Columns[2].FillWeight = 55;
216+
}
217+
174218
#endregion
175219

176220
#region Get Current Codec
@@ -187,6 +231,8 @@ public static CodecUtils.AudioCodec GetCurrentCodecA()
187231

188232
#endregion
189233

234+
#region Get Args From UI
235+
190236
public static Dictionary<string, string> GetVideoArgsFromUi()
191237
{
192238
Dictionary<string, string> dict = new Dictionary<string, string>();
@@ -198,6 +244,7 @@ public static Dictionary<string, string> GetVideoArgsFromUi()
198244
dict.Add("grainSynthDenoise", form.av1anGrainSynthDenoiseBox.Checked.ToString());
199245
dict.Add("threads", form.av1anThreadsUpDown.Value.ToString());
200246
dict.Add("custom", form.av1anCustomEncArgsBox.Text);
247+
dict.Add("advanced", string.Join(" ", form.Av1anAdvancedArgsGrid.Rows.Cast<DataGridViewRow>().Select(x => $"--{x.Cells[0].Value}={x.Cells[1].Value}")));
201248
return dict;
202249
}
203250

@@ -209,6 +256,8 @@ public static Dictionary<string, string> GetAudioArgsFromUi()
209256
return dict;
210257
}
211258

259+
#endregion
260+
212261
#region Get Args
213262

214263
public static async Task<string> GetVideoFilterArgs(CodecArgs codecArgs = null)
@@ -252,14 +301,7 @@ public static async Task<string> GetVideoFilterArgs(CodecArgs codecArgs = null)
252301

253302
public static string GetSplittingMethodArgs()
254303
{
255-
string s = "";
256-
257-
if (form.av1anOptsSplitModeBox.SelectedIndex == 0)
258-
s = $"none";
259-
else
260-
s = $"av-scenechange";
261-
262-
return $"--split-method {s}";
304+
return $"--split-method {(form.av1anOptsSplitModeBox.SelectedIndex == 0 ? "none" : "av-scenechange")}";
263305
}
264306

265307
public static string GetChunkGenMethod()
@@ -300,6 +342,7 @@ public static string GetOutPath()
300342

301343
#endregion
302344

345+
303346
public static void ValidateContainer()
304347
{
305348
if (form.av1anContainerBox.SelectedIndex < 0)

0 commit comments

Comments
 (0)