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 ebeb0c9..c911b83 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
@@ -142,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
@@ -162,12 +163,6 @@ 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.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
@@ -179,7 +174,7 @@ namespace Handbrake.Functions
             else\r
                 mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;\r
 \r
-            #endregion  \r
+            #endregion\r
 \r
             // Picture Settings Tab\r
             #region Picture\r
@@ -205,21 +200,24 @@ namespace Handbrake.Functions
 \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
@@ -227,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
@@ -267,9 +264,12 @@ 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
 \r
-            \r
 \r
             #endregion\r
 \r
@@ -288,11 +288,52 @@ namespace Handbrake.Functions
 \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
@@ -317,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
@@ -339,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
@@ -365,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
@@ -392,28 +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
-                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
@@ -428,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
@@ -494,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
@@ -506,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
@@ -551,7 +575,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
@@ -598,25 +622,31 @@ 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
+            // 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
@@ -630,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
@@ -650,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
@@ -701,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
@@ -728,7 +884,7 @@ namespace Handbrake.Functions
             if (mainWindow.Check_ChapterMarkers.Checked)\r
             {\r
 \r
-                if (source_name != "Click 'Browse' to continue")\r
+                if ((source_name.Trim().Replace("-i ", "") != "Click 'Browse' to continue") && (source_name.Trim().Replace("-i ", "") != ""))\r
                 {\r
                     if (source_title != "Automatic")\r
                     {\r
@@ -745,15 +901,23 @@ namespace Handbrake.Functions
                     }\r
                     else\r
                     {\r
-                        string path = Path.Combine(Path.GetTempPath(), "chapters.csv");\r
-                        ChapterMarkers = " --markers=" + "\"" + path + "\"";\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
                     ChapterMarkers = " --markers=" + "\"" + path + "\"";\r
-                } \r
+                }\r
             }\r
 \r
             string chapter_markers = ChapterMarkers;\r
@@ -762,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
@@ -836,7 +1000,7 @@ namespace Handbrake.Functions
         private Boolean chapterCSVSave(frmMain mainWindow, string file_path_name)\r
         {\r
             try\r
-            {      \r
+            {\r
                 StringBuilder csv = new StringBuilder();\r
 \r
                 foreach (DataGridViewRow row in mainWindow.data_chpt.Rows)\r