OSDN Git Service

- New Audio Panel (Query Parser, Query Generator, Preset Loader Functions all updated)
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / Common.cs
index e298bea..c911b83 100644 (file)
@@ -1,3 +1,9 @@
+/*  Common.cs $\r
+       \r
+          This file is part of the HandBrake source code.\r
+          Homepage: <http://handbrake.fr>.\r
+          It may be used under the terms of the GNU General Public License. */\r
+\r
 using System;\r
 using System.Collections.Generic;\r
 using System.Text;\r
@@ -13,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
@@ -21,7 +27,7 @@ namespace Handbrake.Functions
                 string build = rssRead.build();\r
 \r
                 int latest = int.Parse(build);\r
-                int current = Properties.Settings.Default.build;\r
+                int current = Properties.Settings.Default.hb_build;\r
                 int skip = Properties.Settings.Default.skipversion;\r
 \r
                 if (latest == skip)\r
@@ -36,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
@@ -76,7 +83,10 @@ namespace Handbrake.Functions
                     {\r
                         string filePath = "";\r
                         if (Properties.Settings.Default.autoNamePath.Trim() != "")\r
-                            filePath = Properties.Settings.Default.autoNamePath + "\\";\r
+                        {\r
+                            if (Properties.Settings.Default.autoNamePath.Trim() != "Click 'Browse' to set the default location")\r
+                                filePath = Properties.Settings.Default.autoNamePath + "\\";\r
+                        }\r
                         mainWindow.text_destination.Text = filePath + source + "_T" + title + "_C" + cs + dash + cf + ".mp4";\r
                     }\r
                     else\r
@@ -117,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
@@ -129,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
@@ -149,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
@@ -175,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
@@ -203,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
@@ -243,27 +264,76 @@ 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
+            \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
@@ -288,7 +358,7 @@ namespace Handbrake.Functions
 \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
@@ -310,8 +380,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
@@ -336,7 +408,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
@@ -363,25 +434,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
-                default:\r
-                    audioEncoder = " -E faac";\r
-                    break;\r
-            }\r
-\r
             if (width != "")\r
                 width = " -w " + width;\r
 \r
@@ -396,7 +448,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
@@ -462,8 +514,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
@@ -474,8 +531,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
@@ -489,6 +545,7 @@ namespace Handbrake.Functions
             string vidQSetting = "";\r
             string twoPassEncoding = "";\r
             string videoFramerate = mainWindow.drp_videoFramerate.Text;\r
+            string vid_frame_rate = "";\r
             string turboH264 = "";\r
             string largeFile = "";\r
             string denoise = "";\r
@@ -518,10 +575,13 @@ namespace Handbrake.Functions
             if (mainWindow.check_2PassEncode.Checked)\r
                 twoPassEncoding = " -2 ";\r
 \r
-            if (videoFramerate == "Automatic")\r
-                videoFramerate = "";\r
+            if (videoFramerate == "Same as source")\r
+                vid_frame_rate = "";\r
             else\r
-                videoFramerate = " -r " + videoFramerate;\r
+            {\r
+                if (!mainWindow.check_vfr.Checked)\r
+                    vid_frame_rate = " -r " + videoFramerate;\r
+            }\r
 \r
             if (mainWindow.check_turbo.Checked)\r
                 turboH264 = " -T ";\r
@@ -556,31 +616,37 @@ namespace Handbrake.Functions
                 optimizeMP4 = " -O ";\r
 \r
 \r
-            string queryVideoSettings = videoBitrate + videoFilesize + vidQSetting + twoPassEncoding + videoFramerate + turboH264 + ipodAtom + optimizeMP4 + largeFile + denoise;\r
+            string queryVideoSettings = videoBitrate + videoFilesize + vidQSetting + twoPassEncoding + vid_frame_rate + turboH264 + ipodAtom + optimizeMP4 + largeFile + denoise;\r
             #endregion\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
@@ -594,7 +660,6 @@ namespace Handbrake.Functions
                 audioChannels = " -a " + tempSub[0];\r
             }\r
 \r
-            // Audio Track 2\r
             if (audioChannels != "")\r
             {\r
                 if ((track2 != "") && (track2 != "None"))\r
@@ -614,38 +679,169 @@ namespace Handbrake.Functions
                 }\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
@@ -665,12 +861,8 @@ 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 = audioChannels + SixChannelAudio + audioEncoder + audioBitrate + audioSampleRate + drc + subScan + subtitles + forced;\r
             #endregion\r
 \r
             // Chapter Markers Tab\r
@@ -678,20 +870,53 @@ 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 = Application.StartupPath.ToString();\r
-                    path = "\"" + path + "\\chapters.csv\" ";\r
-\r
-                    ChapterMarkers = " --markers=" + path;\r
+                    string path = Path.Combine(Path.GetTempPath(), "chapters.csv");\r
+                    ChapterMarkers = " --markers=" + "\"" + path + "\"";\r
                 }\r
             }\r
 \r
@@ -701,7 +926,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
@@ -726,9 +951,7 @@ namespace Handbrake.Functions
 \r
             string queryAdvancedSettings = processors;\r
 \r
-            string verbose = "";\r
-            if (Properties.Settings.Default.verbose == "Checked")\r
-                verbose = " -v ";\r
+            string verbose = " -v ";\r
             #endregion\r
 \r
             return querySource + queryDestination + queryPictureSettings + queryVideoSettings + h264Settings + queryAudioSettings + ChapterMarkers + queryAdvancedSettings + verbose;\r
@@ -774,15 +997,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 appPath = Application.StartupPath.ToString();\r
-                appPath = appPath + "\\";\r
-\r
-                string path = appPath + "chapters.csv";\r
-\r
                 StringBuilder csv = new StringBuilder();\r
 \r
                 foreach (DataGridViewRow row in mainWindow.data_chpt.Rows)\r
@@ -792,7 +1010,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
@@ -801,7 +1019,7 @@ 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