OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / Common.cs
index 1f938a0..d87e937 100644 (file)
@@ -1,7 +1,7 @@
 /*  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
@@ -19,7 +19,7 @@ namespace Handbrake.Functions
         /*\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
@@ -42,11 +42,12 @@ namespace Handbrake.Functions
             }\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
@@ -85,7 +86,7 @@ namespace Handbrake.Functions
                         {\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
@@ -126,6 +127,10 @@ namespace Handbrake.Functions
 \r
             // Source tab\r
             #region source\r
+            // Reset some vaules to stock first to prevent errors.\r
+            mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
+\r
+            // Now load all the new settings onto the main window\r
             if (presetQuery.Source != "")\r
                 mainWindow.text_source.Text = presetQuery.Source;\r
 \r
@@ -138,7 +143,7 @@ namespace Handbrake.Functions
             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
@@ -158,13 +163,22 @@ namespace Handbrake.Functions
                 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.IpodAtom == true)\r
+                mainWindow.check_iPodAtom.CheckState = CheckState.Checked;\r
+            else\r
+                mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
+\r
+            if (presetQuery.OptimizeMP4 == true)\r
+                mainWindow.check_optimiseMP4.CheckState = CheckState.Checked;\r
+            else\r
+                mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;\r
 \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
@@ -184,27 +198,26 @@ namespace Handbrake.Functions
             else\r
                 mainWindow.check_deblock.CheckState = CheckState.Unchecked;\r
 \r
-            if (presetQuery.ChapterMarkers == true)\r
-                mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked;\r
-            else\r
-                mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked;\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
@@ -212,7 +225,6 @@ namespace Handbrake.Functions
             else\r
             {\r
                 mainWindow.text_height.Text = "";\r
-                mainWindow.text_height.BackColor = Color.White;\r
             }\r
 \r
             if (presetQuery.VFR == true)\r
@@ -252,52 +264,162 @@ namespace Handbrake.Functions
             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
-            if (presetQuery.IpodAtom == true)\r
-                mainWindow.check_iPodAtom.CheckState = CheckState.Checked;\r
-            else\r
-                mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
 \r
-            if (presetQuery.OptimizeMP4 == true)\r
-                mainWindow.check_optimiseMP4.CheckState = CheckState.Checked;\r
+\r
+            #endregion\r
+\r
+            // Chapter Markers Tab\r
+            #region Chapter Markers\r
+\r
+            if (presetQuery.ChapterMarkers == true)\r
+            {\r
+                mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked;\r
+                mainWindow.text_destination.Text = mainWindow.text_destination.Text.Replace(".mp4", ".m4v");\r
+            }\r
             else\r
-                mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;\r
+                mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked;\r
 \r
             #endregion\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
-            mainWindow.drp_subtitle.Text = presetQuery.Subtitles;\r
 \r
-            if (presetQuery.ForcedSubtitles == true)\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
-                mainWindow.check_forced.CheckState = CheckState.Checked;\r
-                mainWindow.check_forced.Enabled = true;\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
             else\r
-                mainWindow.check_forced.CheckState = CheckState.Unchecked;\r
+            {\r
+                mainWindow.drp_track2Audio.Text = presetQuery.AudioTrack2;\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
+\r
+            if (presetQuery.AudioTrack3 == "None")\r
+            {\r
+                mainWindow.drp_track3Audio.SelectedIndex = 0;\r
+                mainWindow.drp_audsr_3.Enabled = false;\r
+                mainWindow.drp_audmix_3.Enabled = false;\r
+                mainWindow.drp_audenc_3.Enabled = false;\r
+                mainWindow.drp_audbit_3.Enabled = false;\r
+\r
+            }\r
+            else\r
+            {\r
+                mainWindow.drp_track3Audio.Text = presetQuery.AudioTrack3;\r
+                mainWindow.drp_audsr_3.Enabled = true;\r
+                mainWindow.drp_audmix_3.Enabled = true;\r
+                mainWindow.drp_audenc_3.Enabled = true;\r
+                mainWindow.drp_audbit_3.Enabled = true;\r
+            }\r
+\r
+            if (presetQuery.AudioTrack4 == "None")\r
+            {\r
+                mainWindow.drp_track4Audio.SelectedIndex = 0;\r
+                mainWindow.drp_audsr_4.Enabled = false;\r
+                mainWindow.drp_audmix_4.Enabled = false;\r
+                mainWindow.drp_audenc_4.Enabled = false;\r
+                mainWindow.drp_audbit_4.Enabled = false;\r
+            }\r
+            else\r
+            {\r
+                mainWindow.drp_track4Audio.Text = presetQuery.AudioTrack4;\r
+                mainWindow.drp_audsr_4.Enabled = true;\r
+                mainWindow.drp_audmix_4.Enabled = true;\r
+                mainWindow.drp_audenc_4.Enabled = true;\r
+                mainWindow.drp_audbit_4.Enabled = true;\r
+            }\r
+\r
+            if (presetQuery.AudioEncoder1 != null)\r
+                mainWindow.drp_audenc_1.Text = presetQuery.AudioEncoder1;\r
+            mainWindow.drp_audenc_2.Text = presetQuery.AudioEncoder2;\r
+            mainWindow.drp_audenc_3.Text = presetQuery.AudioEncoder3;\r
+            mainWindow.drp_audenc_4.Text = presetQuery.AudioEncoder4;\r
+\r
+            if (presetQuery.AudioBitrate1 != null)\r
+                mainWindow.drp_audbit_1.Text = presetQuery.AudioBitrate1;\r
+            mainWindow.drp_audbit_2.Text = presetQuery.AudioBitrate2;\r
+            mainWindow.drp_audbit_3.Text = presetQuery.AudioBitrate4;\r
+            mainWindow.drp_audbit_3.Text = presetQuery.AudioBitrate4;\r
+\r
+            if (presetQuery.AudioSamplerate1 != null)\r
+                mainWindow.drp_audsr_1.Text = presetQuery.AudioSamplerate1;\r
+            mainWindow.drp_audsr_2.Text = presetQuery.AudioSamplerate2;\r
+            mainWindow.drp_audsr_3.Text = presetQuery.AudioSamplerate3;\r
+            mainWindow.drp_audsr_4.Text = presetQuery.AudioSamplerate4;\r
+\r
+            mainWindow.drp_audmix_1.Text = presetQuery.AudioTrackMix1;\r
+            mainWindow.drp_audmix_2.Text = presetQuery.AudioTrackMix2;\r
+            mainWindow.drp_audmix_3.Text = presetQuery.AudioTrackMix3;\r
+            mainWindow.drp_audmix_4.Text = presetQuery.AudioTrackMix4;\r
+\r
 \r
             // Dynamic Range Compression (Should be a float but we use double for ease)\r
-            double value = presetQuery.DRC;\r
+            double value = 0;\r
+            double actualValue = 0;\r
+\r
+            value = presetQuery.DRC1;\r
+            if (value > 0)\r
+                value = value - 10;\r
+            mainWindow.trackBar1.Value = int.Parse(value.ToString());\r
+            actualValue = presetQuery.DRC1 / 10;\r
+            mainWindow.lbl_drc1.Text = actualValue.ToString();\r
+\r
+            value = presetQuery.DRC2;\r
+            if (value > 0)\r
+                value = value - 10;\r
+            mainWindow.trackBar2.Value = int.Parse(value.ToString());\r
+            actualValue = presetQuery.DRC2 / 10;\r
+            mainWindow.lbl_drc2.Text = actualValue.ToString();\r
+\r
+            value = presetQuery.DRC3;\r
+            if (value > 0)\r
+                value = value - 10;\r
+            mainWindow.trackBar3.Value = int.Parse(value.ToString());\r
+            actualValue = presetQuery.DRC3 / 10;\r
+            mainWindow.lbl_drc3.Text = actualValue.ToString();\r
+\r
+            value = presetQuery.DRC4;\r
             if (value > 0)\r
                 value = value - 10;\r
-            mainWindow.slider_drc.Value = int.Parse(value.ToString());\r
+            mainWindow.trackBar4.Value = int.Parse(value.ToString());\r
+            actualValue = presetQuery.DRC4 / 10;\r
+            mainWindow.lbl_drc4.Text = actualValue.ToString();\r
+\r
+\r
+            // Subtitle Stuff\r
+            mainWindow.drp_subtitle.Text = presetQuery.Subtitles;\r
 \r
-            double actualValue = presetQuery.DRC / 10;\r
-            mainWindow.lbl_drc.Text = actualValue.ToString();\r
+            if (presetQuery.ForcedSubtitles == true)\r
+            {\r
+                mainWindow.check_forced.CheckState = CheckState.Checked;\r
+                mainWindow.check_forced.Enabled = true;\r
+            }\r
+            else\r
+                mainWindow.check_forced.CheckState = CheckState.Unchecked;\r
 \r
 \r
             #endregion\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
@@ -319,8 +441,10 @@ namespace Handbrake.Functions
             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
@@ -345,7 +469,6 @@ namespace Handbrake.Functions
 \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
@@ -372,28 +495,6 @@ namespace Handbrake.Functions
                     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
@@ -408,7 +509,7 @@ namespace Handbrake.Functions
             }\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
@@ -437,16 +538,21 @@ namespace Handbrake.Functions
                 cropOut = " --crop 0:0:0:0 ";\r
             else\r
             {\r
-                if (mainWindow.text_top.Text == "")\r
-                    cropTop = "0";\r
-                if (mainWindow.text_bottom.Text == "")\r
-                    cropBottom = "0";\r
-                if (mainWindow.text_left.Text == "")\r
-                    cropLeft = "0";\r
-                if (mainWindow.text_right.Text == "")\r
-                    cropRight = "0";\r
-\r
-                cropOut = " --crop " + cropTop + ":" + cropBottom + ":" + cropLeft + ":" + cropRight;\r
+                if ((mainWindow.text_top.Text == "") && (mainWindow.text_bottom.Text == "") && (mainWindow.text_left.Text == "") && (mainWindow.text_right.Text == ""))\r
+                    cropOut = "";\r
+                else\r
+                {\r
+                    if (mainWindow.text_top.Text == "")\r
+                        cropTop = "0";\r
+                    if (mainWindow.text_bottom.Text == "")\r
+                        cropBottom = "0";\r
+                    if (mainWindow.text_left.Text == "")\r
+                        cropLeft = "0";\r
+                    if (mainWindow.text_right.Text == "")\r
+                        cropRight = "0";\r
+\r
+                    cropOut = " --crop " + cropTop + ":" + cropBottom + ":" + cropLeft + ":" + cropRight;\r
+                }\r
             }\r
 \r
             switch (deInterlace_Option)\r
@@ -455,16 +561,16 @@ namespace Handbrake.Functions
                     deinterlace = "";\r
                     break;\r
                 case "Fast":\r
-                    deinterlace = " --deinterlace=fast";\r
+                    deinterlace = " --deinterlace=\"fast\"";\r
                     break;\r
                 case "Slow":\r
-                    deinterlace = " --deinterlace=slow";\r
+                    deinterlace = " --deinterlace=\"slow\"";\r
                     break;\r
                 case "Slower":\r
-                    deinterlace = " --deinterlace=slower";\r
+                    deinterlace = " --deinterlace=\"slower\"";\r
                     break;\r
                 case "Slowest":\r
-                    deinterlace = " --deinterlace=slowest";\r
+                    deinterlace = " --deinterlace=\"slowest\"";\r
                     break;\r
                 default:\r
                     deinterlace = "";\r
@@ -474,8 +580,13 @@ namespace Handbrake.Functions
             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
@@ -486,8 +597,7 @@ namespace Handbrake.Functions
             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
@@ -531,7 +641,7 @@ namespace Handbrake.Functions
             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
@@ -552,13 +662,13 @@ namespace Handbrake.Functions
                     denoise = "";\r
                     break;\r
                 case "Weak":\r
-                    denoise = " --denoise=weak";\r
+                    denoise = " --denoise=\"weak\"";\r
                     break;\r
                 case "Medium":\r
-                    denoise = " --denoise=medium";\r
+                    denoise = " --denoise=\"medium\"";\r
                     break;\r
                 case "Strong":\r
-                    denoise = " --denoise=strong";\r
+                    denoise = " --denoise=\"strong\"";\r
                     break;\r
                 default:\r
                     denoise = "";\r
@@ -578,90 +688,253 @@ namespace Handbrake.Functions
             // 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
-            string audioChannels = "";\r
-            string Mixdown = mainWindow.drp_audioMixDown.Text;\r
-            string SixChannelAudio = "";\r
-            string subtitles = mainWindow.drp_subtitle.Text;\r
+            // Query\r
+            string tracks = "";\r
+            string aencoder = "";\r
+            string audioBitrate = "";\r
+            string audioSampleRate = "";\r
+            string Mixdown = "";\r
+            string drc = "";\r
             string subScan = "";\r
             string forced = "";\r
-            string drc = "";\r
 \r
-            if (audioBitrate != "")\r
-                audioBitrate = " -B " + audioBitrate;\r
-\r
-            if (audioSampleRate != "")\r
-                audioSampleRate = " -R " + audioSampleRate;\r
+            // Track 1\r
+            string track1 = mainWindow.drp_track1Audio.Text;\r
+            string aencoder1 = 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
+            string drc1 = mainWindow.trackBar1.Value.ToString();\r
 \r
-            // Audio Track 1\r
+            // Track 2\r
+            string track2 = mainWindow.drp_track2Audio.Text;\r
+            string aencoder2 = 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
+            string drc2 = mainWindow.trackBar2.Value.ToString();\r
+\r
+            // Track 3\r
+            string track3 = mainWindow.drp_track3Audio.Text;\r
+            string aencoder3 = mainWindow.drp_audenc_3.Text;\r
+            string audioBitrate3 = mainWindow.drp_audbit_3.Text;\r
+            string audioSampleRate3 = mainWindow.drp_audsr_3.Text;\r
+            string Mixdown3 = mainWindow.drp_audmix_3.Text;\r
+            string drc3 = mainWindow.trackBar3.Value.ToString();\r
+\r
+            // Track 4\r
+            string track4 = mainWindow.drp_track4Audio.Text;\r
+            string aencoder4 = mainWindow.drp_audenc_4.Text;\r
+            string audioBitrate4 = mainWindow.drp_audbit_4.Text;\r
+            string audioSampleRate4 = mainWindow.drp_audsr_4.Text;\r
+            string Mixdown4 = mainWindow.drp_audmix_4.Text;\r
+            string drc4 = mainWindow.trackBar4.Value.ToString();\r
+\r
+\r
+            //\r
+            // Audio Track Selections\r
+            //\r
             if (track1 == "Automatic")\r
-                audioChannels = "";\r
+                tracks = " -a auto";\r
             else if (track1 == "")\r
-                audioChannels = "";\r
+                tracks = "";\r
             else if (track1 == "None")\r
-                audioChannels = " -a none";\r
+                tracks = "";\r
             else\r
             {\r
+                string[] tempSub = track1.Split(' ');\r
+                tracks = " -a " + tempSub[0];\r
+            }\r
+\r
+            if (track2 != "None")\r
+            {\r
                 string[] tempSub;\r
-                tempSub = track1.Split(' ');\r
-                audioChannels = " -a " + tempSub[0];\r
+                tempSub = track2.Split(' ');\r
+                if (tracks == "")\r
+                    tracks = " -a none," + tempSub[0];\r
+                else\r
+                    tracks = tracks + "," + tempSub[0];\r
             }\r
 \r
-            // Audio Track 2\r
-            if (audioChannels != "")\r
+            if (track3 != "None")\r
             {\r
-                if ((track2 != "") && (track2 != "None"))\r
-                {\r
-                    string[] tempSub;\r
-                    tempSub = track2.Split(' ');\r
-                    audioChannels = audioChannels + "," + tempSub[0];\r
-                }\r
+                string[] tempSub;\r
+                tempSub = track3.Split(' ');\r
+                if (tracks == "")\r
+                    tracks = " -a none,none," + tempSub[0];\r
+                else\r
+                    tracks = tracks + "," + tempSub[0];\r
             }\r
-            else\r
+\r
+            if (track4 != "None")\r
             {\r
-                if ((track2 != "") && (track2 != "None"))\r
-                {\r
-                    string[] tempSub;\r
-                    tempSub = track2.Split(' ');\r
-                    audioChannels = " -a " + tempSub[0];\r
-                }\r
+                string[] tempSub;\r
+                tempSub = track4.Split(' ');\r
+                if (tracks == "")\r
+                    tracks = " -a none,none,none," + tempSub[0];\r
+                else\r
+                    tracks = tracks + "," + tempSub[0];\r
             }\r
 \r
+            //\r
+            // Audio Encoder\r
+            //\r
+            if (aencoder1 != "")\r
+                aencoder = " -E " + getAudioEncoder(aencoder1);\r
 \r
+            if (aencoder2 != "")\r
+            {\r
+                if (aencoder == "")\r
+                    aencoder = " -E faac," + getAudioEncoder(aencoder2);\r
+                else\r
+                    aencoder = aencoder + "," + getAudioEncoder(aencoder2);\r
+            }\r
 \r
-            switch (Mixdown)\r
+            if (aencoder3 != "")\r
             {\r
-                case "Automatic":\r
-                    Mixdown = "";\r
-                    break;\r
-                case "Mono":\r
-                    Mixdown = "mono";\r
-                    break;\r
-                case "Stereo":\r
-                    Mixdown = "stereo";\r
-                    break;\r
-                case "Dolby Surround":\r
-                    Mixdown = "dpl1";\r
-                    break;\r
-                case "Dolby Pro Logic II":\r
-                    Mixdown = "dpl2";\r
-                    break;\r
-                case "6 Channel Discrete":\r
-                    Mixdown = "6ch";\r
-                    break;\r
-                default:\r
-                    Mixdown = "";\r
-                    break;\r
+                if (aencoder == "")\r
+                    aencoder = " -E faac,faac," + getAudioEncoder(aencoder3);\r
+                else\r
+                    aencoder = aencoder + "," + getAudioEncoder(aencoder3);\r
+            }\r
+\r
+            if (aencoder4 != "")\r
+            {\r
+                if (aencoder == "")\r
+                    aencoder = " -E faac,faac,faac," + getAudioEncoder(aencoder4);\r
+                else\r
+                    aencoder = aencoder + "," + getAudioEncoder(aencoder4);\r
+            }\r
+\r
+            //\r
+            // Audio Bitrate Selections\r
+            //\r
+            if (audioBitrate1 != "")\r
+                audioBitrate = " -B " + audioBitrate1;\r
+\r
+            if (audioBitrate2 != "")\r
+            {\r
+                if (audioBitrate == "")\r
+                    audioBitrate = " -B 160," + audioBitrate2;\r
+                else\r
+                    audioBitrate = audioBitrate + "," + audioBitrate2;\r
+            }\r
+\r
+            if (audioBitrate3 != "")\r
+            {\r
+                if (audioBitrate == "")\r
+                    audioBitrate = " -B 160,160," + audioBitrate3;\r
+                else\r
+                    audioBitrate = audioBitrate + "," + audioBitrate3;\r
+            }\r
+\r
+            if (audioBitrate4 != "")\r
+            {\r
+                if (audioBitrate == "")\r
+                    audioBitrate = " -B 160,160,160," + audioBitrate4;\r
+                else\r
+                    audioBitrate = audioBitrate + "," + audioBitrate4;\r
+            }\r
+\r
+            //Audio Sample Rate   - audioSampleRate\r
+\r
+            if (audioSampleRate1 != "")\r
+                audioSampleRate = " -R " + audioSampleRate1;\r
+\r
+            if (audioSampleRate2 != "")\r
+            {\r
+                if (audioSampleRate == "")\r
+                    audioSampleRate = " -R 48," + audioSampleRate2;\r
+                else\r
+                    audioSampleRate = audioSampleRate + "," + audioSampleRate2;\r
+            }\r
+\r
+            if (audioSampleRate3 != "")\r
+            {\r
+                if (audioSampleRate == "")\r
+                    audioSampleRate = " -R 48,48," + audioSampleRate3;\r
+                else\r
+                    audioSampleRate = audioSampleRate + "," + audioSampleRate3;\r
+            }\r
+\r
+            if (audioSampleRate4 != "")\r
+            {\r
+                if (audioSampleRate == "")\r
+                    audioSampleRate = " -R 48,48,48," + audioSampleRate4;\r
+                else\r
+                    audioSampleRate = audioSampleRate + "," + audioSampleRate4;\r
+            }\r
+\r
+            //\r
+            // Audio Mixdown Selections\r
+            //\r
+\r
+            if ((Mixdown1 != "") && (Mixdown1 != "Automatic"))\r
+                Mixdown = " -6 " + getMixDown(Mixdown1);\r
+\r
+            if ((Mixdown2 != "") && (Mixdown2 != "Automatic"))\r
+            {\r
+                if (Mixdown != "")\r
+                    Mixdown = Mixdown + "," + getMixDown(Mixdown2);\r
+            }\r
+\r
+            if ((Mixdown3 != "") && (Mixdown3 != "Automatic"))\r
+            {\r
+                if (Mixdown != "")\r
+                    Mixdown = Mixdown + "," + getMixDown(Mixdown3);\r
+            }\r
+\r
+            if ((Mixdown4 != "") && (Mixdown4 != "Automatic"))\r
+            {\r
+                if (Mixdown != "")\r
+                    Mixdown = Mixdown + "," + getMixDown(Mixdown4);\r
             }\r
 \r
-            if (Mixdown != "")\r
-                SixChannelAudio = " -6 " + Mixdown;\r
-            else\r
-                SixChannelAudio = "";\r
 \r
+            //\r
+            // DRC\r
+            //\r
+            double value = 0;\r
+\r
+            value = mainWindow.trackBar1.Value / 10.0;\r
+            value++;\r
+\r
+            if (value > 1.0)\r
+                drc = " -D " + value;\r
+\r
+            value = mainWindow.trackBar2.Value / 10.0;\r
+            value++;\r
+            if (drc2 != "0")\r
+            {\r
+                if (drc == "")\r
+                    drc = " -D 1," + value;\r
+                else\r
+                    drc = drc + "," + value;\r
+            }\r
+\r
+            value = mainWindow.trackBar3.Value / 10.0;\r
+            value++;\r
+            if (drc3 != "0")\r
+            {\r
+                if (drc == "")\r
+                    drc = " -D 1,1," + value;\r
+                else\r
+                    drc = drc + "," + value;\r
+            }\r
+\r
+            value = mainWindow.trackBar4.Value / 10.0;\r
+            value++;\r
+            if (drc4 != "0")\r
+            {\r
+                if (drc == "")\r
+                    drc = " -D 1,1,1," + value;\r
+                else\r
+                    drc = drc + "," + value;\r
+            }\r
+\r
+\r
+            // Subtitles\r
+            string subtitles = mainWindow.drp_subtitle.Text;\r
             if (subtitles == "None")\r
                 subtitles = "";\r
             else if (subtitles == "")\r
@@ -681,12 +954,9 @@ namespace Handbrake.Functions
             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 = tracks + aencoder + audioBitrate + audioSampleRate + Mixdown + drc + subScan + subtitles + forced;\r
+\r
             #endregion\r
 \r
             // Chapter Markers Tab\r
@@ -694,18 +964,52 @@ namespace Handbrake.Functions
 \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
@@ -716,7 +1020,7 @@ namespace Handbrake.Functions
             // 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
@@ -787,12 +1091,10 @@ namespace Handbrake.Functions
          * 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
@@ -802,7 +1104,7 @@ namespace Handbrake.Functions
                     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
@@ -811,11 +1113,51 @@ namespace Handbrake.Functions
             }\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
 \r
+\r
+        private string getMixDown(string selectedAudio)\r
+        {\r
+            switch (selectedAudio)\r
+            {\r
+                case "Automatic":\r
+                    return "";\r
+                case "Mono":\r
+                    return "mono";\r
+                case "Stereo":\r
+                    return "stereo";\r
+                case "Dolby Surround":\r
+                    return "dpl1";\r
+                case "Dolby Pro Logic II":\r
+                    return "dpl2";\r
+                case "6 Channel Discrete":\r
+                    return "6ch";\r
+                default:\r
+                    return "";\r
+            }\r
+        }\r
+\r
+        private string getAudioEncoder(string selectedEncoder)\r
+        {\r
+            switch (selectedEncoder)\r
+            {\r
+                case "AAC":\r
+                    return "faac";\r
+                case "MP3":\r
+                    return "lame";\r
+                case "Vorbis":\r
+                    return "vorbis";\r
+                case "AC3":\r
+                    return "ac3";\r
+                default:\r
+                    return "";\r
+            }\r
+        }\r
+\r
+\r
         // End of Functions\r
     }\r
 }\r