2 using System.Collections.Generic;
\r
4 using System.Windows.Forms;
\r
11 /// Reset all components to defaults and clears the x264 rtf box
\r
13 public void reset2Defaults(frmMain mainWindow)
\r
15 mainWindow.check_8x8DCT.CheckState = CheckState.Unchecked;
\r
16 mainWindow.check_Cabac.CheckState = CheckState.Checked;
\r
17 mainWindow.check_mixedReferences.CheckState = CheckState.Unchecked;
\r
18 mainWindow.check_noDCTDecimate.CheckState = CheckState.Unchecked;
\r
19 mainWindow.check_noFastPSkip.CheckState = CheckState.Unchecked;
\r
20 mainWindow.check_pyrmidalBFrames.CheckState = CheckState.Unchecked;
\r
21 mainWindow.check_weightedBFrames.CheckState = CheckState.Unchecked;
\r
22 mainWindow.drop_analysis.SelectedIndex = 0;
\r
23 mainWindow.drop_bFrames.SelectedIndex = 0;
\r
24 mainWindow.drop_deblockAlpha.SelectedIndex = 0;
\r
25 mainWindow.drop_deblockBeta.SelectedIndex = 0;
\r
26 mainWindow.drop_directPrediction.SelectedIndex = 0;
\r
27 mainWindow.drop_MotionEstimationMethod.SelectedIndex = 0;
\r
28 mainWindow.drop_MotionEstimationRange.SelectedIndex = 0;
\r
29 mainWindow.drop_refFrames.SelectedIndex = 0;
\r
30 mainWindow.drop_subpixelMotionEstimation.SelectedIndex = 0;
\r
31 mainWindow.drop_trellis.SelectedIndex = 0;
\r
33 mainWindow.rtf_x264Query.Text = "";
\r
37 /// Update GUI componets from the current x264 rtf string
\r
39 public void X264_SetCurrentSettingsInPanel(frmMain mainWindow)
\r
41 /* Set widgets depending on the opt string in field */
\r
42 String thisOpt; // The separated option such as "bframes=3"
\r
43 String optName = ""; // The option name such as "bframes"
\r
44 String optValue = "";// The option value such as "3"
\r
45 String[] currentOptsArray;
\r
47 //Set currentOptString to the contents of the text box.
\r
48 String currentOptString = mainWindow.rtf_x264Query.Text.Replace("\n", "");
\r
50 /*verify there is an opt string to process */
\r
51 if (currentOptString.Contains("="))
\r
53 /*Put individual options into an array based on the ":" separator for processing, result is "<opt>=<value>"*/
\r
54 currentOptsArray = currentOptString.Split(':');
\r
56 /*iterate through the array and get <opts> and <values*/
\r
58 int currentOptsArrayCount = currentOptsArray.Length;
\r
61 /*iterate through the array and get <opts> and <values*/
\r
62 for (loopcounter = 0; loopcounter < currentOptsArrayCount; loopcounter++)
\r
65 thisOpt = currentOptsArray[loopcounter];
\r
66 String[] splitOptRange = thisOpt.Split('=');
\r
68 if (thisOpt.Contains("="))
\r
70 optName = splitOptRange[0];
\r
71 optValue = splitOptRange[1];
\r
73 /*Run through the available widgets for x264 opts and set them, as you add widgets,
\r
74 they need to be added here. This should be moved to its own method probably*/
\r
76 /*bframes NSPopUpButton*/
\r
77 if (optName.Equals("bframes"))
\r
78 mainWindow.drop_bFrames.SelectedItem = optValue;
\r
80 /*ref NSPopUpButton*/
\r
81 else if (optName.Equals("ref"))
\r
82 mainWindow.drop_refFrames.SelectedItem = optValue;
\r
84 /*No Fast PSkip NSPopUpButton*/
\r
85 else if (optName.Equals("no-fast-pskip"))
\r
86 mainWindow.check_noFastPSkip.CheckState = CheckState.Checked;
\r
88 /*No Dict Decimate NSPopUpButton*/
\r
89 else if (optName.Equals("no-dct-decimate"))
\r
90 mainWindow.check_noDCTDecimate.CheckState = CheckState.Checked;
\r
92 /*Sub Me NSPopUpButton*/
\r
93 else if (optName.Equals("subq"))
\r
94 mainWindow.drop_subpixelMotionEstimation.SelectedItem = optValue;
\r
96 /*Trellis NSPopUpButton*/
\r
97 else if (optName.Equals("trellis"))
\r
98 mainWindow.drop_trellis.SelectedItem = optValue;
\r
100 /*Mixed Refs NSButton*/
\r
101 else if (optName.Equals("mixed-refs"))
\r
102 mainWindow.check_mixedReferences.CheckState = CheckState.Checked;
\r
104 /*Motion Estimation NSPopUpButton*/
\r
105 else if (optName.Equals("me"))
\r
107 if (optValue.Equals("dia"))
\r
108 mainWindow.drop_MotionEstimationMethod.SelectedItem = "Diamond";
\r
109 else if (optValue.Equals("hex"))
\r
110 mainWindow.drop_MotionEstimationMethod.SelectedItem = "Hexagon";
\r
111 else if (optValue.Equals("umh"))
\r
112 mainWindow.drop_MotionEstimationMethod.SelectedItem = "Uneven Multi-Hexagon";
\r
113 else if (optValue.Equals("esa"))
\r
114 mainWindow.drop_MotionEstimationMethod.SelectedItem = "Exhaustive";
\r
117 /*ME Range NSPopUpButton*/
\r
118 else if (optName.Equals("merange"))
\r
119 mainWindow.drop_MotionEstimationRange.SelectedItem = optValue;
\r
121 /*Weighted B-Frames NSPopUpButton*/
\r
122 else if (optName.Equals("weightb"))
\r
123 mainWindow.check_weightedBFrames.CheckState = CheckState.Checked;
\r
125 /*B Pyramid NSPopUpButton*/
\r
126 else if (optName.Equals("b-pyramid"))
\r
127 mainWindow.check_pyrmidalBFrames.CheckState = CheckState.Checked;
\r
129 /*Direct B-frame Prediction NSPopUpButton*/
\r
130 else if (optName.Equals("direct"))
\r
132 if (optValue == "auto")
\r
133 optValue = "Automatic";
\r
135 if (optValue != "")
\r
137 Char[] letters = optValue.ToCharArray();
\r
138 letters[0] = Char.ToUpper(letters[0]);
\r
139 optValue = new string(letters);
\r
142 mainWindow.drop_directPrediction.SelectedItem = optValue;
\r
145 /*Deblocking NSPopUpButtons*/
\r
146 else if (optName.Equals("deblock"))
\r
148 string alphaDeblock = "";
\r
149 string betaDeblock = "";
\r
151 string[] splitDeblock = optValue.Split(',');
\r
152 alphaDeblock = splitDeblock[0];
\r
153 betaDeblock = splitDeblock[1];
\r
155 if (alphaDeblock.Equals("0") && betaDeblock.Replace("\n", "").Equals("0"))
\r
157 mainWindow.drop_deblockAlpha.SelectedItem = "Default (0)";
\r
158 mainWindow.drop_deblockBeta.SelectedItem = "Default (0)";
\r
162 if (!alphaDeblock.Equals("0"))
\r
163 mainWindow.drop_deblockAlpha.SelectedItem = alphaDeblock;
\r
165 mainWindow.drop_deblockAlpha.SelectedItem = "0";
\r
167 if (!betaDeblock.Replace("\n", "").Equals("0"))
\r
168 mainWindow.drop_deblockBeta.SelectedItem = betaDeblock.Replace("\n", "");
\r
170 mainWindow.drop_deblockBeta.SelectedItem = "0";
\r
173 /* Analysis NSPopUpButton */
\r
174 else if (optName.Equals("analyse"))
\r
177 if (optValue.Equals("p8x8,b8x8,i8x8,i4x4"))
\r
178 mainWindow.drop_analysis.SelectedItem = "Default (some)";
\r
179 if (optValue.Equals("none"))
\r
180 mainWindow.drop_analysis.SelectedItem = "None";
\r
181 if (optValue.Equals("all"))
\r
182 mainWindow.drop_analysis.SelectedItem = "All";
\r
184 /* 8x8 DCT NSButton */
\r
185 else if (optName.Equals("8x8dct"))
\r
186 mainWindow.check_8x8DCT.CheckState = CheckState.Checked;
\r
188 /* CABAC NSButton */
\r
189 else if (optName.Equals("cabac"))
\r
190 mainWindow.check_Cabac.CheckState = CheckState.Unchecked;
\r
197 /// Iterate over every x264 option, standardize it, write the full string to the x264 rtf box
\r
199 public void X264_StandardizeOptString(frmMain mainWindow)
\r
201 /* Set widgets depending on the opt string in field */
\r
202 String thisOpt; // The separated option such as "bframes=3"
\r
203 String optName = ""; // The option name such as "bframes"
\r
204 String optValue = "";// The option value such as "3"
\r
205 String changedOptString = "";
\r
206 String[] currentOptsArray;
\r
208 /*First, we get an opt string to process */
\r
209 String currentOptString = mainWindow.rtf_x264Query.Text;
\r
211 /*verify there is an opt string to process */
\r
212 if (currentOptString.Contains("="))
\r
214 /*Put individual options into an array based on the ":" separator for processing, result is "<opt>=<value>"*/
\r
215 currentOptsArray = currentOptString.Split(':');
\r
217 /*iterate through the array and get <opts> and <values*/
\r
218 //NSEnumerator * enumerator = [currentOptsArray objectEnumerator];
\r
220 int currentOptsArrayCount = currentOptsArray.Length;
\r
221 for (loopcounter = 0; loopcounter < currentOptsArrayCount; loopcounter++)
\r
223 thisOpt = currentOptsArray[loopcounter];
\r
224 if (currentOptsArray[currentOptsArrayCount - 1] == string.Empty)
\r
227 String[] splitOptRange = thisOpt.Split('=');
\r
230 if (thisOpt.Contains("="))
\r
232 optName = splitOptRange[0];
\r
233 optValue = splitOptRange[1];
\r
235 /* Standardize the names here depending on whats in the string */
\r
236 optName = X264_StandardizeOptNames(optName);
\r
237 thisOpt = optName + "=" + optValue;
\r
239 else // No value given so we use a default of "1"
\r
242 /* Standardize the names here depending on whats in the string */
\r
243 optName = X264_StandardizeOptNames(optName);
\r
244 thisOpt = optName + "=1";
\r
248 /* Construct New String for opts here */
\r
249 if (thisOpt == string.Empty)
\r
250 changedOptString = changedOptString + thisOpt;
\r
253 if (changedOptString == string.Empty)
\r
254 changedOptString = thisOpt;
\r
256 changedOptString = changedOptString + ":" + thisOpt;
\r
261 /* Change the option string to reflect the new standardized option string */
\r
262 if (changedOptString != "")
\r
263 mainWindow.rtf_x264Query.Text = changedOptString;
\r
266 * Take a single option and standardize it. Returns as a String
\r
267 * Input: String. - Single X264 Option. Name only
\r
268 * Output: String - Single X264 Option. Name only. Changed to standard format
\r
270 private string X264_StandardizeOptNames(String cleanOptNameString)
\r
272 String input = cleanOptNameString;
\r
274 if (input.Equals("ref") || input.Equals("frameref"))
\r
275 cleanOptNameString = "ref";
\r
277 /*No Fast PSkip nofast_pskip*/
\r
278 if (input.Equals("no-fast-pskip") || input.Equals("no_fast_pskip") || input.Equals("nofast_pskip"))
\r
279 cleanOptNameString = "no-fast-pskip";
\r
281 /*No Dict Decimate*/
\r
282 if (input.Equals("no-dct-decimate") || input.Equals("no_dct_decimate") || input.Equals("nodct_decimate"))
\r
283 cleanOptNameString = "no-dct-decimate";
\r
286 if (input.Equals("subme"))
\r
287 cleanOptNameString = "subq";
\r
290 if (input.Equals("me-range") || input.Equals("me_range"))
\r
291 cleanOptNameString = "merange";
\r
294 if (input.Equals("weight-b") || input.Equals("weight_b"))
\r
295 cleanOptNameString = "weightb";
\r
298 if (input.Equals("b_pyramid"))
\r
299 cleanOptNameString = "b-pyramid";
\r
301 /*Direct Prediction*/
\r
302 if (input.Equals("direct-pred") || input.Equals("direct_pred"))
\r
303 cleanOptNameString = "direct";
\r
306 if (input.Equals("filter"))
\r
307 cleanOptNameString = "deblock";
\r
310 if (input.Equals("partitions"))
\r
311 cleanOptNameString = "analyse";
\r
313 return cleanOptNameString;
\r
317 /// This function will update the X264 Query when one of the GUI widgets changes.
\r
319 public void on_x264_WidgetChange(string sender, frmMain mainWindow)
\r
321 animate(mainWindow, sender);
\r
322 String optNameToChange = sender;
\r
323 String currentOptString = mainWindow.rtf_x264Query.Text;
\r
325 /*First, we create a pattern to check for ":"optNameToChange"=" to modify the option if the name falls after
\r
326 the first character of the opt string (hence the ":") */
\r
327 String checkOptNameToChange = ":" + optNameToChange + "=";
\r
328 String checkOptNameToChangeBegin = optNameToChange + "=";
\r
330 // IF the current H264 Option String Contains Multiple Items or Just 1 Item
\r
331 if ((currentOptString.Contains(checkOptNameToChange)) || (currentOptString.StartsWith(checkOptNameToChangeBegin)))
\r
332 hasOptions(currentOptString, optNameToChange, mainWindow);
\r
333 else // IF there is no options in the rich text box!
\r
334 hasNoOptions(optNameToChange, mainWindow);
\r
337 * Used by on_x264_WidgetChange()
\r
338 ** hasOptions - Called when the current x264 option string contains multiple (or a single) item(s) in it seperated by :
\r
339 * it updates the current option that the widget corrosponds to, if it is already in thes string.
\r
340 ** hasNoOptions - Add's an option to the x264 query string.
\r
341 * Handles 2 cases. 1 Where rtf_x264Query.Text is empty, and one where there is an option with no value,
\r
342 * e.g no-fast-pskip
\r
344 private void hasOptions(string currentOptString, string optNameToChange, frmMain mainWindow)
\r
346 String thisOpt; // The separated option such as "bframes=3"
\r
347 String optName = ""; // The option name such as "bframes"
\r
348 String optValue = ""; // The option value such as "3"
\r
349 String[] currentOptsArray;
\r
351 /* Create new empty opt string*/
\r
352 String changedOptString = "";
\r
354 /*Put individual options into an array based on the ":" separator for processing, result is "<opt>=<value>"*/
\r
355 currentOptsArray = currentOptString.Split(':');
\r
357 /*iterate through the array and get <opts> and <values*/
\r
358 for (int loopcounter = 0; loopcounter < currentOptsArray.Length; loopcounter++)
\r
360 thisOpt = currentOptsArray[loopcounter];
\r
362 if (thisOpt.Contains("="))
\r
364 string[] splitOptRange = thisOpt.Split('=');
\r
366 optName = splitOptRange[0]; // e.g bframes
\r
367 optValue = splitOptRange[1]; // e.g 2
\r
370 * Run through the available widgets for x264 opts and set them, as you add widgets,
\r
371 * they need to be added here. This should be moved to its own method probably
\r
372 * If the optNameToChange is found, appropriately change the value or delete it if
\r
373 * "unspecified" is set.
\r
375 if (optName.Equals(optNameToChange))
\r
377 if (optNameToChange.Equals("deblock"))
\r
379 String da = mainWindow.drop_deblockAlpha.SelectedItem.ToString();
\r
380 String db = mainWindow.drop_deblockBeta.SelectedItem.ToString();
\r
382 if (((da.Contains("Default")) && (db.Contains("Default"))) || ((da.Contains("0")) && (db.Contains("0"))))
\r
384 mainWindow.drop_deblockBeta.SelectedItem = "Default (0)";
\r
385 mainWindow.drop_deblockAlpha.SelectedItem = "Default (0)";
\r
388 else if ((!da.Contains("Default")) && (db.Contains("Default")))
\r
390 mainWindow.drop_deblockBeta.SelectedItem = "0";
\r
391 thisOpt = "deblock=" + da + ",0";
\r
393 else if ((da.Contains("Default")) && (!db.Contains("Default")))
\r
395 mainWindow.drop_deblockAlpha.SelectedItem = "0";
\r
396 thisOpt = "deblock=0," + db;
\r
398 else if ((!da.Contains("Default")) && (!db.Contains("Default")))
\r
399 thisOpt = "deblock=" + da + "," + db;
\r
402 else if (optNameToChange.Equals("mixed-refs"))
\r
404 if (mainWindow.check_mixedReferences.CheckState == CheckState.Checked)
\r
405 thisOpt = "mixed-refs=1";
\r
409 else if (optNameToChange.Equals("weightb"))
\r
411 if (mainWindow.check_weightedBFrames.CheckState == CheckState.Checked)
\r
412 thisOpt = "weightb=1";
\r
416 else if (optNameToChange.Equals("b-pyramid"))
\r
418 if (mainWindow.check_pyrmidalBFrames.CheckState == CheckState.Checked)
\r
419 thisOpt = "b-pyramid=1";
\r
423 else if (optNameToChange.Equals("no-fast-pskip"))
\r
425 if (mainWindow.check_noFastPSkip.CheckState == CheckState.Checked)
\r
426 thisOpt = "no-fast-pskip=1";
\r
430 else if (optNameToChange.Equals("no-dct-decimate"))
\r
432 if (mainWindow.check_noDCTDecimate.CheckState == CheckState.Checked)
\r
433 thisOpt = "no-dct-decimate=1";
\r
437 else if (optNameToChange.Equals("8x8dct"))
\r
439 if (mainWindow.check_8x8DCT.CheckState == CheckState.Checked)
\r
440 thisOpt = "8x8dct=1";
\r
444 else if (optNameToChange.Equals("cabac"))
\r
446 if (mainWindow.check_Cabac.CheckState == CheckState.Checked)
\r
449 thisOpt = "cabac=0";
\r
451 else if (optNameToChange.Equals("me"))
\r
453 switch (mainWindow.drop_MotionEstimationMethod.SelectedIndex)
\r
456 thisOpt = "me=dia";
\r
460 thisOpt = "me=hex";
\r
464 thisOpt = "me=umh";
\r
468 thisOpt = "me=esa";
\r
476 else if (optNameToChange.Equals("direct"))
\r
478 switch (mainWindow.drop_directPrediction.SelectedIndex)
\r
481 thisOpt = "direct=none";
\r
485 thisOpt = "direct=spatial";
\r
489 thisOpt = "direct=temporal";
\r
493 thisOpt = "direct=auto";
\r
501 else if (optNameToChange.Equals("analyse"))
\r
503 switch (mainWindow.drop_analysis.SelectedIndex)
\r
506 thisOpt = "analyse=none";
\r
510 thisOpt = "analyse=all";
\r
518 else if (optNameToChange.Equals("merange"))
\r
520 if (!mainWindow.drop_MotionEstimationRange.SelectedItem.ToString().Contains("Default"))
\r
521 thisOpt = "merange=" + mainWindow.drop_MotionEstimationRange.SelectedItem.ToString();
\r
525 else if (optNameToChange.Equals("ref"))
\r
527 if (!mainWindow.drop_refFrames.SelectedItem.ToString().Contains("Default"))
\r
528 thisOpt = "ref=" + mainWindow.drop_refFrames.SelectedItem.ToString();
\r
532 else if (optNameToChange.Equals("bframes"))
\r
534 String value = mainWindow.drop_bFrames.SelectedItem.ToString();
\r
535 if (!mainWindow.drop_bFrames.SelectedItem.ToString().Contains("Default"))
\r
536 thisOpt = "bframes=" + value;
\r
540 else if (optNameToChange.Equals("subq"))
\r
542 String value = mainWindow.drop_subpixelMotionEstimation.SelectedItem.ToString();
\r
543 if (!mainWindow.drop_subpixelMotionEstimation.SelectedItem.ToString().Contains("Default"))
\r
544 thisOpt = "subq=" + value;
\r
548 else if (optNameToChange.Equals("trellis"))
\r
550 String value = mainWindow.drop_trellis.SelectedItem.ToString();
\r
551 if (!mainWindow.drop_trellis.SelectedItem.ToString().Contains("Default"))
\r
552 thisOpt = "trellis=" + value;
\r
560 /* Construct New String for opts here */
\r
561 if (!thisOpt.Equals(""))
\r
563 if (changedOptString.Equals(""))
\r
564 changedOptString = thisOpt;
\r
566 changedOptString = changedOptString + ":" + thisOpt;
\r
570 /* Change the option string to reflect the new mod settings */
\r
571 mainWindow.rtf_x264Query.Text = changedOptString;
\r
573 private void hasNoOptions(string optNameToChange, frmMain mainWindow)
\r
577 if (mainWindow.rtf_x264Query.Text != "")
\r
580 query = mainWindow.rtf_x264Query.Text;
\r
581 if (optNameToChange.Equals("me"))
\r
583 switch (mainWindow.drop_MotionEstimationMethod.SelectedIndex)
\r
586 query = query + colon + "me=dia";
\r
590 query = query + colon + "me=hex";
\r
594 query = query + colon + "me=umh";
\r
598 query = query + colon + "me=esa";
\r
605 else if (optNameToChange.Equals("direct"))
\r
607 switch (mainWindow.drop_directPrediction.SelectedIndex)
\r
610 query = query + colon + "direct=none";
\r
614 query = query + colon + "direct=spatial";
\r
618 query = query + colon + "direct=temporal";
\r
622 query = query + colon + "direct=auto";
\r
629 else if (optNameToChange.Equals("analyse"))
\r
631 switch (mainWindow.drop_analysis.SelectedIndex)
\r
634 query = query + colon + "analyse=none";
\r
638 query = query + colon + "analyse=all";
\r
645 else if (optNameToChange.Equals("merange"))
\r
647 int value = mainWindow.drop_MotionEstimationRange.SelectedIndex + 3;
\r
648 query = query + colon + "merange=" + value.ToString();
\r
650 else if (optNameToChange.Equals("deblock"))
\r
652 String da = mainWindow.drop_deblockAlpha.SelectedItem.ToString();
\r
653 String db = mainWindow.drop_deblockBeta.Text.ToString();
\r
655 if (((da.Contains("Default")) && (db.Contains("Default"))) || ((da.Contains("0")) && (db.Contains("0"))))
\r
657 mainWindow.drop_deblockBeta.SelectedItem = "Default (0)";
\r
658 mainWindow.drop_deblockAlpha.SelectedItem = "Default (0)";
\r
662 if (db.Contains("Default"))
\r
665 if (da.Contains("Default"))
\r
668 query = query + colon + "deblock=" + da + "," + db;
\r
671 else if (optNameToChange.Equals("mixed-refs"))
\r
673 if (mainWindow.check_mixedReferences.CheckState == CheckState.Checked)
\r
674 query = query + colon + "mixed-refs=1";
\r
676 else if (optNameToChange.Equals("weightb"))
\r
678 if (mainWindow.check_weightedBFrames.CheckState == CheckState.Checked)
\r
679 query = query + colon + "weightb=1";
\r
681 else if (optNameToChange.Equals("b-pyramid"))
\r
683 if (mainWindow.check_pyrmidalBFrames.CheckState == CheckState.Checked)
\r
684 query = query + colon + "b-pyramid=1";
\r
686 else if (optNameToChange.Equals("no-fast-pskip"))
\r
688 if (mainWindow.check_noFastPSkip.CheckState == CheckState.Checked)
\r
689 query = query + colon + "no-fast-pskip=1";
\r
691 else if (optNameToChange.Equals("no-dct-decimate"))
\r
693 if (mainWindow.check_noDCTDecimate.CheckState == CheckState.Checked)
\r
694 query = query + colon + "no-dct-decimate=1";
\r
696 else if (optNameToChange.Equals("8x8dct"))
\r
698 if (mainWindow.check_8x8DCT.CheckState == CheckState.Checked)
\r
699 query = query + colon + "8x8dct=1";
\r
701 else if (optNameToChange.Equals("cabac"))
\r
703 if (mainWindow.check_Cabac.CheckState != CheckState.Checked)
\r
704 query = query + colon + "cabac=0";
\r
706 else if (optNameToChange.Equals("ref"))
\r
708 if (!mainWindow.drop_refFrames.SelectedItem.ToString().Contains("Default"))
\r
709 query = query + colon + "ref=" + mainWindow.drop_refFrames.SelectedItem.ToString();
\r
711 else if (optNameToChange.Equals("bframes"))
\r
713 String value = mainWindow.drop_bFrames.SelectedItem.ToString();
\r
714 if (!mainWindow.drop_bFrames.SelectedItem.ToString().Contains("Default"))
\r
715 query = query + colon + "bframes=" + value;
\r
717 else if (optNameToChange.Equals("subq"))
\r
719 String value = mainWindow.drop_subpixelMotionEstimation.SelectedItem.ToString();
\r
720 if (!mainWindow.drop_subpixelMotionEstimation.SelectedItem.ToString().Contains("Default"))
\r
721 query = query + colon + "subq=" + value;
\r
723 else if (optNameToChange.Equals("trellis"))
\r
725 if (!mainWindow.drop_trellis.SelectedItem.ToString().Contains("Default"))
\r
726 query = query + colon + "trellis=" + mainWindow.drop_trellis.SelectedItem.ToString();
\r
729 mainWindow.rtf_x264Query.Text = query;
\r
731 private void animate(frmMain mainWindow, string sender)
\r
733 /* Lots of situations to cover.
\r
734 - B-frames (when 0 turn of b-frame specific stuff, when < 2 disable b-pyramid)
\r
735 - CABAC (when 0 turn off trellis)
\r
736 - analysis (if none, turn off 8x8dct)
\r
737 - refs (under 2, disable mixed-refs)
\r
739 if (mainWindow.drop_bFrames.SelectedIndex < 2)
\r
741 /* If the b-frame widget is at 0 or 1, the user has chosen
\r
742 not to use b-frames at all. So disable the options
\r
743 that can only be used when b-frames are enabled. */
\r
744 mainWindow.check_weightedBFrames.Visible = false;
\r
745 mainWindow.check_pyrmidalBFrames.Visible = false;
\r
746 mainWindow.drop_directPrediction.Visible = false;
\r
747 mainWindow.lbl_direct_prediction.Visible = false;
\r
749 mainWindow.check_weightedBFrames.CheckState = CheckState.Unchecked;
\r
750 mainWindow.check_pyrmidalBFrames.CheckState = CheckState.Unchecked;
\r
751 mainWindow.drop_directPrediction.SelectedIndex = 0;
\r
753 else if (mainWindow.drop_bFrames.SelectedIndex == 2)
\r
755 /* Only 1 b-frame? Disable b-pyramid. */
\r
756 mainWindow.check_pyrmidalBFrames.Visible = false;
\r
757 mainWindow.check_pyrmidalBFrames.CheckState = CheckState.Unchecked;
\r
759 mainWindow.check_weightedBFrames.Visible = true;
\r
760 mainWindow.drop_directPrediction.Visible = true;
\r
761 mainWindow.lbl_direct_prediction.Visible = true;
\r
766 mainWindow.check_weightedBFrames.Visible = true;
\r
767 mainWindow.check_pyrmidalBFrames.Visible = true;
\r
768 mainWindow.drop_directPrediction.Visible = true;
\r
769 mainWindow.lbl_direct_prediction.Visible = true;
\r
772 if (mainWindow.check_Cabac.Checked == false)
\r
774 /* Without CABAC entropy coding, trellis doesn't run. */
\r
775 mainWindow.drop_trellis.Visible = false;
\r
776 mainWindow.drop_trellis.SelectedIndex = 0;
\r
777 mainWindow.lbl_trellis.Visible = false;
\r
781 mainWindow.drop_trellis.Visible = true;
\r
782 mainWindow.lbl_trellis.Visible = true;
\r
785 if (mainWindow.drop_analysis.SelectedIndex == 1)
\r
787 /* No analysis? Disable 8x8dct */
\r
788 mainWindow.check_8x8DCT.Visible = false;
\r
789 if (sender != "8x8dct")
\r
790 mainWindow.check_8x8DCT.CheckState = CheckState.Unchecked;
\r
793 mainWindow.check_8x8DCT.Visible = true;
\r
795 if (mainWindow.drop_refFrames.SelectedIndex < 3)
\r
797 mainWindow.check_mixedReferences.Visible = false;
\r
798 if (sender != "mixed-refs")
\r
799 mainWindow.check_mixedReferences.CheckState = CheckState.Unchecked;
\r
803 mainWindow.check_mixedReferences.Visible = true;
\r