using System.Threading;\r
using System.Runtime.InteropServices;\r
using System.Globalization;\r
+using System.Text.RegularExpressions;\r
\r
\r
namespace Handbrake\r
Application.DoEvents();\r
// Run the update checker.\r
updateCheck();\r
- Thread.Sleep(300);\r
+ Thread.Sleep(200);\r
+\r
+ // Update the presets\r
+ lblStatus.Text = "Updaing Presets ...";\r
+ Application.DoEvents();\r
+ updatePresets();\r
+ Thread.Sleep(200);\r
\r
// Now load the users default if required. (Will overide the above setting)\r
lblStatus.Text = "Loading User Default Settings...";\r
Application.DoEvents();\r
+ loadNormalPreset();\r
loadUserDefaults();\r
- Thread.Sleep(300);\r
+ Thread.Sleep(100);\r
\r
// Enable or disable tooltips\r
lblStatus.Text = "Loading Tooltips ...";\r
Application.DoEvents();\r
tooltip();\r
- Thread.Sleep(300);\r
-\r
- // Update the presets\r
- lblStatus.Text = "Updaing Presets ...";\r
- Application.DoEvents();\r
- updatePresets();\r
- Thread.Sleep(300);\r
+ Thread.Sleep(100);\r
\r
// Hide the preset bar if required.\r
hidePresetBar();\r
//Finished Loading\r
lblStatus.Text = "Loading Complete!";\r
Application.DoEvents();\r
- Thread.Sleep(300);\r
+ Thread.Sleep(200);\r
\r
// Wait until splash screen is done\r
while (timer.IsAlive)\r
splash.Close(); // Then close.\r
}\r
\r
+ private void loadNormalPreset()\r
+ {\r
+ ListViewItem item = listview_presets.FindItemWithText("Normal");\r
+\r
+ if (item != null)\r
+ {\r
+ listview_presets.SelectedItems.Clear();\r
+ item.Selected = true;\r
+ }\r
+ }\r
+\r
private void loadUserDefaults()\r
{\r
try\r
\r
groupBox_output.Text = "Output Settings (Preset: " + Properties.Settings.Default.selectedPreset + ")";\r
}\r
- else\r
- {\r
- ListViewItem item = listview_presets.FindItemWithText("Normal");\r
-\r
- if (item != null)\r
- {\r
- listview_presets.SelectedItems.Clear();\r
- item.Selected = true;\r
- }\r
- }\r
}\r
catch (Exception)\r
{\r
// Now Fill Out List View with Items\r
listview_presets.Items.Add(preset_listview);\r
}\r
+\r
+ string appPath = Application.StartupPath.ToString() + "\\";\r
+ string strCmdLine = "cmd /c " + '"' + '"' + appPath + "HandBrakeCLI.exe" + '"' + " --preset-list >" + '"' + appPath + "presets.dat" + '"' + " 2>&1" + '"';\r
+ Process hbproc = Process.Start("CMD.exe", strCmdLine);\r
+ hbproc.WaitForExit();\r
+ hbproc.Dispose();\r
+ hbproc.Close();\r
+\r
}\r
\r
// Varibles\r
// Preset Selection\r
private void listview_presets_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
+\r
string selectedPreset = null;\r
ListView.SelectedListViewItemCollection name = null;\r
name = listview_presets.SelectedItems;\r
if (listview_presets.SelectedItems.Count != 0)\r
selectedPreset = name[0].SubItems[0].Text;\r
\r
-\r
- switch (selectedPreset)\r
+ try\r
{\r
- case "Animation":\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "1000", "", 0, "0%", "160", CheckState.Checked, "48", "ref=5:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=5:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip:filter=2,2", "Origional (Fast)", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Apple Animation)");\r
- setMkv();\r
- break;\r
-\r
- case "AppleTV":\r
- setmp4();\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "2500", "", 0, "0%", "160", CheckState.Checked, "48", "bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:trellis=2:cabac=0", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Apple TV)");\r
- break;\r
-\r
- case "Bedlam":\r
- setmp4();\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "1800", "", 0, "0%", "160", CheckState.Checked, "48", "ref=16:mixed-refs:bframes=6:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=7:me-range=64:analyse=all:8x8dct:trellis=2:no-fast-pskip:no-dct-decimate:filter=-2,-1", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AC3", "Output Settings (Preset: Bedlam)");\r
- break;\r
-\r
- case "Blind":\r
- setmp4();\r
- setGuiSetttings(CheckState.Unchecked, "512", "", "Mpeg 4", "512", "", 0, "0%", "128", CheckState.Checked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Blind)");\r
- break;\r
-\r
- case "Broke":\r
- setmp4();\r
- setGuiSetttings(CheckState.Unchecked, "640", "", "H.264", "", "695", 0, "0%", "128", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=6:bime:weightb:b-rdo:b-pyramid::direct=auto:me=umh:subme=6:trellis=1:analyse=all:8x8dct:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Broke)");\r
- break;\r
-\r
-\r
- case "Classic":\r
- setmp4();\r
- setGuiSetttings(CheckState.Unchecked, "", "", "Mpeg 4", "1000", "", 0, "0%", "160", CheckState.Unchecked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: Classic)");\r
-\r
- break;\r
-\r
- case "Constant Quality Rate":\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "", "", 64, "64%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=3:b-pyramid:b-rdo:bime:weightb:filter=-2,-1:subme=6:trellis=1:analyse=all:8x8dct:me=umh", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AC3", "Output Settings (Preset: CQR)");\r
- setMkv();\r
- break;\r
-\r
- case "Deux Six Quatre":\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "1600", "", 0, "0%", "160", CheckState.Checked, "48", "ref=5:mixed-refs:bframes=3:bime:weightb:b-rdo:b-pyramid:me=umh:subme=7:trellis=1:analyse=all:8x8dct:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AC3", "Output Settings (Preset: DSQ)");\r
- setMkv();\r
- break;\r
-\r
- case "Film":\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "2000", "", 0, "0%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AC3", "Output Settings (Preset: Film)");\r
- setMkv();\r
- break;\r
+ string appPath = Application.StartupPath.ToString() + "\\";\r
+ StreamReader presetInput = new StreamReader(appPath + "presets.dat");\r
\r
- case "iPhone / iPod Touch":\r
- setmp4();\r
- setGuiSetttings(CheckState.Unchecked, "480", "", "H.264 (iPod)", "960", "", 0, "0%", "128", CheckState.Checked, "48", "cabac=0:ref=1:analyse=all:me=umh:subme=6:no-fast-pskip=1:trellis=1", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: iPhone)");\r
- break;\r
-\r
- case "iPod High-Rez":\r
- setmp4();\r
- setGuiSetttings(CheckState.Unchecked, "640", "", "H.264 (iPod)", "1500", "", 0, "0%", "160", CheckState.Checked, "48", "keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=1500:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: iPod High Rez)");\r
- break;\r
-\r
- case "iPod Low-Rez":\r
- setGuiSetttings(CheckState.Unchecked, "320", "", "H.264 (iPod)", "700", "", 0, "0%", "160", CheckState.Checked, "48", "keyint=300:keyint-min=30:bframes=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:subme=6:no-fast-pskip=1", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: iPod Low Rez)");\r
- setmp4();\r
- break;\r
-\r
- case "Normal":\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "1500", "", 0, "0%", "160", CheckState.Checked, "48", "ref=2:bframes=2:subme=5:me=umh", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Normal)");\r
- setmp4();\r
- break;\r
-\r
- case "PS3":\r
- setmp4();\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "2500", "", 0, "0%", "160", CheckState.Checked, "48", "level=41:subme=5:me=umh", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: PS3)");\r
- break;\r
-\r
- case "PSP":\r
- setmp4();\r
- setGuiSetttings(CheckState.Unchecked, "368", "208", "Mpeg 4", "1024", "", 0, "0%", "160", CheckState.Checked, "48", "", "None", CheckState.Unchecked, "No Crop", CheckState.Unchecked, "AAC", "Output Settings (Preset: PSP)");\r
- break;\r
-\r
- case "QuickTime":\r
- setmp4();\r
- setGuiSetttings(CheckState.Checked, "", "", "H.264", "2000", "", 0, "0%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=3:bime:weightb:b-rdo:direct=auto:me=umh:subme=5:analyse=all:8x8dct:trellis=1:no-fast-pskip", "None", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Quicktime)");\r
- break;\r
-\r
-\r
- case "Television":\r
- setGuiSetttings(CheckState.Unchecked, "", "", "H.264", "1300", "", 0, "0%", "160", CheckState.Checked, "48", "ref=3:mixed-refs:bframes=6:bime:weightb:direct=auto:b-pyramid:me=umh:subme=6:analyse=all:8x8dct:trellis=1:nr=150:no-fast-pskip", "Origional (Fast)", CheckState.Checked, "No Crop", CheckState.Checked, "AAC", "Output Settings (Preset: Television)");\r
- setMkv();\r
- break;\r
- default:\r
- break;\r
+ while (!presetInput.EndOfStream)\r
+ {\r
+ if ((char)presetInput.Peek() == '+')\r
+ {\r
+ string preset = presetInput.ReadLine().Replace("+ ", "");\r
+ Regex r = new Regex("(: )"); // Split on hyphens. \r
+ string[] presetName = r.Split(preset);\r
+\r
+ if (selectedPreset == "iPhone / iPod Touch")\r
+ {\r
+ selectedPreset = "iPhone";\r
+ }\r
+\r
+ if (selectedPreset == presetName[0])\r
+ {\r
+ // Need to disable anamorphic now, otherwise it may overide the width / height values later.\r
+ CheckPixelRatio.CheckState = CheckState.Unchecked;\r
+\r
+ // Send the query from the file to the Query Parser class\r
+ Functions.QueryParser presetQuery = Functions.QueryParser.Parse(preset);\r
+\r
+ // Now load the preset\r
+ presetLoader(presetQuery, selectedPreset);\r
+ }\r
+ \r
+ }\r
+ else\r
+ {\r
+ presetInput.ReadLine();\r
+ }\r
+ }\r
+ }\r
+ catch (Exception exc)\r
+ {\r
+ MessageBox.Show(exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
}\r
- }\r
-\r
\r
- // Functions - It's a bit dirty but i'll sort this out later. Simply done to reduce the amount of code above.\r
- private void setGuiSetttings(CheckState anamorphic, string width, string height, string vencoder, string bitrate, string filesize, int quality, string qpercent, string audioBit, CheckState chpt, string audioSample, string h264, string deinterlace, CheckState twopass, string crop, CheckState turbo, string audioCodec, string preset)\r
- {\r
- CheckPixelRatio.CheckState = anamorphic;\r
- text_width.Text = width;\r
- text_height.Text = height;\r
- drp_videoEncoder.Text = vencoder;\r
- text_bitrate.Text = bitrate;\r
- text_filesize.Text = filesize;\r
- slider_videoQuality.Value = quality;\r
- SliderValue.Text = qpercent;\r
- drp_audioBitrate.Text = audioBit;\r
- Check_ChapterMarkers.CheckState = chpt;\r
- drp_audioSampleRate.Text = audioSample;\r
- rtf_h264advanced.Text = h264;\r
- drp_deInterlace_option.Text = deinterlace;\r
- check_2PassEncode.CheckState = twopass;\r
- drp_crop.Text = crop;\r
- check_turbo.CheckState = turbo;\r
- drp_audioCodec.Text = audioCodec;\r
-\r
- groupBox_output.Text = preset;\r
+ \r
}\r
-\r
- private void setMkv()\r
- {\r
- // Set file extension to MKV\r
- string destination = text_destination.Text;\r
- destination = destination.Replace(".mp4", ".mkv");\r
- destination = destination.Replace(".avi", ".mkv");\r
- destination = destination.Replace(".m4v", ".mkv");\r
- destination = destination.Replace(".ogm", ".mkv");\r
- text_destination.Text = destination;\r
- }\r
- private void setmp4()\r
- {\r
- // Set file extension to MKV\r
- string destination = text_destination.Text;\r
- destination = destination.Replace(".m4v", ".mp4");\r
- destination = destination.Replace(".avi", ".mp4");\r
- destination = destination.Replace(".mkv", ".mp4");\r
- destination = destination.Replace(".ogm", ".mp4");\r
- text_destination.Text = destination;\r
- }\r
-\r
#endregion\r
\r
//---------------------------------------------------\r
text_width.Text = "";\r
text_width.BackColor = Color.LightCoral;\r
CheckPixelRatio.BackColor = Color.LightCoral;\r
-\r
}\r
else\r
{\r
else\r
{\r
text_height.Text = height.ToString();\r
+ text_width.BackColor = Color.LightGreen;\r
}\r
}\r
}\r
\r
// Source tab\r
#region source\r
- text_source.Text = presetQuery.Source;\r
+ if (presetQuery.Source != "")\r
+ text_source.Text = presetQuery.Source;\r
+\r
if (presetQuery.DVDTitle != 0)\r
drp_dvdtitle.Text = presetQuery.DVDTitle.ToString();\r
\r
\r
if (presetQuery.DVDChapterFinish != 0)\r
drop_chapterFinish.Text = presetQuery.DVDChapterFinish.ToString();\r
+\r
+ if (presetQuery.Format != "")\r
+ {\r
+ string destination = text_destination.Text;\r
+ destination = destination.Replace(".mp4", "." + presetQuery.Format);\r
+ destination = destination.Replace(".m4v", "." + presetQuery.Format);\r
+ destination = destination.Replace(".avi", "." + presetQuery.Format);\r
+ destination = destination.Replace(".mkv", "." + presetQuery.Format);\r
+ destination = destination.Replace(".ogm", "." + presetQuery.Format);\r
+ text_destination.Text = destination;\r
+ }\r
+\r
#endregion\r
\r
// Destination tab\r
#region destination\r
\r
- text_destination.Text = presetQuery.Destination;\r
+ if (presetQuery.Destination != "")\r
+ text_destination.Text = presetQuery.Destination;\r
+\r
drp_videoEncoder.Text = presetQuery.VideoEncoder;\r
drp_audioCodec.Text = presetQuery.AudioEncoder;\r
if (presetQuery.Width != 0)\r
{\r
text_width.Text = presetQuery.Width.ToString();\r
+ \r
}\r
else\r
{\r
text_width.Text = "";\r
text_width.BackColor = Color.White;\r
}\r
+\r
if (presetQuery.Height != 0)\r
{\r
text_height.Text = presetQuery.Height.ToString();\r
else\r
{\r
text_height.Text = "";\r
- text_width.BackColor = Color.White;\r
+ text_height.BackColor = Color.White;\r
}\r
#endregion\r
\r