\r
namespace Handbrake.Functions\r
{\r
- using System;\r
using System.Drawing;\r
using System.Windows.Forms;\r
\r
public static void LoadPreset(frmMain mainWindow, QueryParser presetQuery, string name, bool pictureSettings)\r
{\r
#region Source\r
+\r
// Reset some vaules to stock first to prevent errors.\r
mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
\r
\r
mainWindow.check_iPodAtom.CheckState = presetQuery.IpodAtom ? CheckState.Checked : CheckState.Unchecked;\r
\r
- mainWindow.check_optimiseMP4.CheckState = presetQuery.OptimizeMP4 ? CheckState.Checked : CheckState.Unchecked;\r
+ mainWindow.check_optimiseMP4.CheckState = presetQuery.OptimizeMP4\r
+ ? CheckState.Checked\r
+ : CheckState.Unchecked;\r
\r
mainWindow.check_largeFile.CheckState = presetQuery.LargeMP4 ? CheckState.Checked : CheckState.Unchecked;\r
\r
#endregion\r
\r
#region Picture\r
+\r
mainWindow.PictureSettings.check_autoCrop.Checked = true;\r
if (pictureSettings) // only Load picture settings if the perset requires it\r
{\r
mainWindow.PictureSettings.drp_anamorphic.SelectedIndex = presetQuery.AnamorphicMode;\r
\r
// Keep Aspect Ration Anamorphic Setting.\r
- mainWindow.PictureSettings.check_KeepAR.CheckState = presetQuery.KeepDisplayAsect ? CheckState.Checked : CheckState.Unchecked;\r
+ mainWindow.PictureSettings.check_KeepAR.CheckState = presetQuery.KeepDisplayAsect\r
+ ? CheckState.Checked\r
+ : CheckState.Unchecked;\r
\r
// Set the Width and height as Required.\r
if (presetQuery.Width != 0)\r
\r
// Aspect Ratio for non anamorphic sources\r
if (presetQuery.AnamorphicMode == 0)\r
- mainWindow.PictureSettings.check_KeepAR.CheckState = presetQuery.Height == 0 ? CheckState.Checked : CheckState.Unchecked;\r
+ mainWindow.PictureSettings.check_KeepAR.CheckState = presetQuery.Height == 0\r
+ ? CheckState.Checked\r
+ : CheckState.Unchecked;\r
\r
// Custom Anamorphic Controls\r
mainWindow.PictureSettings.updownDisplayWidth.Text = presetQuery.DisplayWidthValue.ToString();\r
- mainWindow.PictureSettings.updownParHeight.Text = presetQuery.PixelAspectWidth.ToString();\r
- mainWindow.PictureSettings.updownParWidth.Text = presetQuery.PixelAspectHeight.ToString();\r
- mainWindow.PictureSettings.drp_modulus.SelectedItem = presetQuery.AnamorphicModulus;\r
+ mainWindow.PictureSettings.updownParHeight.Text = presetQuery.PixelAspectHeight.ToString();\r
+ mainWindow.PictureSettings.updownParWidth.Text = presetQuery.PixelAspectWidth.ToString();\r
+ mainWindow.PictureSettings.drp_modulus.SelectedItem = presetQuery.AnamorphicModulus.ToString();\r
\r
#endregion\r
\r
#region Filters\r
+\r
mainWindow.Filters.SetDecomb(presetQuery.Decomb);\r
mainWindow.Filters.SetDeInterlace(presetQuery.DeInterlace);\r
mainWindow.Filters.SetDeNoise(presetQuery.DeNoise);\r
mainWindow.Filters.SetDeTelecine(presetQuery.DeTelecine);\r
mainWindow.Filters.SetDeBlock(presetQuery.DeBlock);\r
mainWindow.Filters.SetGrayScale(presetQuery.Grayscale);\r
+\r
#endregion\r
\r
#region Video\r
+\r
mainWindow.drp_videoEncoder.Text = presetQuery.VideoEncoder;\r
\r
if (presetQuery.AverageVideoBitrate != null)\r
}\r
\r
// Quality\r
-\r
if (presetQuery.VideoQuality != -1)\r
{\r
mainWindow.radio_cq.Checked = true;\r
- if (presetQuery.VideoEncoder == "H.264 (x264)")\r
- {\r
- double cqStep = Properties.Settings.Default.x264cqstep;\r
- int value;\r
- double x264Step = cqStep;\r
- double presetValue = presetQuery.VideoQuality;\r
-\r
- double x = 51 / x264Step;\r
-\r
- double calculated = presetValue / x264Step;\r
- calculated = x - calculated;\r
-\r
- int.TryParse(calculated.ToString(), out value);\r
-\r
- // This will sometimes occur when the preset was generated \r
- // with a different granularity, so, round and try again.\r
- if (value == 0)\r
- {\r
- double val = Math.Round(calculated, 0);\r
- int.TryParse(val.ToString(), out value);\r
- }\r
- if (value <= mainWindow.slider_videoQuality.Maximum)\r
- mainWindow.slider_videoQuality.Value = value;\r
- }\r
- else\r
- {\r
- int presetVal;\r
- int.TryParse(presetQuery.VideoQuality.ToString(), out presetVal);\r
- if (presetVal > mainWindow.slider_videoQuality.Minimum)\r
- mainWindow.slider_videoQuality.Value = presetVal;\r
- }\r
+ mainWindow.slider_videoQuality.Value = QualityToSliderValue(presetQuery.VideoEncoder, presetQuery.VideoQuality);\r
}\r
\r
mainWindow.check_2PassEncode.CheckState = presetQuery.TwoPass ? CheckState.Checked : CheckState.Unchecked;\r
#endregion\r
\r
#region Audio\r
+\r
mainWindow.AudioSettings.LoadTracks(presetQuery.AudioInformation);\r
+\r
#endregion\r
\r
#region Other\r
+\r
mainWindow.x264Panel.X264Query = presetQuery.H264Query;\r
\r
// Set the preset name\r
mainWindow.labelPreset.Text = "Output Settings (Preset: " + name + ")";\r
+\r
#endregion\r
}\r
+\r
+ /// <summary>\r
+ /// Convert a Quality Value to a position value for the Video Quality slider\r
+ /// </summary>\r
+ /// <param name="videoEncoder">The selected video encoder</param>\r
+ /// <param name="value">The Quality value</param>\r
+ /// <returns>The position on the video quality slider</returns>\r
+ private static int QualityToSliderValue(string videoEncoder, float value)\r
+ {\r
+ int sliderValue = 0;\r
+ switch (videoEncoder)\r
+ {\r
+ case "MPEG-4 (FFmpeg)":\r
+ sliderValue = 32 - (int)value;\r
+ break;\r
+ case "H.264 (x264)":\r
+ double cqStep = Properties.Settings.Default.x264cqstep;\r
+ sliderValue = (int)((51.0 / cqStep) - (value / cqStep));\r
+ break;\r
+ case "VP3 (Theora)":\r
+ sliderValue = (int)value;\r
+ break;\r
+ }\r
+\r
+ return sliderValue;\r
+ }\r
}\r
}
\ No newline at end of file