// --------------------------------------------------------------\r
// Some windows that require only 1 instance.\r
// --------------------------------------------------------------\r
- private frmDvdInfo dvdInfoWindow = new frmDvdInfo();\r
- private frmQueue queueWindow = new frmQueue();\r
+ private frmQueue queueWindow = new frmQueue(); \r
\r
// -------------------------------------------------------------- \r
// Stuff that needs doing on startup.\r
// - Load users default settings. (if required)\r
// - Do an update check (if required)\r
// --------------------------------------------------------------\r
+ private frmDvdInfo dvdInfoWindow = new frmDvdInfo();\r
+ \r
public frmMain()\r
{\r
+ \r
+ ThreadPool.QueueUserWorkItem(showSplash);\r
+ Thread.Sleep(3000);\r
+\r
InitializeComponent();\r
\r
+ // This is a quick Hack fix for the cross-thread problem with frmDvdIndo ************************\r
+ dvdInfoWindow.Show();\r
+ dvdInfoWindow.Hide();\r
+ // **********************************************************************************************\r
+\r
+\r
// Set the Version number lable to the corect version.\r
Version.Text = "Version " + Properties.Settings.Default.GuiVersion;\r
\r
\r
// Now load the users default if required.\r
loadUserDefaults();\r
+\r
+ // Display the quick start window if required.\r
+ quickStart();\r
+ }\r
+\r
+ public void showSplash(object sender)\r
+ {\r
+ Form splash = new frmSplashScreen();\r
+ splash.Show();\r
+ Thread.Sleep(3000);\r
+ splash.Close();\r
}\r
\r
public void loadUserDefaults()\r
{\r
check_2PassEncode.CheckState = CheckState.Checked;\r
}\r
- if (Properties.Settings.Default.DeInterlace == "Checked")\r
+ \r
+ drp_deInterlace_option.Text = Properties.Settings.Default.DeInterlace;\r
+ drp_deNoise.Text = Properties.Settings.Default.denoise;\r
+\r
+ if (Properties.Settings.Default.detelecine == "Checked")\r
{\r
- check_DeInterlace.CheckState = CheckState.Checked;\r
+ check_detelecine.CheckState = CheckState.Checked;\r
}\r
+\r
+ if (Properties.Settings.Default.detelecine == "Checked")\r
+ {\r
+ check_deblock.CheckState = CheckState.Checked;\r
+ }\r
+\r
+\r
if (Properties.Settings.Default.Grayscale == "Checked")\r
{\r
check_grayscale.CheckState = CheckState.Checked;\r
}\r
}\r
\r
+ public void quickStart()\r
+ {\r
+ if ((Properties.Settings.Default.QuickStartWindow == "Checked") || (Properties.Settings.Default.QuickStartWindow == ""))\r
+ {\r
+ frmQuickStart quickstart = new frmQuickStart();\r
+ quickstart.ShowDialog();\r
+ }\r
+ }\r
+\r
+\r
// -------------------------------------------------------------- \r
// The main Menu bar.\r
// -------------------------------------------------------------- \r
check_2PassEncode.CheckState = CheckState.Checked;\r
}\r
\r
- temporyLine = line.ReadLine();\r
- if (temporyLine == "Checked")\r
- {\r
- check_DeInterlace.CheckState = CheckState.Checked;\r
- }\r
+ drp_deInterlace_option.Text = line.ReadLine();\r
\r
temporyLine = line.ReadLine();\r
if (temporyLine == "Checked")\r
line.WriteLine(text_filesize.Text);\r
line.WriteLine(slider_videoQuality.Value.ToString());\r
line.WriteLine(check_2PassEncode.CheckState.ToString());\r
- line.WriteLine(check_DeInterlace.CheckState.ToString());\r
+ line.WriteLine(drp_deInterlace_option.Text);\r
line.WriteLine(check_grayscale.CheckState.ToString());\r
line.WriteLine(drp_videoFramerate.Text);\r
line.WriteLine(Check_ChapterMarkers.CheckState.ToString());\r
showQueue();\r
}\r
\r
+ \r
private void mnu_viewDVDdata_Click(object sender, EventArgs e)\r
{\r
- dvdInfoWindow.Show();\r
+ try\r
+ {\r
+ dvdInfoWindow.Show();\r
+ \r
+ }\r
+ catch (Exception)\r
+ {\r
+ }\r
+\r
+ // BUG *******************************************************\r
+ // Cross-thread operation not valid: Control 'rtf_dvdInfo' accessed from a thread other than the thread it was created on.\r
+ // This happens when the DVD is scanned and this item is then selected.\r
+ // If this item is selected so a blank copy of the window appears, then a DVD is scanned, there is no cross-thread issue.\r
+ // NOTE: Try/catch added to prevent final build crashing.\r
+ // NOTE2: Included a quick fix in frmMain(). Simply show and hide the window when starting the app.\r
+ // Note3: Suspect the problem lies with line 30.\r
+ // ***********************************************************\r
+\r
}\r
\r
private void mnu_options_Click(object sender, EventArgs e)\r
{\r
CheckPixelRatio.CheckState = CheckState.Unchecked;\r
text_width.Text = "640";\r
- text_height.Text = "480";\r
+ text_height.Text = "Auto";\r
drp_videoEncoder.Text = "H.264 (iPod)";\r
text_bitrate.Text = "1000";\r
text_filesize.Text = "";\r
drp_crop.Text = "No Crop";\r
}\r
\r
- private void mnu_preset_ipod178_Click(object sender, EventArgs e)\r
+\r
+\r
+ private void mnu_appleTv_Click(object sender, EventArgs e)\r
+ {\r
+ text_width.Text = "";\r
+ text_height.Text = "";\r
+ drp_videoEncoder.Text = "H.264";\r
+ text_bitrate.Text = "3000";\r
+ text_filesize.Text = "";\r
+ slider_videoQuality.Value = 0;\r
+ SliderValue.Text = "0%";\r
+ drp_audioBitrate.Text = "160";\r
+ CheckPixelRatio.CheckState = CheckState.Checked;\r
+ drp_audioSampleRate.Text = "48";\r
+ rtf_h264advanced.Text = "bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:no-dct-decimate=1:trellis=2";\r
+ drp_crop.Text = "No Crop";\r
+ \r
+ }\r
+\r
+ private void mnu_presetPS3_Click(object sender, EventArgs e)\r
{\r
CheckPixelRatio.CheckState = CheckState.Unchecked;\r
- text_width.Text = "640";\r
- text_height.Text = "352";\r
- drp_videoEncoder.Text = "H.264 (iPod)";\r
- text_bitrate.Text = "1000";\r
+ text_width.Text = "";\r
+ text_height.Text = "";\r
+ drp_videoEncoder.Text = "H.264";\r
+ text_bitrate.Text = "3000";\r
text_filesize.Text = "";\r
slider_videoQuality.Value = 0;\r
SliderValue.Text = "0%";\r
drp_audioBitrate.Text = "160";\r
- rtf_h264advanced.Text = "";\r
+ CheckPixelRatio.CheckState = CheckState.Checked;\r
+ drp_audioSampleRate.Text = "48";\r
+ rtf_h264advanced.Text = "level=41";\r
drp_crop.Text = "No Crop";\r
}\r
\r
- private void mnu_preset_ipod235_Click(object sender, EventArgs e)\r
+ //------------------------------NEW PRESETS START HERE---------------------------\r
+ private void mnu_normal_Click(object sender, EventArgs e)\r
{\r
CheckPixelRatio.CheckState = CheckState.Unchecked;\r
- text_width.Text = "640";\r
- text_height.Text = "272";\r
- drp_videoEncoder.Text = "H.264 (iPod)";\r
- text_bitrate.Text = "1000";\r
+ text_width.Text = "";\r
+ text_height.Text = "";\r
+ drp_videoEncoder.Text = "H.264";\r
+ text_bitrate.Text = "3000";\r
text_filesize.Text = "";\r
slider_videoQuality.Value = 0;\r
SliderValue.Text = "0%";\r
drp_audioBitrate.Text = "160";\r
- rtf_h264advanced.Text = "";\r
+ CheckPixelRatio.CheckState = CheckState.Checked;\r
+ drp_audioSampleRate.Text = "48";\r
+ rtf_h264advanced.Text = "level=41";\r
drp_crop.Text = "No Crop";\r
}\r
\r
- private void mnu_appleTv_Click(object sender, EventArgs e)\r
+ private void mnu_Classic_Click(object sender, EventArgs e)\r
{\r
+ CheckPixelRatio.CheckState = CheckState.Unchecked;\r
text_width.Text = "";\r
text_height.Text = "";\r
drp_videoEncoder.Text = "H.264";\r
drp_audioBitrate.Text = "160";\r
CheckPixelRatio.CheckState = CheckState.Checked;\r
drp_audioSampleRate.Text = "48";\r
- rtf_h264advanced.Text = "bframes=3:ref=1:subme=5:me=umh:no-fast-pskip=1:no-dct-decimate=1:trellis=2";\r
+ rtf_h264advanced.Text = "level=41";\r
drp_crop.Text = "No Crop";\r
- \r
}\r
\r
- private void mnu_presetPS3_Click(object sender, EventArgs e)\r
+ private void mnu_film_Click(object sender, EventArgs e)\r
+ {\r
+ CheckPixelRatio.CheckState = CheckState.Unchecked;\r
+ text_width.Text = "";\r
+ text_height.Text = "";\r
+ drp_videoEncoder.Text = "H.264";\r
+ text_bitrate.Text = "3000";\r
+ text_filesize.Text = "";\r
+ slider_videoQuality.Value = 0;\r
+ SliderValue.Text = "0%";\r
+ drp_audioBitrate.Text = "160";\r
+ CheckPixelRatio.CheckState = CheckState.Checked;\r
+ drp_audioSampleRate.Text = "48";\r
+ rtf_h264advanced.Text = "level=41";\r
+ drp_crop.Text = "No Crop";\r
+ }\r
+\r
+ private void mnu_television_Click(object sender, EventArgs e)\r
+ {\r
+ CheckPixelRatio.CheckState = CheckState.Unchecked;\r
+ text_width.Text = "";\r
+ text_height.Text = "";\r
+ drp_videoEncoder.Text = "H.264";\r
+ text_bitrate.Text = "3000";\r
+ text_filesize.Text = "";\r
+ slider_videoQuality.Value = 0;\r
+ SliderValue.Text = "0%";\r
+ drp_audioBitrate.Text = "160";\r
+ CheckPixelRatio.CheckState = CheckState.Checked;\r
+ drp_audioSampleRate.Text = "48";\r
+ rtf_h264advanced.Text = "level=41";\r
+ drp_crop.Text = "No Crop";\r
+ }\r
+\r
+ private void mnu_qt_Click(object sender, EventArgs e)\r
{\r
CheckPixelRatio.CheckState = CheckState.Unchecked;\r
text_width.Text = "";\r
drp_crop.Text = "No Crop";\r
}\r
\r
+ private void mnu_psp_Click(object sender, EventArgs e)\r
+ {\r
+ CheckPixelRatio.CheckState = CheckState.Unchecked;\r
+ text_width.Text = "";\r
+ text_height.Text = "";\r
+ drp_videoEncoder.Text = "H.264";\r
+ text_bitrate.Text = "3000";\r
+ text_filesize.Text = "";\r
+ slider_videoQuality.Value = 0;\r
+ SliderValue.Text = "0%";\r
+ drp_audioBitrate.Text = "160";\r
+ CheckPixelRatio.CheckState = CheckState.Checked;\r
+ drp_audioSampleRate.Text = "48";\r
+ rtf_h264advanced.Text = "level=41";\r
+ drp_crop.Text = "No Crop";\r
+ }\r
+\r
+\r
private void mnu_ProgramDefaultOptions_Click(object sender, EventArgs e)\r
{\r
//Source\r
Properties.Settings.Default.VideoFilesize = text_filesize.Text;\r
Properties.Settings.Default.VideoQuality = slider_videoQuality.Value;\r
Properties.Settings.Default.TwoPass = check_2PassEncode.CheckState.ToString();\r
- Properties.Settings.Default.DeInterlace = check_DeInterlace.CheckState.ToString();\r
+ Properties.Settings.Default.DeInterlace = drp_deInterlace_option.Text;\r
Properties.Settings.Default.Grayscale = check_grayscale.CheckState.ToString();\r
Properties.Settings.Default.Framerate = drp_videoFramerate.Text;\r
Properties.Settings.Default.PixelRatio = CheckPixelRatio.CheckState.ToString();\r
Properties.Settings.Default.turboFirstPass = check_turbo.CheckState.ToString();\r
Properties.Settings.Default.largeFile = check_largeFile.CheckState.ToString();\r
+ Properties.Settings.Default.detelecine = check_detelecine.CheckState.ToString();\r
+ Properties.Settings.Default.denoise = drp_deNoise.Text;\r
+ Properties.Settings.Default.deblock = check_deblock.CheckState.ToString();\r
//Audio Settings Tab\r
Properties.Settings.Default.AudioBitrate = drp_audioBitrate.Text;\r
Properties.Settings.Default.AudioSampleRate = drp_audioSampleRate.Text;\r
// -------------------------------------------------------------- \r
// Buttons on the main Window\r
// --------------------------------------------------------------\r
+\r
+ #region Buttons\r
private void btn_Browse_Click(object sender, EventArgs e)\r
{\r
- \r
- String filename ="";\r
- text_source.Text = "";\r
-\r
- if (RadioDVD.Checked)\r
- {\r
- DVD_Open.ShowDialog();\r
- filename = DVD_Open.SelectedPath;\r
- if (filename != "")\r
- {\r
- text_source.Text = filename;\r
- Form frmReadDVD = new frmReadDVD(filename, this, dvdInfoWindow);\r
- frmReadDVD.ShowDialog();\r
- }\r
- }\r
- else\r
- {\r
- ISO_Open.ShowDialog();\r
- filename = ISO_Open.FileName;\r
- if (filename != "")\r
- {\r
- text_source.Text = filename;\r
- Form frmReadDVD = new frmReadDVD(filename, this, dvdInfoWindow);\r
- frmReadDVD.ShowDialog();\r
- }\r
- } \r
-\r
- // Quick check to make sure some titles were found.\r
- if (filename != "")\r
- {\r
- if (drp_dvdtitle.Items.Count == 0)\r
- {\r
- MessageBox.Show("No Title(s) found. Please make sure you have selected a valid, non-copy protected source.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
- }\r
- }\r
- else\r
- {\r
- text_source.Text = "Click 'Browse' to continue";\r
- }\r
-\r
+ String filename =""; \r
+ text_source.Text = ""; \r
+ \r
+ if (RadioDVD.Checked) \r
+ { \r
+ DVD_Open.ShowDialog(); \r
+ filename = DVD_Open.SelectedPath; \r
+ if (filename != "") \r
+ { \r
+ Form frmRD = new frmReadDVD(filename, this, dvdInfoWindow); \r
+ text_source.Text = filename; \r
+ frmRD.ShowDialog(); \r
+ } \r
+ } \r
+ else \r
+ { \r
+ ISO_Open.ShowDialog(); \r
+ filename = ISO_Open.FileName; \r
+ if (filename != "") \r
+ { \r
+ Form frmRD = new frmReadDVD(filename, this, dvdInfoWindow); \r
+ text_source.Text = filename; \r
+ frmRD.ShowDialog(); \r
+ } \r
+ } \r
+ \r
+ // Check if there was titles in the dvd title dropdown \r
+ if (filename == "") \r
+ { \r
+ text_source.Text = "Click 'Browse' to continue"; \r
+ } \r
+ \r
+ if (drp_dvdtitle.Items.Count == 0) \r
+ { \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_destBrowse_Click(object sender, EventArgs e)\r
\r
private void btn_queue_Click(object sender, EventArgs e)\r
{\r
- String query = GenerateTheQuery();\r
- queueWindow.list_queue.Items.Add(query);\r
- queueWindow.Show();\r
+ if (text_destination.Text != "" && text_source.Text != "")\r
+ {\r
+ string query;\r
+ if (QueryEditorText.Text == "")\r
+ {\r
+ query = GenerateTheQuery();\r
+ }\r
+ else\r
+ {\r
+ query = QueryEditorText.Text;\r
+ }\r
+ queueWindow.list_queue.Items.Add(query);\r
+ queueWindow.Show();\r
+ } \r
+ else \r
+ {\r
+ MessageBox.Show("No Source OR destination selected.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+ }\r
}\r
\r
private void showQueue()\r
queueWindow.Show();\r
}\r
\r
+ #endregion\r
+\r
+ //---------------------------------------------------\r
+ // Encode / Cancel Buttons\r
+ // Encode Progress Text Handler\r
+ //---------------------------------------------------\r
+\r
+ #region Encode/CLI\r
+\r
+ Functions.CLI process = new Functions.CLI();\r
+\r
private void btn_encode_Click(object sender, EventArgs e)\r
{\r
+ btn_eCancel.Enabled = true;\r
String query = "";\r
- tempEncodeLbl.Visible = true;\r
+ lbl_encode.Visible = false;\r
\r
if (QueryEditorText.Text == "")\r
{\r
}\r
\r
ThreadPool.QueueUserWorkItem(procMonitor, query);\r
+ lbl_encode.Text = "Encoding Started";\r
+ }\r
+\r
+ private void btn_eCancel_Click(object sender, EventArgs e)\r
+ {\r
+ process.killCLI();\r
+ process.setNull();\r
+ lbl_encode.Text = "Encoding Canceled";\r
+ }\r
+ \r
+ private void procMonitor(object state)\r
+ {\r
+ // Make sure we are not already encoding and if we are then display an error.\r
+ if (hbProc != null)\r
+ {\r
+ MessageBox.Show("Handbrake is already encoding a video!", "Status", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+ }\r
+ else\r
+ {\r
+ hbProc = process.runCli(this, (string)state, false, false, false, false);\r
+ MessageBox.Show("The encode process has now started.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
+ hbProc.WaitForExit();\r
+\r
+ try\r
+ {\r
+\r
+ //*****************************************************************************************\r
+ // BUG!\r
+ // When the below code is used and standard error is set to true, hbcli is outputing a\r
+ // video stream which has mild corruption issues every few seconds.\r
+ // Maybe an issue with the Parser cauing the CLI to hickup/pause?\r
+ //*****************************************************************************************\r
+\r
+ \r
+ /*Parsing.Parser encode = new Parsing.Parser(hbProc.StandardError.BaseStream);\r
+ encode.OnEncodeProgress += encode_OnEncodeProgress;\r
+ while (!encode.EndOfStream)\r
+ {\r
+ encode.ReadLine();\r
+ }\r
+\r
+ hbProc.WaitForExit();\r
+ process.closeCLI();\r
+ */\r
+ }\r
+ catch (Exception)\r
+ {\r
+ // Do nothing\r
+ }\r
+\r
+ MessageBox.Show("The encode process has now ended.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
+ hbProc = null;\r
+ }\r
}\r
\r
private void encode_OnEncodeProgress(object Sender, int CurrentTask, int TaskCount, float PercentComplete, float CurrentFps, float AverageFps, TimeSpan TimeRemaining)\r
new object[] { Sender, CurrentTask, TaskCount, PercentComplete, CurrentFps, AverageFps, TimeRemaining });\r
return;\r
}\r
- tempEncodeLbl.Text = string.Format("Encode Progress: {0}%", PercentComplete);\r
+ lbl_encode.Text = string.Format("Encode Progress: {0}%, FPS: {1}, Avg FPS: {2}, Time Remaining: {3} ", PercentComplete, CurrentFps, AverageFps, TimeRemaining);\r
}\r
\r
- private void procMonitor(object state)\r
- {\r
- Functions.CLI process = new Functions.CLI();\r
- hbProc = process.runCli(this, (string)state, true, true, false, true);\r
-\r
- Parsing.Parser encode = new Parsing.Parser(hbProc.StandardError.BaseStream);\r
- //TODO: prevent this event from being subscribed more than once\r
- encode.OnEncodeProgress += encode_OnEncodeProgress;\r
- while (!encode.EndOfStream)\r
- {\r
- encode.ReadLine();\r
- }\r
+ #endregion\r
\r
- MessageBox.Show("The ncode process has now started.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
- hbProc.WaitForExit();\r
- hbProc.Close();\r
- hbProc.Dispose();\r
- hbProc = null;\r
- MessageBox.Show("The encode process has now ended.", "Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);\r
- }\r
- \r
//---------------------------------------------------\r
// Items that require actions on frmMain\r
//---------------------------------------------------\r
\r
+ #region frmMain Actions\r
+\r
private void drop_chapterStart_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
lbl_chptWarn.Visible = false;\r
slider_videoQuality.Value = 0;\r
SliderValue.Text = "0%";\r
CheckCRF.CheckState = CheckState.Unchecked;\r
+ CheckCRF.Enabled = false;\r
}\r
\r
private void text_filesize_TextChanged(object sender, EventArgs e)\r
slider_videoQuality.Value = 0;\r
SliderValue.Text = "0%";\r
CheckCRF.CheckState = CheckState.Unchecked;\r
+ CheckCRF.Enabled = false;\r
}\r
\r
private void slider_videoQuality_Scroll(object sender, EventArgs e)\r
SliderValue.Text = slider_videoQuality.Value.ToString() + "%";\r
text_bitrate.Text = "";\r
text_filesize.Text = "";\r
+ CheckCRF.Enabled = true;\r
}\r
\r
private void label_h264_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)\r
if (CheckPixelRatio.Checked)\r
{\r
text_width.Text = "";\r
+ text_width.BackColor = Color.White;\r
}\r
else\r
{\r
{\r
try\r
{\r
- if (CheckPixelRatio.Checked)\r
+ if (text_height.Text != "Auto")\r
{\r
- text_height.Text = "";\r
- }\r
- else\r
- {\r
- if ((int.Parse(text_height.Text) % 16) != 0)\r
+ if (CheckPixelRatio.Checked)\r
{\r
- text_height.BackColor = Color.LightCoral;\r
+ text_height.Text = "";\r
+ text_width.BackColor = Color.White;\r
}\r
else\r
{\r
- text_height.BackColor = Color.LightGreen;\r
+ if ((int.Parse(text_height.Text) % 16) != 0)\r
+ {\r
+ text_height.BackColor = Color.LightCoral;\r
+ }\r
+ else\r
+ {\r
+ text_height.BackColor = Color.LightGreen;\r
+ }\r
}\r
}\r
} catch(Exception){\r
}\r
}\r
\r
- private void check_turbo_CheckedChanged(object sender, EventArgs e)\r
- {\r
- if (!drp_videoEncoder.Text.Contains("H.264"))\r
- {\r
- MessageBox.Show("This option is only compatible with the H.264 encoder's", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
- check_turbo.CheckState = CheckState.Unchecked;\r
- }\r
- }\r
-\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
{\r
check_turbo.CheckState = CheckState.Unchecked;\r
CheckCRF.CheckState = CheckState.Unchecked;\r
+ CheckCRF.Enabled = false;\r
+ check_turbo.Enabled = false;\r
+ h264Tab.Enabled = false;\r
}\r
- }\r
-\r
- private void CheckCRF_CheckedChanged(object sender, EventArgs e)\r
- {\r
- if (slider_videoQuality.Value == 0)\r
+ else\r
{\r
- MessageBox.Show("This option is can only be used with the 'Video Quality' slider.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
- CheckCRF.CheckState = CheckState.Unchecked;\r
+ CheckCRF.Enabled = true;\r
+ check_turbo.Enabled = true;\r
+ h264Tab.Enabled = true;\r
}\r
+\r
}\r
\r
public void setStreamReader(Parsing.DVD dvd)\r
if (drp_dvdtitle.Text != "Automatic")\r
{\r
Parsing.Title selectedTitle = drp_dvdtitle.SelectedItem as Parsing.Title;\r
- lbl_Aspect.Text = selectedTitle.AspectRatio.ToString();\r
- lbl_RecomendedCrop.Text = string.Format("{0}/{1}/{2}/{3}", selectedTitle.AutoCropDimensions[0], selectedTitle.AutoCropDimensions[1], selectedTitle.AutoCropDimensions[2], selectedTitle.AutoCropDimensions[3]);\r
\r
- text_width.Text = selectedTitle.Resolution.Width.ToString();\r
- text_height.Text = selectedTitle.Resolution.Height.ToString();\r
+ // Set the Aspect Ratio\r
+ lbl_Aspect.Text = selectedTitle.AspectRatio.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
+ \r
+ // Populate the Start chapter Dropdown\r
drop_chapterStart.Items.Clear();\r
drop_chapterStart.Items.AddRange(selectedTitle.Chapters.ToArray());\r
if (drop_chapterStart.Items.Count > 0)\r
drop_chapterStart.Text = drop_chapterStart.Items[0].ToString();\r
}\r
\r
+ // Populate the Final Chapter Dropdown\r
drop_chapterFinish.Items.Clear();\r
drop_chapterFinish.Items.AddRange(selectedTitle.Chapters.ToArray());\r
if (drop_chapterFinish.Items.Count > 0)\r
drop_chapterFinish.Text = drop_chapterFinish.Items[drop_chapterFinish.Items.Count - 1].ToString();\r
}\r
\r
+ // Populate the Audio Channels Dropdown\r
drp_audioChannels.Items.Clear();\r
drp_audioChannels.Items.Add("Automatic");\r
drp_audioChannels.Items.AddRange(selectedTitle.AudioTracks.ToArray());\r
drp_audioChannels.Text = drp_audioChannels.Items[0].ToString();\r
}\r
\r
+ // Populate the Subtitles dropdown\r
drp_subtitle.Items.Clear();\r
drp_subtitle.Items.Add("None");\r
drp_subtitle.Items.AddRange(selectedTitle.Subtitles.ToArray());\r
}\r
}\r
\r
- //---------------------------------------------------\r
- // The query Generation function.\r
- //---------------------------------------------------\r
+ #endregion\r
+\r
+ /* \r
+ * ---------------------------------------------------\r
+ * \r
+ * The query Generation function.\r
+ * \r
+ * ---------------------------------------------------\r
+ */\r
+\r
+ #region Program Functions\r
+\r
public string GenerateTheQuery()\r
{\r
string source = text_source.Text;\r
\r
if (width != "")\r
width = " -w "+ width;\r
- \r
\r
- if (height != "")\r
- height = " -l "+ height;\r
+\r
+ if (height == "Auto")\r
+ {\r
+ height = "";\r
+ }\r
+ else if (height != "")\r
+ {\r
+ height = " -l " + height;\r
+ }\r
\r
\r
string queryDestination = destination+ videoEncoder+ audioEncoder+ width+ height;\r
string cropRight = text_right.Text;\r
string subtitles = drp_subtitle.Text;\r
string cropOut = "";\r
+ string deInterlace_Option = drp_deInterlace_option.Text;\r
+ string deinterlace = "";\r
+ string grayscale = "";\r
+ string pixelRatio = "";\r
+ string ChapterMarkers = "";\r
// Returns Crop Query\r
\r
if (cropSetting == "Auto Crop")\r
subtitles = " -s "+ tempSub[0];\r
}\r
\r
- string queryPictureSettings = cropOut+ subtitles;\r
+ switch (deInterlace_Option)\r
+ {\r
+ case "None":\r
+ deinterlace = "";\r
+ break;\r
+ case "Origional (Fast)":\r
+ deinterlace = " --deinterlace";\r
+ break;\r
+ case "yadif (Slow)":\r
+ deinterlace = " --deinterlace=" + '"' + "1" + '"';\r
+ break;\r
+ case "yadif + mcdeint (Slower)":\r
+ deinterlace = " --deinterlace=" + '"' + "1:-1:1" + '"';\r
+ break;\r
+ case "yadif + mcdeint (Slowest)":\r
+ deinterlace = " --deinterlace=" + '"' + "3:-1:2" + '"';\r
+ break;\r
+ default:\r
+ deinterlace = " --deinterlace=";\r
+ break;\r
+ }\r
+\r
+ if (check_grayscale.Checked)\r
+ grayscale = " -g ";\r
+\r
+ if (CheckPixelRatio.Checked)\r
+ pixelRatio = " -p ";\r
+\r
+ if (Check_ChapterMarkers.Checked)\r
+ ChapterMarkers = " -m ";\r
+\r
+ string queryPictureSettings = cropOut + subtitles + deinterlace + grayscale + pixelRatio + ChapterMarkers;\r
// ----------------------------------------------------------------------\r
\r
// Video Settings Tab\r
int videoQuality = slider_videoQuality.Value;\r
string vidQSetting = "";\r
string twoPassEncoding = "";\r
- string deinterlace = "";\r
- string grayscale = "";\r
string videoFramerate = drp_videoFramerate.Text;\r
- string pixelRatio = "";\r
- string ChapterMarkers = "";\r
string turboH264 = "";\r
string largeFile = "";\r
+ string deblock = "";\r
+ string detelecine = "";\r
+ string denoise = "";\r
\r
if (videoBitrate != "")\r
videoBitrate = " -b "+ videoBitrate;\r
if (check_2PassEncode.Checked)\r
twoPassEncoding = " -2 ";\r
\r
- if (check_DeInterlace.Checked)\r
- deinterlace = " -d ";\r
-\r
- if (check_grayscale.Checked)\r
- grayscale = " -g ";\r
-\r
if (videoFramerate == "Automatic")\r
videoFramerate = "";\r
else\r
videoFramerate = " -r "+ videoFramerate;\r
\r
- if (CheckPixelRatio.Checked)\r
- pixelRatio = " -p ";\r
-\r
- if (Check_ChapterMarkers.Checked)\r
- ChapterMarkers = " -m ";\r
-\r
if (check_turbo.Checked)\r
turboH264 = " -T ";\r
\r
if (check_largeFile.Checked)\r
largeFile = " -4 ";\r
\r
- string queryVideoSettings = videoBitrate + videoFilesize + vidQSetting + twoPassEncoding + deinterlace + grayscale + videoFramerate + pixelRatio + ChapterMarkers + turboH264 + largeFile;\r
+ if (check_deblock.Checked)\r
+ deblock = " --deblock";\r
+\r
+ if (check_detelecine.Checked)\r
+ detelecine = " --detelecine";\r
+\r
+ switch (drp_deNoise.Text)\r
+ {\r
+ case "None":\r
+ denoise = "";\r
+ break;\r
+ case "Weak":\r
+ denoise = " --denoise=3:2:3:3";\r
+ break;\r
+ case "Strong":\r
+ denoise = " --denoise=7:7:5:5";\r
+ break;\r
+ default:\r
+ denoise = "";\r
+ break;\r
+ }\r
+\r
+ string queryVideoSettings = videoBitrate + videoFilesize + vidQSetting + twoPassEncoding + videoFramerate + turboH264 + largeFile + deblock + detelecine + denoise;\r
// ----------------------------------------------------------------------\r
\r
// Audio Settings Tab\r
return querySource+ queryDestination+ queryPictureSettings+ queryVideoSettings+ h264Settings+ queryAudioSettings+ queryAdvancedSettings+ verbose;\r
}\r
\r
+ #endregion\r
+\r
+ \r
+\r
+\r
// This is the END of the road ------------------------------------------------------------------------------\r
}\r
}
\ No newline at end of file