/* Common.cs $\r
\r
This file is part of the HandBrake source code.\r
- Homepage: <http://handbrake.m0k.org/>.\r
+ Homepage: <http://handbrake.fr>.\r
It may be used under the terms of the GNU General Public License. */\r
\r
using System;\r
/*\r
* Checks for updates and returns "true" boolean if one exists.\r
*/\r
- public Boolean updateCheck()\r
+ public Boolean updateCheck(Boolean debug)\r
{\r
try\r
{\r
}\r
catch (Exception exc)\r
{\r
- MessageBox.Show(exc.ToString());\r
+ if (debug == true)\r
+ MessageBox.Show("Unable to check for updates, Please try again later. \n" + exc.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
return false;\r
}\r
}\r
- \r
+\r
/*\r
* Function which generates the filename and path automatically based on the Source Name, DVD title and DVD Chapters\r
*/\r
{\r
if (Properties.Settings.Default.autoNamePath.Trim() != "Click 'Browse' to set the default location")\r
filePath = Properties.Settings.Default.autoNamePath + "\\";\r
- } \r
+ }\r
mainWindow.text_destination.Text = filePath + source + "_T" + title + "_C" + cs + dash + cf + ".mp4";\r
}\r
else\r
if (presetQuery.DVDChapterFinish != 0)\r
mainWindow.drop_chapterFinish.Text = presetQuery.DVDChapterFinish.ToString();\r
\r
- if (presetQuery.Format != "")\r
+ if (presetQuery.Format != null)\r
{\r
string destination = mainWindow.text_destination.Text;\r
destination = destination.Replace(".mp4", "." + presetQuery.Format);\r
mainWindow.text_destination.Text = presetQuery.Destination;\r
\r
mainWindow.drp_videoEncoder.Text = presetQuery.VideoEncoder;\r
- mainWindow.drp_audioCodec.Text = presetQuery.AudioEncoder;\r
-\r
- if (presetQuery.AudioEncoder == "AAC + AC3")\r
- {\r
- mainWindow.text_destination.Text = mainWindow.text_destination.Text.Replace(".mp4", ".m4v");\r
- }\r
\r
if (presetQuery.IpodAtom == true)\r
mainWindow.check_iPodAtom.CheckState = CheckState.Checked;\r
else\r
mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;\r
\r
- #endregion \r
+ #endregion\r
\r
// Picture Settings Tab\r
#region Picture\r
- mainWindow.drp_crop.Text = "Manual";\r
+ mainWindow.drp_crop.SelectedIndex = 1;\r
mainWindow.text_top.Text = presetQuery.CropTop;\r
mainWindow.text_bottom.Text = presetQuery.CropBottom;\r
mainWindow.text_left.Text = presetQuery.CropLeft;\r
\r
\r
if (presetQuery.Anamorphic == true)\r
- mainWindow.CheckPixelRatio.CheckState = CheckState.Checked;\r
+ mainWindow.drp_anamorphic.SelectedIndex = 1;\r
else\r
- mainWindow.CheckPixelRatio.CheckState = CheckState.Unchecked;\r
+ mainWindow.drp_anamorphic.SelectedIndex = 0;\r
\r
if (presetQuery.LooseAnamorphic == true)\r
- mainWindow.check_lAnamorphic.CheckState = CheckState.Checked;\r
+ mainWindow.drp_anamorphic.SelectedIndex = 2;\r
else\r
- mainWindow.check_lAnamorphic.CheckState = CheckState.Unchecked;\r
+ {\r
+ if (presetQuery.Anamorphic != true)\r
+ mainWindow.drp_anamorphic.SelectedIndex = 0;\r
+ }\r
+\r
\r
if (presetQuery.Width != 0)\r
mainWindow.text_width.Text = presetQuery.Width.ToString();\r
else\r
{\r
mainWindow.text_width.Text = "";\r
- mainWindow.text_width.BackColor = Color.White;\r
}\r
\r
if (presetQuery.Height != 0)\r
else\r
{\r
mainWindow.text_height.Text = "";\r
- mainWindow.text_height.BackColor = Color.White;\r
}\r
\r
if (presetQuery.VFR == true)\r
if (presetQuery.LargeMP4 == true)\r
mainWindow.check_largeFile.CheckState = CheckState.Checked;\r
else\r
+ {\r
mainWindow.check_largeFile.CheckState = CheckState.Unchecked;\r
+ mainWindow.check_largeFile.BackColor = Color.Transparent;\r
+ }\r
+\r
\r
- \r
\r
#endregion\r
\r
\r
// Audio Settings Tab\r
#region Audio\r
- mainWindow.drp_audioBitrate.Text = presetQuery.AudioBitrate;\r
- mainWindow.drp_audioSampleRate.Text = presetQuery.AudioSampleBitrate;\r
- mainWindow.drp_track1Audio.Text = presetQuery.AudioTrack1;\r
- mainWindow.drp_track2Audio.Text = presetQuery.AudioTrack2;\r
- mainWindow.drp_audioMixDown.Text = presetQuery.AudioTrackMix;\r
+ \r
+ if (presetQuery.AudioTrack1 == "")\r
+ mainWindow.drp_track1Audio.Text = "Automatic";\r
+ else\r
+ mainWindow.drp_track1Audio.Text = presetQuery.AudioTrack1;\r
+\r
+ if (presetQuery.AudioTrack2 == "None")\r
+ {\r
+ if (presetQuery.AudioEncoder2 != null)\r
+ {\r
+ mainWindow.drp_track2Audio.SelectedIndex = 1;\r
+ mainWindow.drp_audsr_2.Enabled = true;\r
+ mainWindow.drp_audmix_2.Enabled = true;\r
+ mainWindow.drp_audenc_2.Enabled = true;\r
+ mainWindow.drp_audbit_2.Enabled = true;\r
+ }\r
+ else\r
+ {\r
+ mainWindow.drp_track2Audio.SelectedIndex = 0;\r
+ mainWindow.drp_audsr_2.Enabled = false;\r
+ mainWindow.drp_audmix_2.Enabled = false;\r
+ mainWindow.drp_audenc_2.Enabled = false;\r
+ mainWindow.drp_audbit_2.Enabled = false;\r
+ }\r
+\r
+ }\r
+ else\r
+ mainWindow.drp_track2Audio.Text = presetQuery.AudioTrack2;\r
+\r
+ if (presetQuery.AudioEncoder1 != null)\r
+ mainWindow.drp_audenc_1.Text = presetQuery.AudioEncoder1;\r
+ mainWindow.drp_audenc_2.Text = presetQuery.AudioEncoder2;\r
+\r
+ if (presetQuery.AudioBitrate1 != null)\r
+ mainWindow.drp_audbit_1.Text = presetQuery.AudioBitrate1;\r
+ mainWindow.drp_audbit_2.Text = presetQuery.AudioBitrate2;\r
+\r
+ if (presetQuery.AudioSamplerate1 != null)\r
+ mainWindow.drp_audsr_1.Text = presetQuery.AudioSamplerate1;\r
+ mainWindow.drp_audsr_2.Text = presetQuery.AudioSamplerate2;\r
+\r
+ mainWindow.drp_audmix_1.Text = presetQuery.AudioTrackMix1;\r
+ mainWindow.drp_audmix_2.Text = presetQuery.AudioTrackMix2;\r
+\r
+ \r
+ \r
mainWindow.drp_subtitle.Text = presetQuery.Subtitles;\r
\r
if (presetQuery.ForcedSubtitles == true)\r
\r
// H264 Tab & Preset Name\r
#region other\r
- mainWindow.rtf_h264advanced.Text = presetQuery.H264Query;\r
+ mainWindow.rtf_x264Query.Text = presetQuery.H264Query;\r
\r
// Set the preset name\r
mainWindow.groupBox_output.Text = "Output Settings (Preset: " + name + ")";\r
int totalChapters = mainWindow.drop_chapterFinish.Items.Count - 1;\r
string dvdChapter = "";\r
\r
- if ((source != "") || (source != "Click 'Browse' to continue"))\r
+ if ((source != "") && (source.Trim() != "Click 'Browse' to continue"))\r
source = " -i " + '"' + source + '"';\r
+ else\r
+ source = "";\r
\r
if (dvdTitle == "Automatic")\r
dvdTitle = "";\r
\r
string destination = mainWindow.text_destination.Text;\r
string videoEncoder = mainWindow.drp_videoEncoder.Text;\r
- string audioEncoder = mainWindow.drp_audioCodec.Text;\r
string width = mainWindow.text_width.Text;\r
string height = mainWindow.text_height.Text;\r
\r
break;\r
}\r
\r
- switch (audioEncoder)\r
- {\r
- case "AAC":\r
- audioEncoder = " -E faac";\r
- break;\r
- case "MP3":\r
- audioEncoder = " -E lame";\r
- break;\r
- case "Vorbis":\r
- audioEncoder = " -E vorbis";\r
- break;\r
- case "AC3":\r
- audioEncoder = " -E ac3";\r
- break;\r
- case "AAC + AC3":\r
- audioEncoder = " -E aac+ac3";\r
- break;\r
- default:\r
- audioEncoder = " -E faac";\r
- break;\r
- }\r
-\r
if (width != "")\r
width = " -w " + width;\r
\r
}\r
\r
\r
- string queryDestination = destination + videoEncoder + audioEncoder + width + height;\r
+ string queryDestination = destination + videoEncoder + width + height;\r
#endregion\r
\r
// Picture Settings Tab\r
if (mainWindow.check_grayscale.Checked)\r
grayscale = " -g ";\r
\r
- if (mainWindow.CheckPixelRatio.Checked)\r
+ if (mainWindow.drp_anamorphic.SelectedIndex == 1)\r
pixelRatio = " -p ";\r
+ else if (mainWindow.drp_anamorphic.SelectedIndex == 2)\r
+ pixelRatio = " -P ";\r
+ else\r
+ pixelRatio = " ";\r
+\r
\r
if (mainWindow.check_deblock.Checked)\r
deblock = " --deblock";\r
if (mainWindow.check_vfr.Checked)\r
vfr = " -V ";\r
\r
- if (mainWindow.check_lAnamorphic.Checked)\r
- lanamorphic = " -P ";\r
+\r
\r
string queryPictureSettings = cropOut + deinterlace + deblock + detelecine + vfr + grayscale + pixelRatio + lanamorphic;\r
#endregion\r
if (mainWindow.check_2PassEncode.Checked)\r
twoPassEncoding = " -2 ";\r
\r
- if (videoFramerate == "Automatic")\r
+ if (videoFramerate == "Same as source")\r
vid_frame_rate = "";\r
else\r
{\r
// Audio Settings Tab\r
#region Audio Settings Tab\r
\r
- string audioBitrate = mainWindow.drp_audioBitrate.Text;\r
- string audioSampleRate = mainWindow.drp_audioSampleRate.Text;\r
- string track1 = mainWindow.drp_track1Audio.Text;\r
- string track2 = mainWindow.drp_track2Audio.Text;\r
+ // Used Varibles\r
+ string audioBitrate = "";\r
string audioChannels = "";\r
- string Mixdown = mainWindow.drp_audioMixDown.Text;\r
string SixChannelAudio = "";\r
- string subtitles = mainWindow.drp_subtitle.Text;\r
string subScan = "";\r
string forced = "";\r
string drc = "";\r
+ string audioSampleRate = "";\r
+ string audioEncoder = "";\r
\r
- if (audioBitrate != "")\r
- audioBitrate = " -B " + audioBitrate;\r
+ // Track 1\r
+ string track1 = mainWindow.drp_track1Audio.Text;\r
+ string vencoder1 = mainWindow.drp_audenc_1.Text;\r
+ string audioBitrate1 = mainWindow.drp_audbit_1.Text;\r
+ string audioSampleRate1 = mainWindow.drp_audsr_1.Text;\r
+ string Mixdown1 = mainWindow.drp_audmix_1.Text;\r
\r
- if (audioSampleRate != "")\r
- audioSampleRate = " -R " + audioSampleRate;\r
+ // Track 2\r
+ string track2 = mainWindow.drp_track2Audio.Text;\r
+ string vencoder2 = mainWindow.drp_audenc_2.Text;\r
+ string audioBitrate2 = mainWindow.drp_audbit_2.Text;\r
+ string audioSampleRate2 = mainWindow.drp_audsr_2.Text;\r
+ string Mixdown2 = mainWindow.drp_audmix_2.Text;\r
\r
- // Audio Track 1\r
+ // Audio Track Selections\r
if (track1 == "Automatic")\r
audioChannels = "";\r
else if (track1 == "")\r
audioChannels = " -a " + tempSub[0];\r
}\r
\r
- // Audio Track 2\r
if (audioChannels != "")\r
{\r
if ((track2 != "") && (track2 != "None"))\r
}\r
}\r
\r
+ // Audio Mixdown Selections\r
+ switch (Mixdown1)\r
+ {\r
+ case "Automatic":\r
+ Mixdown1 = "";\r
+ break;\r
+ case "Mono":\r
+ Mixdown1 = "mono";\r
+ break;\r
+ case "Stereo":\r
+ Mixdown1 = "stereo";\r
+ break;\r
+ case "Dolby Surround":\r
+ Mixdown1 = "dpl1";\r
+ break;\r
+ case "Dolby Pro Logic II":\r
+ Mixdown1 = "dpl2";\r
+ break;\r
+ case "6 Channel Discrete":\r
+ Mixdown1 = "6ch";\r
+ break;\r
+ default:\r
+ Mixdown1 = "";\r
+ break;\r
+ }\r
\r
+ if (Mixdown1 != "")\r
+ SixChannelAudio = " -6 " + Mixdown1;\r
+ else\r
+ {\r
+ if (mainWindow.drp_track2Audio.Text == "None")\r
+ SixChannelAudio = "";\r
+ else\r
+ {\r
+ if (mainWindow.drp_audmix_2.Text == "Automatic")\r
+ SixChannelAudio = "";\r
+ else\r
+ SixChannelAudio = " -6 dpl2";\r
+ }\r
+ }\r
\r
- switch (Mixdown)\r
+ switch (Mixdown2)\r
{\r
case "Automatic":\r
- Mixdown = "";\r
+ Mixdown2 = "";\r
break;\r
case "Mono":\r
- Mixdown = "mono";\r
+ Mixdown2 = "mono";\r
break;\r
case "Stereo":\r
- Mixdown = "stereo";\r
+ Mixdown2 = "stereo";\r
break;\r
case "Dolby Surround":\r
- Mixdown = "dpl1";\r
+ Mixdown2 = "dpl1";\r
break;\r
case "Dolby Pro Logic II":\r
- Mixdown = "dpl2";\r
+ Mixdown2 = "dpl2";\r
break;\r
case "6 Channel Discrete":\r
- Mixdown = "6ch";\r
+ Mixdown2 = "6ch";\r
break;\r
default:\r
- Mixdown = "";\r
+ Mixdown2 = "";\r
break;\r
}\r
\r
- if (Mixdown != "")\r
- SixChannelAudio = " -6 " + Mixdown;\r
- else\r
- SixChannelAudio = "";\r
+ if (Mixdown2 != "")\r
+ {\r
+ if (SixChannelAudio != "")\r
+ SixChannelAudio = SixChannelAudio + "," + Mixdown2;\r
+ else\r
+ SixChannelAudio = " -6 " + Mixdown2;\r
+ }\r
+\r
+ // Audio Encoder Selections\r
+ switch (mainWindow.drp_audenc_1.Text)\r
+ {\r
+ case "AAC":\r
+ audioEncoder = " -E faac";\r
+ break;\r
+ case "MP3":\r
+ audioEncoder = " -E lame";\r
+ break;\r
+ case "Vorbis":\r
+ audioEncoder = " -E vorbis";\r
+ break;\r
+ case "AC3":\r
+ audioEncoder = " -E ac3";\r
+ break;\r
+ case "AAC + AC3":\r
+ audioEncoder = " -E aac+ac3";\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
\r
+ switch (mainWindow.drp_audenc_2.Text)\r
+ {\r
+ case "AAC":\r
+ if (audioEncoder == "")\r
+ audioEncoder = " -E faac";\r
+ else\r
+ audioEncoder = audioEncoder + ",faac";\r
+ break;\r
+ case "MP3":\r
+ if (audioEncoder == "")\r
+ audioEncoder = " -E lame";\r
+ else\r
+ audioEncoder = audioEncoder + ",lame";\r
+ break;\r
+ case "Vorbis":\r
+ if (audioEncoder == "")\r
+ audioEncoder = " -E vorbis";\r
+ else\r
+ audioEncoder = audioEncoder + ",vorbis";\r
+ break;\r
+ case "AC3":\r
+ if (audioEncoder == "")\r
+ audioEncoder = " -E ac3";\r
+ else\r
+ audioEncoder = audioEncoder + ",ac3";\r
+ break;\r
+ case "AAC + AC3":\r
+ if (audioEncoder == "")\r
+ audioEncoder = " -E aac+ac3";\r
+ else\r
+ audioEncoder = audioEncoder + ",aac+ac3";\r
+ break;\r
+ default:\r
+ break;\r
+ }\r
+\r
+ // Audio BitRate Selections\r
+ if (audioBitrate1 != "")\r
+ audioBitrate = " -B " + audioBitrate1;\r
+\r
+ if (audioBitrate2 != "")\r
+ {\r
+ if (audioBitrate == "")\r
+ audioBitrate = " -B " + audioBitrate2;\r
+ else\r
+ audioBitrate = audioBitrate + "," + audioBitrate2;\r
+ }\r
+\r
+ // Audio SampleRate Selections\r
+ if (audioSampleRate1 != "")\r
+ audioSampleRate = " -R " + audioSampleRate1;\r
+\r
+ if (audioSampleRate2 != "")\r
+ {\r
+ if (audioSampleRate == "")\r
+ audioSampleRate = " -R " + audioSampleRate2;\r
+ else\r
+ audioSampleRate = audioSampleRate + "," + audioSampleRate2;\r
+ }\r
+\r
+ //Dynamic Range Compression (expects a float but a double is used for ease)\r
+ double value = mainWindow.slider_drc.Value / 10.0;\r
+ value++;\r
+ drc = " -D " + value;\r
+\r
+ // Subtitles\r
+ string subtitles = mainWindow.drp_subtitle.Text;\r
if (subtitles == "None")\r
subtitles = "";\r
else if (subtitles == "")\r
if (mainWindow.check_forced.Checked)\r
forced = " -F ";\r
\r
- //Dynamic Range Compression (expects a float but a double is used for ease)\r
- double value = mainWindow.slider_drc.Value / 10.0;\r
- value++;\r
- drc = " -D " + value;\r
\r
- string queryAudioSettings = audioBitrate + audioSampleRate + drc + audioChannels + SixChannelAudio + subScan + subtitles + forced;\r
+ string queryAudioSettings = audioChannels + SixChannelAudio + audioEncoder + audioBitrate + audioSampleRate + drc + subScan + subtitles + forced;\r
#endregion\r
\r
// Chapter Markers Tab\r
\r
string ChapterMarkers = "";\r
\r
+ // Attach Source name and dvd title to the start of the chapters.csv filename.\r
+ // This is for the queue. It allows different chapter name files for each title.\r
+ string source_name = mainWindow.text_source.Text;\r
+ string[] sourceName = source.Split('\\');\r
+ source_name = sourceName[sourceName.Length - 1].Replace(".iso", "").Replace(".mpg", "").Replace(".ts", "").Replace(".ps", "");\r
+ source_name = source_name.Replace("\"", "");\r
+\r
+ string source_title = mainWindow.drp_dvdtitle.Text;\r
+ string[] titlesplit = source_title.Split(' ');\r
+ source_title = titlesplit[0];\r
+\r
if (mainWindow.Check_ChapterMarkers.Checked)\r
{\r
- Boolean saveCSV = chapterCSVSave(mainWindow);\r
- if (saveCSV == false)\r
+\r
+ if ((source_name.Trim().Replace("-i ", "") != "Click 'Browse' to continue") && (source_name.Trim().Replace("-i ", "") != ""))\r
{\r
- MessageBox.Show("Unable to save Chapter Makrers file! \n Chapter marker names will NOT be saved in your encode \n\n", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
- ChapterMarkers = " -m ";\r
+ if (source_title != "Automatic")\r
+ {\r
+ string filename = source_name + "-" + source_title + "-chapters.csv";\r
+ string path = Path.Combine(Path.GetTempPath(), filename);\r
+\r
+ Boolean saveCSV = chapterCSVSave(mainWindow, path);\r
+ if (saveCSV == false)\r
+ ChapterMarkers = " -m ";\r
+ else\r
+ {\r
+ ChapterMarkers = " --markers=" + "\"" + path + "\"";\r
+ }\r
+ }\r
+ else\r
+ {\r
+ string filename = source_name + "-chapters.csv";\r
+ string path = Path.Combine(Path.GetTempPath(), filename);\r
+\r
+ Boolean saveCSV = chapterCSVSave(mainWindow, path);\r
+ if (saveCSV == false)\r
+ ChapterMarkers = " -m ";\r
+ else\r
+ {\r
+ ChapterMarkers = " --markers=" + "\"" + path + "\"";\r
+ }\r
+ }\r
}\r
else\r
{\r
string path = Path.Combine(Path.GetTempPath(), "chapters.csv");\r
-\r
ChapterMarkers = " --markers=" + "\"" + path + "\"";\r
}\r
}\r
// H264 Tab\r
#region H264 Tab\r
\r
- string h264Advanced = mainWindow.rtf_h264advanced.Text;\r
+ string h264Advanced = mainWindow.rtf_x264Query.Text;\r
\r
if ((h264Advanced == ""))\r
h264Advanced = "";\r
* This function saves the data in the chapters tab, dataGridView into a CSV file called chapters.csv in this applications\r
* running directory.\r
*/\r
- private Boolean chapterCSVSave(frmMain mainWindow)\r
+ private Boolean chapterCSVSave(frmMain mainWindow, string file_path_name)\r
{\r
try\r
{\r
- string path = Path.Combine(Path.GetTempPath(), "chapters.csv");\r
-\r
StringBuilder csv = new StringBuilder();\r
\r
foreach (DataGridViewRow row in mainWindow.data_chpt.Rows)\r
csv.Append(row.Cells[1].Value.ToString());\r
csv.Append(Environment.NewLine);\r
}\r
- StreamWriter file = new StreamWriter(path);\r
+ StreamWriter file = new StreamWriter(file_path_name);\r
file.Write(csv.ToString());\r
file.Close();\r
file.Dispose();\r
}\r
catch (Exception exc)\r
{\r
- MessageBox.Show(exc.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+ MessageBox.Show("Unable to save Chapter Makrers file! \nChapter marker names will NOT be saved in your encode \n\n" + exc.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
return false;\r
}\r
}\r