{\r
public partial class frmMain : Form\r
{\r
- // -------------------------------------------------------------- \r
- // Applicaiton Startup\r
- // --------------------------------------------------------------\r
\r
- #region Application Startup\r
-\r
- // Declarations\r
- private Process hbProc;\r
+ // Declarations *******************************************************\r
+ Functions.Common hb_common_func = new Functions.Common();\r
+ Functions.x264Panel x264PanelFunctions = new Functions.x264Panel();\r
+ Functions.CLI cliObj = new Functions.CLI();\r
+ Functions.Queue encodeQueue = new Functions.Queue();\r
+ Parsing.Title selectedTitle;\r
+ internal Process hbProc;\r
private Parsing.DVD thisDVD;\r
private frmQueue queueWindow = new frmQueue();\r
private delegate void updateStatusChanger();\r
- Functions.Common hb_common_func = new Functions.Common();\r
- Functions.x264Panel x264PanelFunctions = new Functions.x264Panel();\r
+ \r
+ // Applicaiton Startup ************************************************\r
+\r
+ #region Application Startup\r
\r
public frmMain()\r
{\r
// show the form, but leave disabled until preloading is complete then show the main form\r
this.Enabled = false;\r
this.Show();\r
- // Forces frmMain to draw\r
- Application.DoEvents();\r
+ Application.DoEvents(); // Forces frmMain to draw\r
\r
// update the status\r
if (Properties.Settings.Default.updateStatus == "Checked")\r
}\r
\r
//H264 Panel Loading\r
- lblStatus.Text = "Loading H264 Panel";\r
+ lblStatus.Text = "Loading H264 Panel ...";\r
Application.DoEvents();\r
setupH264Panel();\r
Thread.Sleep(100);\r
\r
// Turn the interface back to the user\r
this.Enabled = true;\r
+\r
+ // Some event Handlers.\r
+ this.Resize += new EventHandler(frmMain_Resize);\r
+\r
}\r
\r
// Startup Functions\r
updateWindow.Show();\r
}\r
}\r
- catch (Exception exc)\r
+ catch (Exception)\r
{\r
- MessageBox.Show(exc.ToString());\r
+ // Don't want to have an exception messagebox displayed behind the splash screen,\r
+ // So, exception is ignored. Lets hope there are no bugs here :)\r
}\r
}\r
private void splashTimer(object sender)\r
Functions.QueryParser presetQuery = Functions.QueryParser.Parse(userDefaults);\r
hb_common_func.presetLoader(this, presetQuery, "User Defaults ");\r
}\r
- catch (Exception exc)\r
+ catch (Exception)\r
{\r
- MessageBox.Show("Unable to load user Default Settings. \n\n" + exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
+ // Do Nothing. We don't want an error appearing behind the splash screen.\r
}\r
}\r
\r
#endregion\r
\r
- // -------------------------------------------------------------- \r
- // The Applications Main Menu\r
- // -------------------------------------------------------------- \r
+ // The Applications Main Menu *****************************************\r
\r
#region File Menu\r
\r
\r
private void mnu_encode_Click(object sender, EventArgs e)\r
{\r
- showQueue();\r
+ queueWindow.setQueue(encodeQueue);\r
+ queueWindow.Show();\r
}\r
private void mnu_viewDVDdata_Click(object sender, EventArgs e)\r
{\r
- frmDvdInfo dvdInfoWindow = new frmDvdInfo();\r
+ frmActivityWindow dvdInfoWindow = new frmActivityWindow("dvdinfo.dat", this, queueWindow);\r
dvdInfoWindow.Show();\r
}\r
private void mnu_options_Click(object sender, EventArgs e)\r
Options.ShowDialog();\r
}\r
\r
-\r
#endregion\r
\r
#region Presets Menu\r
private void mnu_presetReset_Click(object sender, EventArgs e)\r
{\r
treeView_presets.Nodes.Clear();\r
- grabCLIPresets();\r
+ cliObj.grabCLIPresets();\r
loadPresetPanel();\r
if (treeView_presets.Nodes.Count == 0)\r
MessageBox.Show("Unable to load the presets.dat file. Please select \"Update Built-in Presets\" from the Presets Menu \nMake sure you are running the program in Admin mode if running on Vista. See Windows FAQ for details!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
else\r
- MessageBox.Show("Presets have been updated", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
+ MessageBox.Show("Presets have been updated!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
}\r
private void mnu_SelectDefault_Click(object sender, EventArgs e)\r
{\r
\r
#endregion\r
\r
- // -------------------------------------------------------------- \r
- // MainWindow Components, Actions and Functions\r
- // --------------------------------------------------------------\r
+ // MainWindow Components, Actions and Functions ***********************\r
\r
#region Actions\r
\r
// ToolBar\r
private void btn_start_Click(object sender, EventArgs e)\r
{\r
- if (text_source.Text == "" || text_source.Text == "Click 'Browse' to continue" || text_destination.Text == "")\r
+ if (text_source.Text == "" || text_source.Text == "Click 'Source' to continue" || text_destination.Text == "")\r
MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
else\r
{\r
}\r
private void btn_add2Queue_Click(object sender, EventArgs e)\r
{\r
- if (text_source.Text == "" || text_source.Text == "Click 'Browse' to continue" || text_destination.Text == "")\r
+ if (text_source.Text == "" || text_source.Text == "Click 'Source' to continue" || text_destination.Text == "")\r
MessageBox.Show("No source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
else\r
{\r
- String query;\r
+\r
+ String query = hb_common_func.GenerateTheQuery(this);\r
if (rtf_query.Text != "")\r
query = rtf_query.Text;\r
- else\r
- query = hb_common_func.GenerateTheQuery(this);\r
\r
- queueWindow.list_queue.Items.Add(query);\r
+ encodeQueue.add(query);\r
+\r
+ queueWindow.setQueue(encodeQueue);\r
queueWindow.Show();\r
}\r
}\r
private void btn_showQueue_Click(object sender, EventArgs e)\r
{\r
- showQueue();\r
+ queueWindow.setQueue(encodeQueue);\r
+ queueWindow.Show();\r
}\r
private void btn_ActivityWindow_Click(object sender, EventArgs e)\r
{\r
- Form ActivityWindow = new frmActivityWindow();\r
- ActivityWindow.ShowDialog();\r
+ frmActivityWindow ActivityWindow = new frmActivityWindow("hb_encode_log.dat", this, queueWindow);\r
+ ActivityWindow.Show();\r
}\r
\r
//Source\r
- private void btn_Browse_Click(object sender, EventArgs e)\r
+ private void btn_dvd_source_Click(object sender, EventArgs e)\r
{\r
String filename = "";\r
text_source.Text = "";\r
- frmDvdInfo dvdInfoWindow = new frmDvdInfo();\r
\r
- if (check_fileMode.Checked)\r
- {\r
- ISO_Open.ShowDialog();\r
- filename = ISO_Open.FileName;\r
- }\r
+ DVD_Open.ShowDialog();\r
+ filename = DVD_Open.SelectedPath;\r
+\r
+ if (filename.StartsWith("\\"))\r
+ MessageBox.Show("Sorry, HandBrake does not support UNC file paths. \nTry mounting the share as a network drive in My Computer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
else\r
{\r
- DVD_Open.ShowDialog();\r
- filename = DVD_Open.SelectedPath;\r
+ if (filename != "")\r
+ {\r
+ Form frmRD = new frmReadDVD(filename, this);\r
+ text_source.Text = filename;\r
+ frmRD.ShowDialog();\r
+ }\r
+ else\r
+ text_source.Text = "Click 'Source' to continue";\r
+\r
+ // If there are no titles in the dropdown menu then the scan has obviously failed. Display an error message explaining to the user.\r
+ if (drp_dvdtitle.Items.Count == 0)\r
+ MessageBox.Show("No Title(s) found. Please make sure you have selected a valid, non-copy protected source. Please refer to the FAQ (see Help Menu).", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
+\r
}\r
+ }\r
+ private void btn_file_source_Click(object sender, EventArgs e)\r
+ {\r
+ String filename = "";\r
+ text_source.Text = "";\r
+\r
+ ISO_Open.ShowDialog();\r
+ filename = ISO_Open.FileName;\r
\r
if (filename.StartsWith("\\"))\r
MessageBox.Show("Sorry, HandBrake does not support UNC file paths. \nTry mounting the share as a network drive in My Computer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
{\r
if (filename != "")\r
{\r
- Form frmRD = new frmReadDVD(filename, this, dvdInfoWindow);\r
+ Form frmRD = new frmReadDVD(filename, this);\r
text_source.Text = filename;\r
frmRD.ShowDialog();\r
}\r
else\r
- text_source.Text = "Click 'Browse' to continue";\r
+ text_source.Text = "Click 'Source' to continue";\r
\r
// If there are no titles in the dropdown menu then the scan has obviously failed. Display an error message explaining to the user.\r
if (drp_dvdtitle.Items.Count == 0)\r
\r
}\r
}\r
+ \r
+\r
private void drp_dvdtitle_Click(object sender, EventArgs e)\r
{\r
- if (drp_dvdtitle.Items.Count == 0)\r
- MessageBox.Show("There are no titles to select. Please scan the DVD by clicking the 'browse' button above before trying to select a title.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
+ if ((drp_dvdtitle.Items.Count == 1) && (drp_dvdtitle.Items[0].ToString() == "Automatic"))\r
+ MessageBox.Show("There are no titles to select. Please scan the DVD by clicking the 'Source' button above before trying to select a title.", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
}\r
private void drp_dvdtitle_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
// Reset some values on the form\r
lbl_Aspect.Text = "Select a Title";\r
- lbl_RecomendedCrop.Text = "Select a Title";\r
+ //lbl_RecomendedCrop.Text = "Select a Title";\r
drop_chapterStart.Items.Clear();\r
drop_chapterFinish.Items.Clear();\r
\r
// Otheriwse if its not, title data has to be loased from parsing.\r
if (drp_dvdtitle.Text != "Automatic")\r
{\r
- Parsing.Title selectedTitle = drp_dvdtitle.SelectedItem as Parsing.Title;\r
+ selectedTitle = drp_dvdtitle.SelectedItem as Parsing.Title;\r
\r
// Set the Aspect Ratio\r
lbl_Aspect.Text = selectedTitle.AspectRatio.ToString();\r
+ lbl_src_res.Text = selectedTitle.Resolution.Width + " x " + selectedTitle.Resolution.Height;\r
+ lbl_duration.Text = selectedTitle.Duration.ToString();\r
\r
// Set the Recommended Cropping values\r
- lbl_RecomendedCrop.Text = string.Format("{0}/{1}/{2}/{3}", selectedTitle.AutoCropDimensions[0], selectedTitle.AutoCropDimensions[1], selectedTitle.AutoCropDimensions[2], selectedTitle.AutoCropDimensions[3]);\r
+ //lbl_RecomendedCrop.Text = string.Format("{0}/{1}/{2}/{3}", selectedTitle.AutoCropDimensions[0], selectedTitle.AutoCropDimensions[1], selectedTitle.AutoCropDimensions[2], selectedTitle.AutoCropDimensions[3]);\r
\r
// Populate the Start chapter Dropdown\r
drop_chapterStart.Items.Clear();\r
drp_track1Audio.Items.Add("Automatic");\r
drp_track1Audio.Items.Add("None");\r
drp_track1Audio.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
- if (drp_track1Audio.Items.Count > 0)\r
- drp_track1Audio.Text = drp_track1Audio.Items[0].ToString();\r
+ drp_track1Audio.SelectedIndex = 0;\r
\r
drp_track2Audio.Items.Clear();\r
drp_track2Audio.Items.Add("None");\r
drp_track2Audio.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
- if (drp_track2Audio.Items.Count > 0)\r
- drp_track2Audio.Text = drp_track2Audio.Items[0].ToString();\r
+ drp_track2Audio.SelectedIndex = 0;\r
+\r
+ drp_track3Audio.Items.Clear();\r
+ drp_track3Audio.Items.Add("None");\r
+ drp_track3Audio.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
+ drp_track3Audio.SelectedIndex = 0;\r
+\r
+ drp_track4Audio.Items.Clear();\r
+ drp_track4Audio.Items.Add("None");\r
+ drp_track4Audio.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
+ drp_track4Audio.SelectedIndex = 0;\r
\r
// Populate the Subtitles dropdown\r
drp_subtitle.Items.Clear();\r
}\r
private void drop_chapterStart_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
+ calculateDuration();\r
+\r
drop_chapterStart.BackColor = Color.White;\r
if ((drop_chapterFinish.Text != "Auto") && (drop_chapterStart.Text != "Auto"))\r
{\r
}\r
private void drop_chapterFinish_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
+ calculateDuration();\r
+\r
drop_chapterFinish.BackColor = Color.White;\r
if ((drop_chapterFinish.Text != "Auto") && (drop_chapterStart.Text != "Auto"))\r
{\r
private void text_destination_TextChanged(object sender, EventArgs e)\r
{\r
setAudioByContainer(text_destination.Text);\r
+ setVideoByContainer(text_destination.Text);\r
}\r
\r
// Output Settings\r
private void drp_videoEncoder_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
- //Turn off some options which are H.264 only when the user selects a non h.264 encoder\r
- if (!drp_videoEncoder.Text.Contains("H.264"))\r
+ if ((text_destination.Text.Contains(".mp4")) || (text_destination.Text.Contains(".m4v")))\r
{\r
- check_turbo.CheckState = CheckState.Unchecked;\r
- check_turbo.Enabled = false;\r
- h264Tab.Enabled = false;\r
- rtf_x264Query.Text = "";\r
- check_iPodAtom.Enabled = false;\r
- check_iPodAtom.Checked = false;\r
- check_optimiseMP4.Enabled = false;\r
- if (drp_anamorphic.Items.Count == 3)\r
- drp_anamorphic.Items.RemoveAt(2);\r
+ check_largeFile.Enabled = true;\r
+ check_optimiseMP4.Enabled = true;\r
}\r
else\r
{\r
+ check_largeFile.Enabled = false;\r
+ check_optimiseMP4.Enabled = false;\r
+ check_largeFile.Checked = false;\r
+ check_optimiseMP4.Checked = false;\r
+ }\r
+\r
+\r
+ //Turn off some options which are H.264 only when the user selects a non h.264 encoder\r
+ if (drp_videoEncoder.Text.Contains("H.264"))\r
+ {\r
if (check_2PassEncode.CheckState == CheckState.Checked)\r
check_turbo.Enabled = true;\r
\r
h264Tab.Enabled = true;\r
- check_iPodAtom.Enabled = true;\r
- check_optimiseMP4.Enabled = true;\r
+ if ((text_destination.Text.Contains(".mp4")) || (text_destination.Text.Contains(".m4v")))\r
+ check_iPodAtom.Enabled = true;\r
+ else\r
+ check_iPodAtom.Enabled = false;\r
if (!drp_anamorphic.Items.Contains("Loose"))\r
drp_anamorphic.Items.Add("Loose");\r
}\r
-\r
- }\r
- private void check_largeFile_CheckedChanged(object sender, EventArgs e)\r
- {\r
- if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
- {\r
- MessageBox.Show("You can only use this option with the .mp4/.m4v file container.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
- check_largeFile.CheckState = CheckState.Unchecked;\r
- }\r
- }\r
- private void check_iPodAtom_CheckedChanged(object sender, EventArgs e)\r
- {\r
- if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
- {\r
- MessageBox.Show("You can only use this option with the .mp4/.m4v file container.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
- check_iPodAtom.CheckState = CheckState.Unchecked;\r
- }\r
- }\r
- private void check_optimiseMP4_Clicked(object sender, EventArgs e)\r
- {\r
- if ((!text_destination.Text.Contains(".mp4")) && (!text_destination.Text.Contains(".m4v")))\r
+ else\r
{\r
- MessageBox.Show("You can only use this option with the .mp4/.m4v file container.","Warning",MessageBoxButtons.OK,MessageBoxIcon.Warning);\r
- check_optimiseMP4.CheckState = CheckState.Unchecked;\r
+ check_turbo.CheckState = CheckState.Unchecked;\r
+ check_turbo.Enabled = false;\r
+ h264Tab.Enabled = false;\r
+ rtf_x264Query.Text = "";\r
+ check_iPodAtom.Enabled = false;\r
+ check_iPodAtom.Checked = false;\r
+ if (drp_anamorphic.Items.Count == 3)\r
+ drp_anamorphic.Items.RemoveAt(2);\r
}\r
+\r
}\r
\r
//Video Tab\r
{\r
try\r
{\r
-\r
if ((int.Parse(text_width.Text) % 16) != 0)\r
text_width.BackColor = Color.LightCoral;\r
else\r
text_width.BackColor = Color.LightGreen;\r
\r
\r
- if ((lbl_Aspect.Text != "Select a Title") && (drp_crop.SelectedIndex == 2))\r
+ if (lbl_Aspect.Text != "Select a Title")\r
{\r
- double height = int.Parse(text_width.Text) / double.Parse(lbl_Aspect.Text);\r
- double mod16 = height % 16;\r
- height = height - mod16;\r
-\r
- if (text_width.Text == "")\r
+ if (drp_anamorphic.Text == "None")\r
{\r
- text_height.Text = "";\r
- text_width.BackColor = Color.White;\r
- }\r
- else\r
+ int height = cacluateNonAnamorphicHeight(int.Parse(text_width.Text));\r
text_height.Text = height.ToString();\r
+ }\r
}\r
}\r
catch (Exception)\r
text_top.Enabled = false;\r
text_bottom.Enabled = false;\r
\r
- if (lbl_RecomendedCrop.Text != "Select a Title")\r
+ if ((drp_dvdtitle.Text != "Automatic") && (selectedTitle != null))\r
{\r
- string[] temp = new string[4];\r
- temp = lbl_RecomendedCrop.Text.Split('/');\r
- text_left.Text = temp[2];\r
- text_right.Text = temp[3];\r
- text_top.Text = temp[0];\r
- text_bottom.Text = temp[1];\r
+ text_top.Text = selectedTitle.AutoCropDimensions[0].ToString();\r
+ text_bottom.Text = selectedTitle.AutoCropDimensions[1].ToString();\r
+ text_left.Text = selectedTitle.AutoCropDimensions[2].ToString();\r
+ text_right.Text = selectedTitle.AutoCropDimensions[3].ToString();\r
}\r
else\r
{\r
text_top.Text = "";\r
text_bottom.Text = "";\r
}\r
+\r
}\r
\r
if ((string)drp_crop.SelectedItem == "No Crop")\r
text_right.Text = "0";\r
text_top.Text = "0";\r
text_bottom.Text = "0";\r
-\r
}\r
}\r
private void check_vfr_CheckedChanged(object sender, EventArgs e)\r
}\r
\r
// Audio Tab\r
- private void drp_track1Audio_SelectedIndexChanged(object sender, EventArgs e)\r
- {\r
- if (drp_track1Audio.SelectedItem.Equals("None"))\r
- {\r
- drp_audbit_1.Enabled = false;\r
- drp_audenc_1.Enabled = false;\r
- drp_audsr_1.Enabled = false;\r
- drp_audmix_1.Enabled = false;\r
- drp_audbit_1.Text = "";\r
- drp_audenc_1.Text = "";\r
- drp_audsr_1.Text = "";\r
- drp_audmix_1.Text = "";\r
- }\r
- else\r
- {\r
- drp_audbit_1.Enabled = true;\r
- drp_audenc_1.Enabled = true;\r
- drp_audsr_1.Enabled = true;\r
- drp_audmix_1.Enabled = true;\r
- drp_audbit_1.Text = "160";\r
- drp_audenc_1.Text = "AAC";\r
- drp_audsr_1.Text = "48";\r
- drp_audmix_1.Text = "Automatic";\r
- }\r
- }\r
private void drp_track2Audio_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
if (drp_track2Audio.SelectedItem.Equals("None"))\r
drp_audenc_2.Enabled = false;\r
drp_audsr_2.Enabled = false;\r
drp_audmix_2.Enabled = false;\r
+ trackBar2.Enabled = false;\r
drp_audbit_2.Text = "";\r
drp_audenc_2.Text = "";\r
drp_audsr_2.Text = "";\r
- drp_audmix_2.Text = "";\r
+ drp_audmix_2.Text = "Automatic";\r
+ trackBar2.Value = 0;\r
+\r
+ // Disable the 3rd Track.\r
+ drp_track3Audio.Enabled = false;\r
+ drp_track3Audio.Text = "None";\r
+ drp_audbit_3.Text = "";\r
+ drp_audenc_3.Text = "";\r
+ drp_audsr_3.Text = "";\r
+ drp_audmix_3.Text = "Automatic";\r
+ trackBar3.Value = 0;\r
}\r
else\r
{\r
drp_audenc_2.Enabled = true;\r
drp_audsr_2.Enabled = true;\r
drp_audmix_2.Enabled = true;\r
+ trackBar2.Enabled = true;\r
drp_audbit_2.Text = "160";\r
drp_audenc_2.Text = "AAC";\r
drp_audsr_2.Text = "48";\r
drp_audmix_2.Text = "Automatic";\r
+\r
+ // Enable the 3rd Track.\r
+ drp_track3Audio.Enabled = true;\r
+ drp_audbit_3.Text = "";\r
+ drp_audenc_3.Text = "";\r
+ drp_audsr_3.Text = "";\r
+ drp_audmix_3.Text = "Automatic";\r
}\r
}\r
- private void drp_audioMixDown_SelectedIndexChanged(object sender, EventArgs e)\r
+ private void drp_track3Audio_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
- if ((drp_audenc_1.Text == "AAC") && (drp_audmix_1.Text == "6 Channel Discrete"))\r
+ if (drp_track3Audio.SelectedItem.Equals("None"))\r
+ {\r
+ drp_audbit_3.Enabled = false;\r
+ drp_audenc_3.Enabled = false;\r
+ drp_audsr_3.Enabled = false;\r
+ drp_audmix_3.Enabled = false;\r
+ trackBar3.Enabled = false;\r
+ drp_audbit_3.Text = "";\r
+ drp_audenc_3.Text = "";\r
+ drp_audsr_3.Text = "";\r
+ drp_audmix_3.Text = "Automatic";\r
+ trackBar3.Value = 0;\r
+\r
+ // Disable the 4th Track.\r
+ drp_track4Audio.Enabled = false;\r
+ drp_track4Audio.Text = "None";\r
+ drp_audbit_4.Text = "";\r
+ drp_audenc_4.Text = "";\r
+ drp_audsr_4.Text = "";\r
+ drp_audmix_4.Text = "Automatic";\r
+\r
+ }\r
+ else\r
+ {\r
+ drp_audbit_3.Enabled = true;\r
+ drp_audenc_3.Enabled = true;\r
+ drp_audsr_3.Enabled = true;\r
+ drp_audmix_3.Enabled = true;\r
+ trackBar3.Enabled = true;\r
+ drp_audbit_3.Text = "160";\r
+ drp_audenc_3.Text = "AAC";\r
+ drp_audsr_3.Text = "48";\r
+ drp_audmix_3.Text = "Automatic";\r
+\r
+ // Enable the 4th Track.\r
+ drp_track4Audio.Enabled = true;\r
+ drp_audbit_4.Text = "";\r
+ drp_audenc_4.Text = "";\r
+ drp_audsr_4.Text = "";\r
+ drp_audmix_4.Text = "Automatic";\r
+ }\r
+\r
+ }\r
+ private void drp_track4Audio_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ if (drp_track4Audio.SelectedItem.Equals("None"))\r
+ {\r
+ drp_audbit_4.Enabled = false;\r
+ drp_audenc_4.Enabled = false;\r
+ drp_audsr_4.Enabled = false;\r
+ drp_audmix_4.Enabled = false;\r
+ trackBar4.Enabled = false;\r
+ drp_audbit_4.Text = "";\r
+ drp_audenc_4.Text = "";\r
+ drp_audsr_4.Text = "";\r
+ drp_audmix_4.Text = "Automatic";\r
+ trackBar4.Value = 0;\r
+ }\r
+ else\r
{\r
- drp_audbit_1.Items.Clear();\r
- drp_audbit_1.Items.Add("32");\r
- drp_audbit_1.Items.Add("40");\r
- drp_audbit_1.Items.Add("48");\r
- drp_audbit_1.Items.Add("56");\r
- drp_audbit_1.Items.Add("64");\r
- drp_audbit_1.Items.Add("80");\r
- drp_audbit_1.Items.Add("86");\r
- drp_audbit_1.Items.Add("112");\r
- drp_audbit_1.Items.Add("128");\r
- drp_audbit_1.Items.Add("160");\r
- drp_audbit_1.Items.Add("192");\r
- drp_audbit_1.Items.Add("224");\r
- drp_audbit_1.Items.Add("256");\r
- drp_audbit_1.Items.Add("320");\r
- drp_audbit_1.Items.Add("384");\r
+ drp_audbit_4.Enabled = true;\r
+ drp_audenc_4.Enabled = true;\r
+ drp_audsr_4.Enabled = true;\r
+ drp_audmix_4.Enabled = true;\r
+ trackBar4.Enabled = true;\r
+ drp_audbit_4.Text = "160";\r
+ drp_audenc_4.Text = "AAC";\r
+ drp_audsr_4.Text = "48";\r
+ drp_audmix_4.Text = "Automatic";\r
}\r
+ }\r
+\r
+ private void drp_audioMixDown_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ if ((drp_audenc_1.Text == "AAC") && (drp_audmix_1.Text == "6 Channel Discrete"))\r
+ setBitrateSelections384(drp_audbit_1);\r
else if ((drp_audenc_1.Text == "AAC") && (drp_audmix_1.Text != "6 Channel Discrete"))\r
{\r
- drp_audbit_1.Items.Clear();\r
- drp_audbit_1.Items.Add("32");\r
- drp_audbit_1.Items.Add("40");\r
- drp_audbit_1.Items.Add("48");\r
- drp_audbit_1.Items.Add("56");\r
- drp_audbit_1.Items.Add("64");\r
- drp_audbit_1.Items.Add("80");\r
- drp_audbit_1.Items.Add("86");\r
- drp_audbit_1.Items.Add("112");\r
- drp_audbit_1.Items.Add("128");\r
- drp_audbit_1.Items.Add("160");\r
+ setBitrateSelections160(drp_audbit_1);\r
drp_audbit_1.Text = "160";\r
}\r
}\r
private void drp_audmix_2_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
+ if (drp_audmix_1.Text == "Automatic")\r
+ MessageBox.Show("Please select a mixdown for the previous track(s).", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+\r
if ((drp_audenc_2.Text == "AAC") && (drp_audmix_2.Text == "6 Channel Discrete"))\r
+ setBitrateSelections384(drp_audbit_2);\r
+ else if ((drp_audenc_2.Text == "AAC") && (drp_audmix_2.Text != "6 Channel Discrete"))\r
+ {\r
+ setBitrateSelections160(drp_audbit_2);\r
+ drp_audbit_2.Text = "160";\r
+ }\r
+ }\r
+ private void drp_audmix_3_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ if (drp_audmix_2.Text == "Automatic")\r
+ MessageBox.Show("Please select a mixdown for the previous track(s).", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+\r
+ if ((drp_audenc_3.Text == "AAC") && (drp_audmix_3.Text == "6 Channel Discrete"))\r
+ setBitrateSelections384(drp_audbit_3);\r
+ else if ((drp_audenc_3.Text == "AAC") && (drp_audmix_3.Text != "6 Channel Discrete"))\r
+ {\r
+ setBitrateSelections160(drp_audbit_3);\r
+ drp_audbit_3.Text = "160";\r
+ }\r
+ }\r
+ private void drp_audmix_4_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ if (drp_audmix_3.Text == "Automatic")\r
+ MessageBox.Show("Please select a mixdown for the previous track(s).", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+\r
+ if ((drp_audenc_4.Text == "AAC") && (drp_audmix_4.Text == "6 Channel Discrete"))\r
+ setBitrateSelections384(drp_audbit_4);\r
+ else if ((drp_audenc_4.Text == "AAC") && (drp_audmix_4.Text != "6 Channel Discrete"))\r
{\r
- drp_audbit_2.Items.Clear();\r
- drp_audbit_2.Items.Add("32");\r
- drp_audbit_2.Items.Add("40");\r
- drp_audbit_2.Items.Add("48");\r
- drp_audbit_2.Items.Add("56");\r
- drp_audbit_2.Items.Add("64");\r
- drp_audbit_2.Items.Add("80");\r
- drp_audbit_2.Items.Add("86");\r
- drp_audbit_2.Items.Add("112");\r
- drp_audbit_2.Items.Add("128");\r
- drp_audbit_2.Items.Add("160");\r
- drp_audbit_2.Items.Add("192");\r
- drp_audbit_2.Items.Add("224");\r
- drp_audbit_2.Items.Add("256");\r
- drp_audbit_2.Items.Add("320");\r
- drp_audbit_2.Items.Add("384");\r
+ setBitrateSelections160(drp_audbit_4);\r
+ drp_audbit_4.Text = "160";\r
}\r
}\r
+\r
private void drp_audenc_1_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
if (drp_audenc_1.Text == "AC3")\r
drp_audmix_1.Items.Add("Dolby Pro Logic II");\r
drp_audmix_1.Items.Add("6 Channel Discrete");\r
\r
- drp_audbit_1.Items.Clear();\r
- drp_audbit_1.Items.Add("32");\r
- drp_audbit_1.Items.Add("40");\r
- drp_audbit_1.Items.Add("48");\r
- drp_audbit_1.Items.Add("56");\r
- drp_audbit_1.Items.Add("64");\r
- drp_audbit_1.Items.Add("80");\r
- drp_audbit_1.Items.Add("86");\r
- drp_audbit_1.Items.Add("112");\r
- drp_audbit_1.Items.Add("128");\r
- drp_audbit_1.Items.Add("160");\r
-\r
+ setBitrateSelections160(drp_audbit_1);\r
}\r
else\r
{\r
drp_audmix_1.Items.Add("Dolby Surround");\r
drp_audmix_1.Items.Add("Dolby Pro Logic II");\r
\r
- drp_audbit_1.Items.Clear();\r
- drp_audbit_1.Items.Add("32");\r
- drp_audbit_1.Items.Add("40");\r
- drp_audbit_1.Items.Add("48");\r
- drp_audbit_1.Items.Add("56");\r
- drp_audbit_1.Items.Add("64");\r
- drp_audbit_1.Items.Add("80");\r
- drp_audbit_1.Items.Add("86");\r
- drp_audbit_1.Items.Add("112");\r
- drp_audbit_1.Items.Add("128");\r
- drp_audbit_1.Items.Add("160");\r
- drp_audbit_1.Items.Add("192");\r
- drp_audbit_1.Items.Add("224");\r
- drp_audbit_1.Items.Add("256");\r
- drp_audbit_1.Items.Add("320");\r
+ setBitrateSelections320(drp_audbit_1);\r
}\r
}\r
private void drp_audenc_2_SelectedIndexChanged(object sender, EventArgs e)\r
drp_audbit_2.Enabled = false;\r
drp_audsr_2.Enabled = false;\r
\r
- drp_audmix_2.Text = "";\r
- drp_audbit_2.Text = "";\r
- drp_audsr_2.Text = "";\r
+ drp_audmix_2.Text = "Automatic";\r
+ drp_audbit_2.Text = "160";\r
+ drp_audsr_2.Text = "48";\r
}\r
else\r
{\r
drp_audbit_2.Text = "160";\r
drp_audsr_2.Text = "48";\r
}\r
-\r
-\r
}\r
\r
if (drp_audenc_2.Text == "AAC")\r
drp_audmix_2.Items.Add("Dolby Pro Logic II");\r
drp_audmix_2.Items.Add("6 Channel Discrete");\r
\r
- drp_audbit_2.Items.Clear();\r
- drp_audbit_2.Items.Add("32");\r
- drp_audbit_2.Items.Add("40");\r
- drp_audbit_2.Items.Add("48");\r
- drp_audbit_2.Items.Add("56");\r
- drp_audbit_2.Items.Add("64");\r
- drp_audbit_2.Items.Add("80");\r
- drp_audbit_2.Items.Add("86");\r
- drp_audbit_2.Items.Add("112");\r
- drp_audbit_2.Items.Add("128");\r
- drp_audbit_2.Items.Add("160");\r
-\r
+ setBitrateSelections160(drp_audbit_2);\r
}\r
else\r
{\r
drp_audmix_2.Items.Add("Dolby Surround");\r
drp_audmix_2.Items.Add("Dolby Pro Logic II");\r
\r
- drp_audbit_2.Items.Clear();\r
- drp_audbit_2.Items.Add("32");\r
- drp_audbit_2.Items.Add("40");\r
- drp_audbit_2.Items.Add("48");\r
- drp_audbit_2.Items.Add("56");\r
- drp_audbit_2.Items.Add("64");\r
- drp_audbit_2.Items.Add("80");\r
- drp_audbit_2.Items.Add("86");\r
- drp_audbit_2.Items.Add("112");\r
- drp_audbit_2.Items.Add("128");\r
- drp_audbit_2.Items.Add("160");\r
- drp_audbit_2.Items.Add("192");\r
- drp_audbit_2.Items.Add("224");\r
- drp_audbit_2.Items.Add("256");\r
- drp_audbit_2.Items.Add("320");\r
- }\r
- }\r
- private void slider_drc_Scroll(object sender, EventArgs e)\r
- {\r
- double value = slider_drc.Value / 10.0;\r
+ setBitrateSelections320(drp_audbit_2);\r
+ }\r
+ }\r
+ private void drp_audenc_3_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ if (drp_audenc_3.Text == "AC3")\r
+ {\r
+ drp_audmix_3.Enabled = false;\r
+ drp_audbit_3.Enabled = false;\r
+ drp_audsr_3.Enabled = false;\r
+\r
+ drp_audmix_3.Text = "Automatic";\r
+ drp_audbit_3.Text = "160";\r
+ drp_audsr_3.Text = "48";\r
+ }\r
+ else\r
+ {\r
+ // Just make sure not to re-enable the following boxes if the track above is none\r
+ if (drp_track2Audio.Text != "None")\r
+ {\r
+ drp_audmix_3.Enabled = true;\r
+ drp_audbit_3.Enabled = true;\r
+ drp_audsr_3.Enabled = true;\r
+\r
+ drp_audmix_3.Text = "Automatic";\r
+ drp_audbit_3.Text = "160";\r
+ drp_audsr_3.Text = "48";\r
+ }\r
+ }\r
+\r
+\r
+ if (drp_audenc_3.Text == "AAC")\r
+ {\r
+ drp_audmix_3.Items.Clear();\r
+ drp_audmix_3.Items.Add("Mono");\r
+ drp_audmix_3.Items.Add("Stereo");\r
+ drp_audmix_3.Items.Add("Dolby Surround");\r
+ drp_audmix_3.Items.Add("Dolby Pro Logic II");\r
+ drp_audmix_3.Items.Add("6 Channel Discrete");\r
+\r
+ setBitrateSelections160(drp_audbit_3);\r
+ }\r
+ else\r
+ {\r
+ drp_audmix_3.Items.Clear();\r
+ drp_audmix_3.Items.Add("Stereo");\r
+ drp_audmix_3.Items.Add("Dolby Surround");\r
+ drp_audmix_3.Items.Add("Dolby Pro Logic II");\r
+\r
+ setBitrateSelections320(drp_audbit_3);\r
+ }\r
+ }\r
+ private void drp_audenc_4_SelectedIndexChanged(object sender, EventArgs e)\r
+ {\r
+ if (drp_audenc_4.Text == "AC3")\r
+ {\r
+ drp_audmix_4.Enabled = false;\r
+ drp_audbit_4.Enabled = false;\r
+ drp_audsr_4.Enabled = false;\r
+\r
+ drp_audmix_4.Text = "Automatic";\r
+ drp_audbit_4.Text = "160";\r
+ drp_audsr_4.Text = "48";\r
+ }\r
+ else\r
+ {\r
+ // Just make sure not to re-enable the following boxes if the track above is none\r
+ if (drp_track2Audio.Text != "None")\r
+ {\r
+ drp_audmix_4.Enabled = true;\r
+ drp_audbit_4.Enabled = true;\r
+ drp_audsr_4.Enabled = true;\r
+\r
+ drp_audmix_4.Text = "Automatic";\r
+ drp_audbit_4.Text = "160";\r
+ drp_audsr_4.Text = "48";\r
+ }\r
+ }\r
+\r
+\r
+ if (drp_audenc_4.Text == "AAC")\r
+ {\r
+ drp_audmix_4.Items.Clear();\r
+ drp_audmix_4.Items.Add("Mono");\r
+ drp_audmix_4.Items.Add("Stereo");\r
+ drp_audmix_4.Items.Add("Dolby Surround");\r
+ drp_audmix_4.Items.Add("Dolby Pro Logic II");\r
+ drp_audmix_4.Items.Add("6 Channel Discrete");\r
+\r
+ setBitrateSelections160(drp_audbit_4);\r
+ }\r
+ else\r
+ {\r
+ drp_audmix_4.Items.Clear();\r
+ drp_audmix_4.Items.Add("Stereo");\r
+ drp_audmix_4.Items.Add("Dolby Surround");\r
+ drp_audmix_4.Items.Add("Dolby Pro Logic II");\r
+\r
+ setBitrateSelections320(drp_audbit_4);\r
+ }\r
+ }\r
+\r
+ private void trackBar1_Scroll(object sender, EventArgs e)\r
+ {\r
+ double value = trackBar1.Value / 10.0;\r
+ value++;\r
+\r
+ lbl_drc1.Text = value.ToString();\r
+ }\r
+ private void trackBar2_Scroll(object sender, EventArgs e)\r
+ {\r
+ double value = trackBar2.Value / 10.0;\r
+ value++;\r
+\r
+ lbl_drc2.Text = value.ToString();\r
+ }\r
+ private void trackBar3_Scroll(object sender, EventArgs e)\r
+ {\r
+ double value = trackBar3.Value / 10.0;\r
value++;\r
\r
- lbl_drc.Text = value.ToString();\r
+ lbl_drc3.Text = value.ToString();\r
}\r
+ private void trackBar4_Scroll(object sender, EventArgs e)\r
+ {\r
+ double value = trackBar4.Value / 10.0;\r
+ value++;\r
+\r
+ lbl_drc4.Text = value.ToString();\r
+ }\r
+\r
private void drp_subtitle_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
if (drp_subtitle.Text.Contains("None"))\r
int c = 0;\r
foreach (string item in user_presets)\r
{\r
- string preset_name = selectedPreset.Replace("--", "");\r
+ string preset_name = "+ " + selectedPreset.Replace("--", "").Trim() + ":";\r
if (item.Contains(preset_name))\r
modified_presets_list.RemoveAt(c);\r
c++;\r
else\r
presetInput.ReadLine();\r
}\r
-\r
presetInput.Close();\r
}\r
\r
this.thisDVD = dvd;\r
}\r
\r
+ // Chapter Selection Duration calculation\r
+ public void calculateDuration()\r
+ {\r
+\r
+ int start_chapter;\r
+ int end_chapter;\r
+ TimeSpan Duration = TimeSpan.FromSeconds(0.0);\r
+\r
+ try\r
+ {\r
+ // Get the durations between the 2 chapter points and add them together.\r
+ if (drop_chapterStart.Text != "Auto" && drop_chapterFinish.Text != "Auto")\r
+ {\r
+ start_chapter = int.Parse(drop_chapterStart.Text);\r
+ end_chapter = int.Parse(drop_chapterFinish.Text);\r
+\r
+ int position = start_chapter - 1;\r
+\r
+ while (position != end_chapter)\r
+ {\r
+ TimeSpan dur = selectedTitle.Chapters[position].Duration;\r
+ Duration = Duration + dur;\r
+ position++;\r
+ }\r
+ }\r
+ }\r
+ catch (Exception)\r
+ {\r
+ // Don't do anything\r
+ }\r
+\r
+ // Set the Duration\r
+ lbl_duration.Text = Duration.ToString();\r
+ }\r
+ public int cacluateNonAnamorphicHeight(int width)\r
+ {\r
+ float aspect = selectedTitle.AspectRatio;\r
+ int aw;\r
+ int ah;\r
+ if (aspect.ToString() == "1.78")\r
+ {\r
+ aw = 16;\r
+ ah = 9;\r
+ }\r
+ else\r
+ {\r
+ aw = 4;\r
+ ah = 3;\r
+ }\r
+\r
+ double a = width * selectedTitle.Resolution.Width * ah * (selectedTitle.Resolution.Height - (double)text_top.Value - (double)text_bottom.Value);\r
+ double b = selectedTitle.Resolution.Height * aw * (selectedTitle.Resolution.Width - (double)text_left.Value - (double)text_right.Value);\r
+\r
+ double y = a / b;\r
+\r
+ // If it's not Mod 16, make it mod 16\r
+ if ((y % 16) != 0)\r
+ {\r
+ double mod16 = y % 16;\r
+ if (mod16 >= 8)\r
+ {\r
+ mod16 = 16 - mod16;\r
+ y = y + mod16;\r
+ }\r
+ else\r
+ {\r
+ y = y - mod16;\r
+ }\r
+ }\r
+\r
+ //16 * (421 / 16)\r
+ //double z = ( 16 * (( y + 8 ) / 16 ) );\r
+ int x = int.Parse(y.ToString());\r
+ return x;\r
+ }\r
+\r
// Audio system functions\r
private void setAudioByContainer(String path)\r
{\r
- if ((path.EndsWith(".mp4")) || (path.EndsWith(".mp4")))\r
+ string oldval = "";\r
+\r
+ if ((path.EndsWith(".mp4")) || (path.EndsWith(".m4v")))\r
{\r
+ oldval = drp_audenc_1.Text;\r
drp_audenc_1.Items.Clear();\r
drp_audenc_1.Items.Add("AAC");\r
- drp_audenc_1.SelectedIndex = 0;\r
+ drp_audenc_1.Items.Add("AC3");\r
+ if ((oldval != "AAC") && (oldval != "AC3"))\r
+ drp_audenc_1.SelectedIndex = 0;\r
\r
+ oldval = drp_audenc_2.Text;\r
drp_audenc_2.Items.Clear();\r
drp_audenc_2.Items.Add("AAC");\r
+ drp_audenc_2.Items.Add("AC3");\r
if (drp_audenc_2.Enabled)\r
- drp_audenc_2.SelectedIndex = 0;\r
+ {\r
+ if ((oldval != "AAC") && (oldval != "AC3"))\r
+ drp_audenc_2.SelectedIndex = 0;\r
+ }\r
+\r
+ oldval = drp_audenc_3.Text;\r
+ drp_audenc_3.Items.Clear();\r
+ drp_audenc_3.Items.Add("AAC");\r
+ drp_audenc_3.Items.Add("AC3");\r
+ if (drp_audenc_3.Enabled)\r
+ {\r
+ if ((oldval != "AAC") && (oldval != "AC3"))\r
+ drp_audenc_3.SelectedIndex = 0;\r
+ }\r
+\r
+ oldval = drp_audenc_4.Text;\r
+ drp_audenc_4.Items.Clear();\r
+ drp_audenc_4.Items.Add("AAC");\r
+ drp_audenc_4.Items.Add("AC3");\r
+ if (drp_audenc_4.Enabled)\r
+ {\r
+ if ((oldval != "AAC") && (oldval != "AC3"))\r
+ drp_audenc_4.SelectedIndex = 0;\r
+ }\r
}\r
else if (path.EndsWith(".avi"))\r
{\r
+ oldval = drp_audenc_1.Text;\r
drp_audenc_1.Items.Clear();\r
drp_audenc_1.Items.Add("MP3");\r
drp_audenc_1.Items.Add("AC3");\r
- drp_audenc_1.SelectedIndex = 0;\r
+ if ((oldval != "MP3") && (oldval != "AC3"))\r
+ drp_audenc_1.SelectedIndex = 0;\r
\r
+ oldval = drp_audenc_2.Text;\r
drp_audenc_2.Items.Clear();\r
drp_audenc_2.Items.Add("MP3");\r
drp_audenc_2.Items.Add("AC3");\r
if (drp_audenc_2.Enabled)\r
- drp_audenc_2.SelectedIndex = 0;\r
+ {\r
+ if ((oldval != "MP3") && (oldval != "AC3"))\r
+ drp_audenc_2.SelectedIndex = 0;\r
+ }\r
+\r
+\r
+ oldval = drp_audenc_3.Text;\r
+ drp_audenc_3.Items.Clear();\r
+ drp_audenc_3.Items.Add("MP3");\r
+ drp_audenc_3.Items.Add("AC3");\r
+ if (drp_audenc_3.Enabled)\r
+ {\r
+ if ((oldval != "MP3") && (oldval != "AC3"))\r
+ drp_audenc_3.SelectedIndex = 0;\r
+ }\r
+\r
+ oldval = drp_audenc_4.Text;\r
+ drp_audenc_4.Items.Clear();\r
+ drp_audenc_4.Items.Add("MP3");\r
+ drp_audenc_4.Items.Add("AC3");\r
+ if (drp_audenc_4.Enabled)\r
+ {\r
+ if ((oldval != "MP3") && (oldval != "AC3"))\r
+ drp_audenc_4.SelectedIndex = 0;\r
+ }\r
}\r
else if (path.EndsWith(".ogm"))\r
{\r
drp_audenc_2.Items.Add("Vorbis");\r
if (drp_audenc_2.Enabled)\r
drp_audenc_2.SelectedIndex = 0;\r
+\r
+ drp_audenc_3.Items.Clear();\r
+ drp_audenc_3.Items.Add("Vorbis");\r
+ if (drp_audenc_3.Enabled)\r
+ drp_audenc_3.SelectedIndex = 0;\r
+\r
+ drp_audenc_4.Items.Clear();\r
+ drp_audenc_4.Items.Add("Vorbis");\r
+ if (drp_audenc_4.Enabled)\r
+ drp_audenc_4.SelectedIndex = 0;\r
}\r
else if (path.EndsWith(".mkv"))\r
{\r
drp_audenc_1.Items.Add("MP3");\r
drp_audenc_1.Items.Add("AC3");\r
drp_audenc_1.Items.Add("Vorbis");\r
- drp_audenc_1.SelectedIndex = 0;\r
+ if (drp_audenc_1.Text == "")\r
+ drp_audenc_1.SelectedIndex = 0;\r
+\r
\r
drp_audenc_2.Items.Clear();\r
drp_audenc_2.Items.Add("AAC");\r
drp_audenc_2.Items.Add("AC3");\r
drp_audenc_2.Items.Add("Vorbis");\r
if (drp_audenc_2.Enabled)\r
- drp_audenc_2.SelectedIndex = 0;\r
+ {\r
+ if (drp_audenc_2.Text == "")\r
+ drp_audenc_2.SelectedIndex = 0;\r
+ }\r
+\r
+ drp_audenc_3.Items.Clear();\r
+ drp_audenc_3.Items.Add("AAC");\r
+ drp_audenc_3.Items.Add("MP3");\r
+ drp_audenc_3.Items.Add("AC3");\r
+ drp_audenc_3.Items.Add("Vorbis");\r
+ if (drp_audenc_3.Enabled)\r
+ {\r
+ if (drp_audenc_3.Text == "")\r
+ drp_audenc_3.SelectedIndex = 0;\r
+ }\r
+\r
+ drp_audenc_4.Items.Clear();\r
+ drp_audenc_4.Items.Add("AAC");\r
+ drp_audenc_4.Items.Add("MP3");\r
+ drp_audenc_4.Items.Add("AC3");\r
+ drp_audenc_4.Items.Add("Vorbis");\r
+ if (drp_audenc_4.Enabled)\r
+ {\r
+ if (drp_audenc_4.Text == "")\r
+ drp_audenc_4.SelectedIndex = 0;\r
+ }\r
}\r
}\r
+ private void setVideoByContainer(String path)\r
+ {\r
+ string oldval = "";\r
+\r
+ if ((path.EndsWith(".mp4")) || (path.EndsWith(".m4v")))\r
+ {\r
+ oldval = drp_videoEncoder.Text;\r
+ drp_videoEncoder.Items.Clear();\r
+ drp_videoEncoder.Items.Add("MPEG-4 (FFmpeg)");\r
+ drp_videoEncoder.Items.Add("MPEG-4 (XviD)");\r
+ drp_videoEncoder.Items.Add("H.264 (x264)");\r
+ if (oldval == "VP3 (Theora)")\r
+ drp_videoEncoder.SelectedIndex = 2;\r
+ else\r
+ drp_videoEncoder.Text = oldval;\r
+\r
+ }\r
+ else if (path.EndsWith(".avi"))\r
+ {\r
+ oldval = drp_videoEncoder.Text;\r
+ drp_videoEncoder.Items.Clear();\r
+ drp_videoEncoder.Items.Add("MPEG-4 (FFmpeg)");\r
+ drp_videoEncoder.Items.Add("MPEG-4 (XviD)");\r
+ drp_videoEncoder.Items.Add("H.264 (x264)");\r
+ if (oldval == "VP3 (Theora)")\r
+ drp_videoEncoder.SelectedIndex = 2;\r
+ else\r
+ drp_videoEncoder.Text = oldval;\r
+ }\r
+ else if (path.EndsWith(".ogm"))\r
+ {\r
+ oldval = drp_videoEncoder.Text;\r
+ drp_videoEncoder.Items.Clear();\r
+ drp_videoEncoder.Items.Add("MPEG-4 (FFmpeg)");\r
+ drp_videoEncoder.Items.Add("MPEG-4 (XviD)");\r
+ drp_videoEncoder.Items.Add("VP3 (Theora)");\r
+ if (oldval == "H.264 (x264)")\r
+ drp_videoEncoder.SelectedIndex = 2;\r
+ else\r
+ drp_videoEncoder.Text = oldval;\r
+ }\r
+ else if (path.EndsWith(".mkv"))\r
+ {\r
+ oldval = drp_videoEncoder.Text;\r
+ drp_videoEncoder.Items.Clear();\r
+ drp_videoEncoder.Items.Add("MPEG-4 (FFmpeg)");\r
+ drp_videoEncoder.Items.Add("MPEG-4 (XviD)");\r
+ drp_videoEncoder.Items.Add("H.264 (x264)");\r
+ drp_videoEncoder.Items.Add("VP3 (Theora)");\r
+ drp_videoEncoder.Text = oldval;\r
+ }\r
+ }\r
+ private void setBitrateSelections384(ComboBox dropDown)\r
+ {\r
+ dropDown.Items.Clear();\r
+ dropDown.Items.Add("32");\r
+ dropDown.Items.Add("40");\r
+ dropDown.Items.Add("48");\r
+ dropDown.Items.Add("56");\r
+ dropDown.Items.Add("64");\r
+ dropDown.Items.Add("80");\r
+ dropDown.Items.Add("86");\r
+ dropDown.Items.Add("112");\r
+ dropDown.Items.Add("128");\r
+ dropDown.Items.Add("160");\r
+ dropDown.Items.Add("192");\r
+ dropDown.Items.Add("224");\r
+ dropDown.Items.Add("256");\r
+ dropDown.Items.Add("320");\r
+ dropDown.Items.Add("384");\r
+ }\r
+ private void setBitrateSelections320(ComboBox dropDown)\r
+ {\r
+ dropDown.Items.Clear();\r
+ dropDown.Items.Add("32");\r
+ dropDown.Items.Add("40");\r
+ dropDown.Items.Add("48");\r
+ dropDown.Items.Add("56");\r
+ dropDown.Items.Add("64");\r
+ dropDown.Items.Add("80");\r
+ dropDown.Items.Add("86");\r
+ dropDown.Items.Add("112");\r
+ dropDown.Items.Add("128");\r
+ dropDown.Items.Add("160");\r
+ dropDown.Items.Add("192");\r
+ dropDown.Items.Add("224");\r
+ dropDown.Items.Add("256");\r
+ dropDown.Items.Add("320");\r
+ }\r
+ private void setBitrateSelections160(ComboBox dropDown)\r
+ {\r
+ dropDown.Items.Clear();\r
+ dropDown.Items.Add("32");\r
+ dropDown.Items.Add("40");\r
+ dropDown.Items.Add("48");\r
+ dropDown.Items.Add("56");\r
+ dropDown.Items.Add("64");\r
+ dropDown.Items.Add("80");\r
+ dropDown.Items.Add("86");\r
+ dropDown.Items.Add("112");\r
+ dropDown.Items.Add("128");\r
+ dropDown.Items.Add("160");\r
+ }\r
\r
// Preset system functions\r
private void addPresetToList(ArrayList presetNameList)\r
treeView_presets.Nodes.Add(preset_treeview);\r
}\r
}\r
- private void grabCLIPresets()\r
- {\r
- // Gets the presets from the CLI and stores them in presets.dat\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
private void loadNormalPreset()\r
{\r
//Loads the preset called "normal"\r
int normal = 0;\r
foreach (TreeNode treenode in treeView_presets.Nodes)\r
{\r
- if (treenode.ToString().Equals("TreeNode: Normal"))\r
+ if (treenode.Text.ToString().Equals("Normal"))\r
normal = treenode.Index;\r
}\r
\r
x264PanelFunctions.X264_SetCurrentSettingsInPanel(this);\r
}\r
}\r
-\r
- // Queue system functions\r
- private void showQueue()\r
- {\r
- queueWindow.Show();\r
- }\r
#endregion\r
\r
#region Encoding and Queue\r
\r
// Declarations\r
- Functions.CLI process = new Functions.CLI();\r
private delegate void UpdateUIHandler();\r
- [DllImport("user32.dll")]\r
- public static extern void LockWorkStation();\r
- [DllImport("user32.dll")]\r
- public static extern int ExitWindowsEx(int uFlags, int dwReason);\r
-\r
+ \r
// Encoding Functions\r
private void procMonitor(object state)\r
{\r
MessageBox.Show("Handbrake is already encoding a video!", "Status", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
else\r
{\r
- hbProc = process.runCli(this, (string)state, false, false, false, false);\r
+ hbProc = cliObj.runCli(this, (string)state);\r
hbProc.WaitForExit();\r
\r
setEncodeLabelFinished();\r
hbProc = null;\r
\r
- // Do something whent he encode ends.\r
- switch (Properties.Settings.Default.CompletionOption)\r
+ // If the window is minimized, display the notification in a popup.\r
+ if (FormWindowState.Minimized == this.WindowState)\r
{\r
- case "Shutdown":\r
- System.Diagnostics.Process.Start("Shutdown", "-s -t 60");\r
- break;\r
- case "Log Off":\r
- ExitWindowsEx(0, 0);\r
- break;\r
- case "Suspend":\r
- Application.SetSuspendState(PowerState.Suspend, true, true);\r
- break;\r
- case "Hibernate":\r
- Application.SetSuspendState(PowerState.Hibernate, true, true);\r
- break;\r
- case "Lock System":\r
- LockWorkStation();\r
- break;\r
- case "Quit HandBrake":\r
- Application.Exit();\r
- break;\r
- default:\r
- break;\r
+ notifyIcon.BalloonTipText = lbl_encode.Text;\r
+ notifyIcon.ShowBalloonTip(500);\r
}\r
+\r
+ // After the encode is done, we may want to shutdown, suspend etc.\r
+ cliObj.afterEncodeAction();\r
}\r
}\r
private void setEncodeLabelFinished()\r
}\r
lbl_encode.Text = "Encoding Finished";\r
}\r
+ public Boolean isEncoding()\r
+ {\r
+ if (hbProc == null)\r
+ return false;\r
+ else\r
+ return true;\r
+ }\r
\r
#endregion\r
\r
+ #region Taskbar\r
+ private void frmMain_Resize(object sender, EventArgs e)\r
+ {\r
+ if (FormWindowState.Minimized == this.WindowState)\r
+ {\r
+ notifyIcon.Visible = true;\r
+ notifyIcon.BalloonTipText = lbl_encode.Text;\r
+ notifyIcon.ShowBalloonTip(500);\r
+ this.Hide();\r
+ }\r
+ else if (FormWindowState.Normal == this.WindowState)\r
+ {\r
+ notifyIcon.Visible = false;\r
+ }\r
+ }\r
+\r
+ private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)\r
+ {\r
+ this.Visible = true;\r
+ this.Activate();\r
+ this.WindowState = FormWindowState.Normal;\r
+ notifyIcon.Visible = false;\r
+ }\r
+\r
+ private void btn_minimize_Click(object sender, EventArgs e)\r
+ {\r
+ this.WindowState = FormWindowState.Minimized;\r
+ }\r
\r
+ private void btn_restore_Click(object sender, EventArgs e)\r
+ {\r
+ this.Visible = true;\r
+ this.Activate();\r
+ this.WindowState = FormWindowState.Normal;\r
+ notifyIcon.Visible = false;\r
+ }\r
\r
+ #endregion\r
\r
\r
// This is the END of the road ------------------------------------------------------------------------------\r