1- using Nmkoder . Data ;
1+ using Newtonsoft . Json ;
2+ using Nmkoder . Data ;
23using Nmkoder . Data . Codecs ;
34using Nmkoder . Data . Streams ;
45using 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