OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / Functions / Common.cs
1 /*  Common.cs $\r
2         \r
3            This file is part of the HandBrake source code.\r
4            Homepage: <http://handbrake.m0k.org/>.\r
5            It may be used under the terms of the GNU General Public License. */\r
6 \r
7 using System;\r
8 using System.Collections.Generic;\r
9 using System.Text;\r
10 using System.Windows.Forms;\r
11 using System.Globalization;\r
12 using System.IO;\r
13 using System.Drawing;\r
14 \r
15 namespace Handbrake.Functions\r
16 {\r
17     class Common\r
18     {\r
19         /*\r
20          * Checks for updates and returns "true" boolean if one exists.\r
21          */\r
22         public Boolean updateCheck()\r
23         {\r
24             try\r
25             {\r
26                 Functions.RssReader rssRead = new Functions.RssReader();\r
27                 string build = rssRead.build();\r
28 \r
29                 int latest = int.Parse(build);\r
30                 int current = Properties.Settings.Default.hb_build;\r
31                 int skip = Properties.Settings.Default.skipversion;\r
32 \r
33                 if (latest == skip)\r
34                 {\r
35                     return false;\r
36                 }\r
37                 else\r
38                 {\r
39                     Boolean update = (latest > current);\r
40                     return update;\r
41                 }\r
42             }\r
43             catch (Exception exc)\r
44             {\r
45                 MessageBox.Show(exc.ToString());\r
46                 return false;\r
47             }\r
48         }\r
49         \r
50         /*\r
51          * Function which generates the filename and path automatically based on the Source Name, DVD title and DVD Chapters\r
52          */\r
53         public void autoName(frmMain mainWindow)\r
54         {\r
55             if (Properties.Settings.Default.autoNaming == "Checked")\r
56             {\r
57                 if (mainWindow.drp_dvdtitle.Text != "Automatic")\r
58                 {\r
59                     string source = mainWindow.text_source.Text;\r
60                     string[] sourceName = source.Split('\\');\r
61                     source = sourceName[sourceName.Length - 1].Replace(".iso", "").Replace(".mpg", "").Replace(".ts", "").Replace(".ps", "");\r
62 \r
63                     string title = mainWindow.drp_dvdtitle.Text;\r
64                     string[] titlesplit = title.Split(' ');\r
65                     title = titlesplit[0];\r
66 \r
67                     string cs = mainWindow.drop_chapterStart.Text;\r
68                     string cf = mainWindow.drop_chapterFinish.Text;\r
69 \r
70                     if (title == "Automatic")\r
71                         title = "";\r
72                     if (cs == "Auto")\r
73                         cs = "";\r
74                     if (cf == "Auto")\r
75                         cf = "";\r
76 \r
77                     string dash = "";\r
78                     if (cf != "Auto")\r
79                         dash = "-";\r
80 \r
81                     if (!mainWindow.text_destination.Text.Contains("\\"))\r
82                     {\r
83                         string filePath = "";\r
84                         if (Properties.Settings.Default.autoNamePath.Trim() != "")\r
85                         {\r
86                             if (Properties.Settings.Default.autoNamePath.Trim() != "Click 'Browse' to set the default location")\r
87                                 filePath = Properties.Settings.Default.autoNamePath + "\\";\r
88                         } \r
89                         mainWindow.text_destination.Text = filePath + source + "_T" + title + "_C" + cs + dash + cf + ".mp4";\r
90                     }\r
91                     else\r
92                     {\r
93                         string dest = mainWindow.text_destination.Text;\r
94 \r
95                         string[] destName = dest.Split('\\');\r
96 \r
97 \r
98                         string[] extension = dest.Split('.');\r
99                         string ext = extension[extension.Length - 1];\r
100 \r
101                         destName[destName.Length - 1] = source + "_T" + title + "_C" + cs + dash + cf + "." + ext;\r
102 \r
103                         string fullDest = "";\r
104                         foreach (string part in destName)\r
105                         {\r
106                             if (fullDest != "")\r
107                                 fullDest = fullDest + "\\" + part;\r
108                             else\r
109                                 fullDest = fullDest + part;\r
110                         }\r
111 \r
112                         mainWindow.text_destination.Text = fullDest;\r
113                     }\r
114                 }\r
115             }\r
116         }\r
117 \r
118         /*\r
119          * This function takes in a Query which has been parsed by QueryParser and sets up the GUI.\r
120          */\r
121         public void presetLoader(frmMain mainWindow, Functions.QueryParser presetQuery, string name)\r
122         {\r
123             // ---------------------------\r
124             // Setup the GUI\r
125             // ---------------------------\r
126 \r
127             // Source tab\r
128             #region source\r
129             if (presetQuery.Source != "")\r
130                 mainWindow.text_source.Text = presetQuery.Source;\r
131 \r
132             if (presetQuery.DVDTitle != 0)\r
133                 mainWindow.drp_dvdtitle.Text = presetQuery.DVDTitle.ToString();\r
134 \r
135             if (presetQuery.DVDChapterStart != 0)\r
136                 mainWindow.drop_chapterStart.Text = presetQuery.DVDChapterStart.ToString();\r
137 \r
138             if (presetQuery.DVDChapterFinish != 0)\r
139                 mainWindow.drop_chapterFinish.Text = presetQuery.DVDChapterFinish.ToString();\r
140 \r
141             if (presetQuery.Format != "")\r
142             {\r
143                 string destination = mainWindow.text_destination.Text;\r
144                 destination = destination.Replace(".mp4", "." + presetQuery.Format);\r
145                 destination = destination.Replace(".m4v", "." + presetQuery.Format);\r
146                 destination = destination.Replace(".avi", "." + presetQuery.Format);\r
147                 destination = destination.Replace(".mkv", "." + presetQuery.Format);\r
148                 destination = destination.Replace(".ogm", "." + presetQuery.Format);\r
149                 mainWindow.text_destination.Text = destination;\r
150             }\r
151 \r
152             #endregion\r
153 \r
154             // Destination tab\r
155             #region destination\r
156 \r
157             if (presetQuery.Destination != "")\r
158                 mainWindow.text_destination.Text = presetQuery.Destination;\r
159 \r
160             mainWindow.drp_videoEncoder.Text = presetQuery.VideoEncoder;\r
161             mainWindow.drp_audioCodec.Text = presetQuery.AudioEncoder;\r
162 \r
163             #endregion\r
164 \r
165             // Picture Settings Tab\r
166             #region Picture\r
167             mainWindow.drp_crop.Text = "Manual";\r
168             mainWindow.text_top.Text = presetQuery.CropTop;\r
169             mainWindow.text_bottom.Text = presetQuery.CropBottom;\r
170             mainWindow.text_left.Text = presetQuery.CropLeft;\r
171             mainWindow.text_right.Text = presetQuery.CropRight;\r
172 \r
173             mainWindow.drp_deInterlace_option.Text = presetQuery.DeInterlace;\r
174             mainWindow.drp_deNoise.Text = presetQuery.DeNoise;\r
175 \r
176             if (presetQuery.DeTelecine == true)\r
177                 mainWindow.check_detelecine.CheckState = CheckState.Checked;\r
178             else\r
179                 mainWindow.check_detelecine.CheckState = CheckState.Unchecked;\r
180 \r
181 \r
182             if (presetQuery.DeBlock == true)\r
183                 mainWindow.check_deblock.CheckState = CheckState.Checked;\r
184             else\r
185                 mainWindow.check_deblock.CheckState = CheckState.Unchecked;\r
186 \r
187             if (presetQuery.ChapterMarkers == true)\r
188                 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Checked;\r
189             else\r
190                 mainWindow.Check_ChapterMarkers.CheckState = CheckState.Unchecked;\r
191 \r
192             if (presetQuery.Anamorphic == true)\r
193                 mainWindow.CheckPixelRatio.CheckState = CheckState.Checked;\r
194             else\r
195                 mainWindow.CheckPixelRatio.CheckState = CheckState.Unchecked;\r
196 \r
197             if (presetQuery.LooseAnamorphic == true)\r
198                 mainWindow.check_lAnamorphic.CheckState = CheckState.Checked;\r
199             else\r
200                 mainWindow.check_lAnamorphic.CheckState = CheckState.Unchecked;\r
201 \r
202             if (presetQuery.Width != 0)\r
203                 mainWindow.text_width.Text = presetQuery.Width.ToString();\r
204             else\r
205             {\r
206                 mainWindow.text_width.Text = "";\r
207                 mainWindow.text_width.BackColor = Color.White;\r
208             }\r
209 \r
210             if (presetQuery.Height != 0)\r
211                 mainWindow.text_height.Text = presetQuery.Height.ToString();\r
212             else\r
213             {\r
214                 mainWindow.text_height.Text = "";\r
215                 mainWindow.text_height.BackColor = Color.White;\r
216             }\r
217 \r
218             if (presetQuery.VFR == true)\r
219                 mainWindow.check_vfr.CheckState = CheckState.Checked;\r
220             else\r
221                 mainWindow.check_vfr.CheckState = CheckState.Unchecked;\r
222             #endregion\r
223 \r
224             // Video Settings Tab\r
225             #region video\r
226             mainWindow.text_bitrate.Text = presetQuery.AverageVideoBitrate;\r
227             mainWindow.text_filesize.Text = presetQuery.VideoTargetSize;\r
228             mainWindow.slider_videoQuality.Value = presetQuery.VideoQuality;\r
229             if (mainWindow.slider_videoQuality.Value != 0)\r
230             {\r
231                 int ql = presetQuery.VideoQuality;\r
232                 mainWindow.SliderValue.Text = ql.ToString() + "%";\r
233             }\r
234 \r
235             if (presetQuery.TwoPass == true)\r
236                 mainWindow.check_2PassEncode.CheckState = CheckState.Checked;\r
237             else\r
238                 mainWindow.check_2PassEncode.CheckState = CheckState.Unchecked;\r
239 \r
240             if (presetQuery.Grayscale == true)\r
241                 mainWindow.check_grayscale.CheckState = CheckState.Checked;\r
242             else\r
243                 mainWindow.check_grayscale.CheckState = CheckState.Unchecked;\r
244 \r
245             mainWindow.drp_videoFramerate.Text = presetQuery.VideoFramerate;\r
246 \r
247             if (presetQuery.TurboFirstPass == true)\r
248                 mainWindow.check_turbo.CheckState = CheckState.Checked;\r
249             else\r
250                 mainWindow.check_turbo.CheckState = CheckState.Unchecked;\r
251 \r
252             if (presetQuery.LargeMP4 == true)\r
253                 mainWindow.check_largeFile.CheckState = CheckState.Checked;\r
254             else\r
255                 mainWindow.check_largeFile.CheckState = CheckState.Unchecked;\r
256 \r
257             if (presetQuery.IpodAtom == true)\r
258                 mainWindow.check_iPodAtom.CheckState = CheckState.Checked;\r
259             else\r
260                 mainWindow.check_iPodAtom.CheckState = CheckState.Unchecked;\r
261 \r
262             if (presetQuery.OptimizeMP4 == true)\r
263                 mainWindow.check_optimiseMP4.CheckState = CheckState.Checked;\r
264             else\r
265                 mainWindow.check_optimiseMP4.CheckState = CheckState.Unchecked;\r
266 \r
267             #endregion\r
268 \r
269             // Audio Settings Tab\r
270             #region Audio\r
271             mainWindow.drp_audioBitrate.Text = presetQuery.AudioBitrate;\r
272             mainWindow.drp_audioSampleRate.Text = presetQuery.AudioSampleBitrate;\r
273             mainWindow.drp_track1Audio.Text = presetQuery.AudioTrack1;\r
274             mainWindow.drp_track2Audio.Text = presetQuery.AudioTrack2;\r
275             mainWindow.drp_audioMixDown.Text = presetQuery.AudioTrackMix;\r
276             mainWindow.drp_subtitle.Text = presetQuery.Subtitles;\r
277 \r
278             if (presetQuery.ForcedSubtitles == true)\r
279             {\r
280                 mainWindow.check_forced.CheckState = CheckState.Checked;\r
281                 mainWindow.check_forced.Enabled = true;\r
282             }\r
283             else\r
284                 mainWindow.check_forced.CheckState = CheckState.Unchecked;\r
285 \r
286             // Dynamic Range Compression (Should be a float but we use double for ease)\r
287             double value = presetQuery.DRC;\r
288             if (value > 0)\r
289                 value = value - 10;\r
290             mainWindow.slider_drc.Value = int.Parse(value.ToString());\r
291 \r
292             double actualValue = presetQuery.DRC / 10;\r
293             mainWindow.lbl_drc.Text = actualValue.ToString();\r
294 \r
295 \r
296             #endregion\r
297 \r
298             // H264 Tab & Preset Name\r
299             #region other\r
300             mainWindow.rtf_h264advanced.Text = presetQuery.H264Query;\r
301 \r
302             // Set the preset name\r
303             mainWindow.groupBox_output.Text = "Output Settings (Preset: " + name + ")";\r
304             #endregion\r
305         }\r
306 \r
307         /*\r
308          * This takes all the widgets on frmMain\r
309          */\r
310         public string GenerateTheQuery(frmMain mainWindow)\r
311         {\r
312 \r
313             // Source tab\r
314             #region source\r
315             string source = mainWindow.text_source.Text;\r
316             string dvdTitle = mainWindow.drp_dvdtitle.Text;\r
317             string chapterStart = mainWindow.drop_chapterStart.Text;\r
318             string chapterFinish = mainWindow.drop_chapterFinish.Text;\r
319             int totalChapters = mainWindow.drop_chapterFinish.Items.Count - 1;\r
320             string dvdChapter = "";\r
321 \r
322             if ((source != "") || (source != "Click 'Browse' to continue"))\r
323                 source = " -i " + '"' + source + '"';\r
324 \r
325             if (dvdTitle == "Automatic")\r
326                 dvdTitle = "";\r
327             else\r
328             {\r
329                 string[] titleInfo = dvdTitle.Split(' ');\r
330                 dvdTitle = " -t " + titleInfo[0];\r
331             }\r
332 \r
333             if (chapterFinish.Equals("Auto") && chapterStart.Equals("Auto"))\r
334                 dvdChapter = "";\r
335             else if (chapterFinish == chapterStart)\r
336                 dvdChapter = " -c " + chapterStart;\r
337             else\r
338                 dvdChapter = " -c " + chapterStart + "-" + chapterFinish;\r
339 \r
340             string querySource = source + dvdTitle + dvdChapter;\r
341             #endregion\r
342 \r
343             // Destination tab\r
344             #region Destination\r
345 \r
346             string destination = mainWindow.text_destination.Text;\r
347             string videoEncoder = mainWindow.drp_videoEncoder.Text;\r
348             string audioEncoder = mainWindow.drp_audioCodec.Text;\r
349             string width = mainWindow.text_width.Text;\r
350             string height = mainWindow.text_height.Text;\r
351 \r
352             if (destination != "")\r
353                 destination = " -o " + '"' + destination + '"'; //'"'+ \r
354 \r
355 \r
356             switch (videoEncoder)\r
357             {\r
358                 case "Mpeg 4":\r
359                     videoEncoder = " -e ffmpeg";\r
360                     break;\r
361                 case "Xvid":\r
362                     videoEncoder = " -e xvid";\r
363                     break;\r
364                 case "H.264":\r
365                     videoEncoder = " -e x264";\r
366                     break;\r
367                 case "H.264 (iPod)":\r
368                     videoEncoder = " -e x264b30";\r
369                     break;\r
370                 default:\r
371                     videoEncoder = " -e x264";\r
372                     break;\r
373             }\r
374 \r
375             switch (audioEncoder)\r
376             {\r
377                 case "AAC":\r
378                     audioEncoder = " -E faac";\r
379                     break;\r
380                 case "MP3":\r
381                     audioEncoder = " -E lame";\r
382                     break;\r
383                 case "Vorbis":\r
384                     audioEncoder = " -E vorbis";\r
385                     break;\r
386                 case "AC3":\r
387                     audioEncoder = " -E ac3";\r
388                     break;\r
389                 default:\r
390                     audioEncoder = " -E faac";\r
391                     break;\r
392             }\r
393 \r
394             if (width != "")\r
395                 width = " -w " + width;\r
396 \r
397 \r
398             if (height == "Auto")\r
399             {\r
400                 height = "";\r
401             }\r
402             else if (height != "")\r
403             {\r
404                 height = " -l " + height;\r
405             }\r
406 \r
407 \r
408             string queryDestination = destination + videoEncoder + audioEncoder + width + height;\r
409             #endregion\r
410 \r
411             // Picture Settings Tab\r
412             #region Picture Settings Tab\r
413 \r
414             string cropSetting = mainWindow.drp_crop.Text;\r
415             string cropTop = mainWindow.text_top.Text;\r
416             string cropBottom = mainWindow.text_bottom.Text;\r
417             string cropLeft = mainWindow.text_left.Text;\r
418             string cropRight = mainWindow.text_right.Text;\r
419             string cropOut = "";\r
420             string deInterlace_Option = mainWindow.drp_deInterlace_option.Text;\r
421             string deinterlace = "";\r
422             string grayscale = "";\r
423             string pixelRatio = "";\r
424             string vfr = "";\r
425             string deblock = "";\r
426             string detelecine = "";\r
427             string lanamorphic = "";\r
428 \r
429 \r
430 \r
431             if (cropSetting == "Automatic")\r
432                 cropOut = "";\r
433             else if (cropSetting == "No Crop")\r
434                 cropOut = " --crop 0:0:0:0 ";\r
435             else\r
436             {\r
437                 if (mainWindow.text_top.Text == "")\r
438                     cropTop = "0";\r
439                 if (mainWindow.text_bottom.Text == "")\r
440                     cropBottom = "0";\r
441                 if (mainWindow.text_left.Text == "")\r
442                     cropLeft = "0";\r
443                 if (mainWindow.text_right.Text == "")\r
444                     cropRight = "0";\r
445 \r
446                 cropOut = " --crop " + cropTop + ":" + cropBottom + ":" + cropLeft + ":" + cropRight;\r
447             }\r
448 \r
449             switch (deInterlace_Option)\r
450             {\r
451                 case "None":\r
452                     deinterlace = "";\r
453                     break;\r
454                 case "Fast":\r
455                     deinterlace = " --deinterlace=fast";\r
456                     break;\r
457                 case "Slow":\r
458                     deinterlace = " --deinterlace=slow";\r
459                     break;\r
460                 case "Slower":\r
461                     deinterlace = " --deinterlace=slower";\r
462                     break;\r
463                 case "Slowest":\r
464                     deinterlace = " --deinterlace=slowest";\r
465                     break;\r
466                 default:\r
467                     deinterlace = "";\r
468                     break;\r
469             }\r
470 \r
471             if (mainWindow.check_grayscale.Checked)\r
472                 grayscale = " -g ";\r
473 \r
474             if (mainWindow.CheckPixelRatio.Checked)\r
475                 pixelRatio = " -p ";\r
476 \r
477             if (mainWindow.check_deblock.Checked)\r
478                 deblock = " --deblock";\r
479 \r
480             if (mainWindow.check_detelecine.Checked)\r
481                 detelecine = " --detelecine";\r
482 \r
483             if (mainWindow.check_vfr.Checked)\r
484                 vfr = " -V ";\r
485 \r
486             if (mainWindow.check_lAnamorphic.Checked)\r
487                 lanamorphic = " -P ";\r
488 \r
489             string queryPictureSettings = cropOut + deinterlace + deblock + detelecine + vfr + grayscale + pixelRatio + lanamorphic;\r
490             #endregion\r
491 \r
492             // Video Settings Tab\r
493             #region Video Settings Tab\r
494 \r
495             string videoBitrate = mainWindow.text_bitrate.Text;\r
496             string videoFilesize = mainWindow.text_filesize.Text;\r
497             double videoQuality = mainWindow.slider_videoQuality.Value;\r
498             string vidQSetting = "";\r
499             string twoPassEncoding = "";\r
500             string videoFramerate = mainWindow.drp_videoFramerate.Text;\r
501             string vid_frame_rate = "";\r
502             string turboH264 = "";\r
503             string largeFile = "";\r
504             string denoise = "";\r
505             string ipodAtom = "";\r
506             string optimizeMP4 = "";\r
507 \r
508             if (videoBitrate != "")\r
509                 videoBitrate = " -b " + videoBitrate;\r
510 \r
511             if (videoFilesize != "")\r
512                 videoFilesize = " -S " + videoFilesize;\r
513 \r
514             // Video Quality Setting\r
515 \r
516             if ((videoQuality == 0))\r
517                 vidQSetting = "";\r
518             else\r
519             {\r
520                 videoQuality = videoQuality / 100;\r
521                 if (videoQuality == 1)\r
522                 {\r
523                     vidQSetting = "1.0";\r
524                 }\r
525                 vidQSetting = " -q " + videoQuality.ToString(new CultureInfo("en-US"));\r
526             }\r
527 \r
528             if (mainWindow.check_2PassEncode.Checked)\r
529                 twoPassEncoding = " -2 ";\r
530 \r
531             if (videoFramerate == "Automatic")\r
532                 vid_frame_rate = "";\r
533             else\r
534             {\r
535                 if (!mainWindow.check_vfr.Checked)\r
536                     vid_frame_rate = " -r " + videoFramerate;\r
537             }\r
538 \r
539             if (mainWindow.check_turbo.Checked)\r
540                 turboH264 = " -T ";\r
541 \r
542             if (mainWindow.check_largeFile.Checked)\r
543                 largeFile = " -4 ";\r
544 \r
545 \r
546             switch (mainWindow.drp_deNoise.Text)\r
547             {\r
548                 case "None":\r
549                     denoise = "";\r
550                     break;\r
551                 case "Weak":\r
552                     denoise = " --denoise=weak";\r
553                     break;\r
554                 case "Medium":\r
555                     denoise = " --denoise=medium";\r
556                     break;\r
557                 case "Strong":\r
558                     denoise = " --denoise=strong";\r
559                     break;\r
560                 default:\r
561                     denoise = "";\r
562                     break;\r
563             }\r
564 \r
565             if (mainWindow.check_iPodAtom.Checked)\r
566                 ipodAtom = " -I ";\r
567 \r
568             if (mainWindow.check_optimiseMP4.Checked)\r
569                 optimizeMP4 = " -O ";\r
570 \r
571 \r
572             string queryVideoSettings = videoBitrate + videoFilesize + vidQSetting + twoPassEncoding + vid_frame_rate + turboH264 + ipodAtom + optimizeMP4 + largeFile + denoise;\r
573             #endregion\r
574 \r
575             // Audio Settings Tab\r
576             #region Audio Settings Tab\r
577 \r
578             string audioBitrate = mainWindow.drp_audioBitrate.Text;\r
579             string audioSampleRate = mainWindow.drp_audioSampleRate.Text;\r
580             string track1 = mainWindow.drp_track1Audio.Text;\r
581             string track2 = mainWindow.drp_track2Audio.Text;\r
582             string audioChannels = "";\r
583             string Mixdown = mainWindow.drp_audioMixDown.Text;\r
584             string SixChannelAudio = "";\r
585             string subtitles = mainWindow.drp_subtitle.Text;\r
586             string subScan = "";\r
587             string forced = "";\r
588             string drc = "";\r
589 \r
590             if (audioBitrate != "")\r
591                 audioBitrate = " -B " + audioBitrate;\r
592 \r
593             if (audioSampleRate != "")\r
594                 audioSampleRate = " -R " + audioSampleRate;\r
595 \r
596             // Audio Track 1\r
597             if (track1 == "Automatic")\r
598                 audioChannels = "";\r
599             else if (track1 == "")\r
600                 audioChannels = "";\r
601             else if (track1 == "None")\r
602                 audioChannels = " -a none";\r
603             else\r
604             {\r
605                 string[] tempSub;\r
606                 tempSub = track1.Split(' ');\r
607                 audioChannels = " -a " + tempSub[0];\r
608             }\r
609 \r
610             // Audio Track 2\r
611             if (audioChannels != "")\r
612             {\r
613                 if ((track2 != "") && (track2 != "None"))\r
614                 {\r
615                     string[] tempSub;\r
616                     tempSub = track2.Split(' ');\r
617                     audioChannels = audioChannels + "," + tempSub[0];\r
618                 }\r
619             }\r
620             else\r
621             {\r
622                 if ((track2 != "") && (track2 != "None"))\r
623                 {\r
624                     string[] tempSub;\r
625                     tempSub = track2.Split(' ');\r
626                     audioChannels = " -a " + tempSub[0];\r
627                 }\r
628             }\r
629 \r
630 \r
631 \r
632             switch (Mixdown)\r
633             {\r
634                 case "Automatic":\r
635                     Mixdown = "";\r
636                     break;\r
637                 case "Mono":\r
638                     Mixdown = "mono";\r
639                     break;\r
640                 case "Stereo":\r
641                     Mixdown = "stereo";\r
642                     break;\r
643                 case "Dolby Surround":\r
644                     Mixdown = "dpl1";\r
645                     break;\r
646                 case "Dolby Pro Logic II":\r
647                     Mixdown = "dpl2";\r
648                     break;\r
649                 case "6 Channel Discrete":\r
650                     Mixdown = "6ch";\r
651                     break;\r
652                 default:\r
653                     Mixdown = "";\r
654                     break;\r
655             }\r
656 \r
657             if (Mixdown != "")\r
658                 SixChannelAudio = " -6 " + Mixdown;\r
659             else\r
660                 SixChannelAudio = "";\r
661 \r
662             if (subtitles == "None")\r
663                 subtitles = "";\r
664             else if (subtitles == "")\r
665                 subtitles = "";\r
666             else if (subtitles == "Autoselect")\r
667             {\r
668                 subScan = " -U ";\r
669                 subtitles = "";\r
670             }\r
671             else\r
672             {\r
673                 string[] tempSub;\r
674                 tempSub = subtitles.Split(' ');\r
675                 subtitles = " -s " + tempSub[0];\r
676             }\r
677 \r
678             if (mainWindow.check_forced.Checked)\r
679                 forced = " -F ";\r
680 \r
681             //Dynamic Range Compression (expects a float but a double is used for ease)\r
682             double value = mainWindow.slider_drc.Value / 10.0;\r
683             value++;\r
684             drc = " -D " + value;\r
685 \r
686             string queryAudioSettings = audioBitrate + audioSampleRate + drc + audioChannels + SixChannelAudio + subScan + subtitles + forced;\r
687             #endregion\r
688 \r
689             // Chapter Markers Tab\r
690             #region Chapter Markers\r
691 \r
692             string ChapterMarkers = "";\r
693 \r
694             if (mainWindow.Check_ChapterMarkers.Checked)\r
695             {\r
696                 Boolean saveCSV = chapterCSVSave(mainWindow);\r
697                 if (saveCSV == false)\r
698                 {\r
699                     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
700                     ChapterMarkers = " -m ";\r
701                 }\r
702                 else\r
703                 {\r
704                     string path = Path.Combine(Path.GetTempPath(), "chapters.csv");\r
705 \r
706                     ChapterMarkers = " --markers=" + "\"" + path + "\"";\r
707                 }\r
708             }\r
709 \r
710             string chapter_markers = ChapterMarkers;\r
711             #endregion\r
712 \r
713             // H264 Tab\r
714             #region  H264 Tab\r
715 \r
716             string h264Advanced = mainWindow.rtf_h264advanced.Text;\r
717 \r
718             if ((h264Advanced == ""))\r
719                 h264Advanced = "";\r
720             else\r
721                 h264Advanced = " -x " + h264Advanced;\r
722 \r
723 \r
724             string h264Settings = h264Advanced;\r
725             #endregion\r
726 \r
727             // Other\r
728             #region Processors / Other\r
729 \r
730             string processors = Properties.Settings.Default.Processors;\r
731             //  Number of Processors Handler\r
732 \r
733             if (processors == "Automatic")\r
734                 processors = "";\r
735             else\r
736                 processors = " -C " + processors + " ";\r
737 \r
738 \r
739             string queryAdvancedSettings = processors;\r
740 \r
741             string verbose = " -v ";\r
742             #endregion\r
743 \r
744             return querySource + queryDestination + queryPictureSettings + queryVideoSettings + h264Settings + queryAudioSettings + ChapterMarkers + queryAdvancedSettings + verbose;\r
745         }\r
746 \r
747         /*\r
748          * Set's up the DataGridView on the Chapters tab (frmMain)\r
749          */\r
750         public void chapterNaming(frmMain mainWindow)\r
751         {\r
752             try\r
753             {\r
754                 mainWindow.data_chpt.Rows.Clear();\r
755                 int i = 0;\r
756                 int rowCount = 0;\r
757                 int start = 0;\r
758                 int finish = 0;\r
759                 if (mainWindow.drop_chapterFinish.Text != "Auto")\r
760                     finish = int.Parse(mainWindow.drop_chapterFinish.Text);\r
761 \r
762                 if (mainWindow.drop_chapterStart.Text != "Auto")\r
763                     start = int.Parse(mainWindow.drop_chapterStart.Text);\r
764 \r
765                 rowCount = finish - (start - 1);\r
766 \r
767                 while (i < rowCount)\r
768                 {\r
769                     DataGridViewRow row = new DataGridViewRow();\r
770 \r
771                     mainWindow.data_chpt.Rows.Insert(i, row);\r
772                     mainWindow.data_chpt.Rows[i].Cells[0].Value = (i + 1);\r
773                     mainWindow.data_chpt.Rows[i].Cells[1].Value = "Chapter " + (i + 1);\r
774                     i++;\r
775                 }\r
776             }\r
777             catch (Exception exc)\r
778             {\r
779                 MessageBox.Show("chapterNaming() Error has occured: \n" + exc.ToString());\r
780             }\r
781         }\r
782 \r
783         /*\r
784          * This function saves the data in the chapters tab, dataGridView into a CSV file called chapters.csv in this applications\r
785          * running directory.\r
786          */\r
787         private Boolean chapterCSVSave(frmMain mainWindow)\r
788         {\r
789             try\r
790             {\r
791                 string path = Path.Combine(Path.GetTempPath(), "chapters.csv");\r
792 \r
793                 StringBuilder csv = new StringBuilder();\r
794 \r
795                 foreach (DataGridViewRow row in mainWindow.data_chpt.Rows)\r
796                 {\r
797                     csv.Append(row.Cells[0].Value.ToString());\r
798                     csv.Append(",");\r
799                     csv.Append(row.Cells[1].Value.ToString());\r
800                     csv.Append(Environment.NewLine);\r
801                 }\r
802                 StreamWriter file = new StreamWriter(path);\r
803                 file.Write(csv.ToString());\r
804                 file.Close();\r
805                 file.Dispose();\r
806                 return true;\r
807 \r
808             }\r
809             catch (Exception exc)\r
810             {\r
811                 MessageBox.Show(exc.ToString(), "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
812                 return false;\r
813             }\r
814         }\r
815 \r
816         // End of Functions\r
817     }\r
818 }\r