OSDN Git Service

Build System: disable avs, lavf, and ffms input to x264 as per j45
[handbrake-jp/handbrake-jp-git.git] / win / C# / Presets / Export.cs
1 /*  Export.cs $\r
2         \r
3            This file is part of the HandBrake source code.\r
4            Homepage: <http://handbrake.fr/>.\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.Text;\r
9 using System.Xml;\r
10 \r
11 namespace Handbrake.Presets\r
12 {\r
13     class Export\r
14     {\r
15         // WARNING This file is not complete!!!!!!\r
16 \r
17         // TODO \r
18         // 1. Hookup all the widgets in the GUI so it exports real values.\r
19         // 2. Check for any missing key/value pairs\r
20         // 3. Test with MacGui / Cleanup code  / Retest\r
21 \r
22         private XmlTextWriter writer;\r
23 \r
24         public void ExportMacPreset(string path)\r
25         {\r
26             writer = new XmlTextWriter("C:\\test.xml", Encoding.UTF8);\r
27 \r
28             // Header\r
29             writer.WriteStartDocument();\r
30             writer.WriteDocType("plist", "-//Apple//DTD PLIST 1.0//EN", @"http://www.apple.com/DTDs/PropertyList-1.0.dtd", null);\r
31 \r
32             writer.WriteStartElement("plist");\r
33             writer.WriteStartElement("array");\r
34             \r
35             // Add New Preset Here. Can write multiple presets here if required in future.\r
36             WritePreset();\r
37 \r
38             // Footer\r
39             writer.WriteEndElement();\r
40             writer.WriteEndElement();\r
41 \r
42             writer.WriteEndDocument();\r
43 \r
44             // Closeout\r
45             writer.Close();\r
46         }\r
47 \r
48         // Primary function for writing dict.\r
49         private void WritePreset()\r
50         {\r
51             writer.WriteStartElement("dict");\r
52             AudioListArrayDict();\r
53             AddEncodeSettings();\r
54 \r
55             writer.WriteEndElement();\r
56         }\r
57 \r
58         // Add all the encode settings to the preset\r
59         private void AddEncodeSettings()\r
60         {\r
61             AddEncodeElement("ChapterMarkers", "integer", "");\r
62             AddEncodeElement("Default", "integer", "");\r
63             AddEncodeElement("FileFormat", "String", "");\r
64             AddBooleanElement("Folder", true);\r
65             AddEncodeElement("Mp4HttpOptimize", "integer", "");\r
66             AddEncodeElement("Mp4LargeFile", "integer", "");\r
67             AddEncodeElement("Mp4iPodCompatible", "integer", "");\r
68             AddEncodeElement("PictureAutoCrop", "integer", "");\r
69             AddEncodeElement("PictureBottomCrop", "integer", "");\r
70             AddEncodeElement("PictureDeblock", "integer", "");\r
71             AddEncodeElement("PictureDecomb", "integer", "");\r
72             AddEncodeElement("PictureDecombCustom", "string", "");\r
73             AddEncodeElement("PictureDecombDeinterlace", "integer", "");\r
74             AddEncodeElement("PictureDeinterlace", "integer", "");\r
75             AddEncodeElement("PictureDeinterlaceCustom", "string", "");\r
76             AddEncodeElement("PictureDenoise", "integer", "");\r
77             AddEncodeElement("PictureDenoiseCustom", "string", "");\r
78             AddEncodeElement("PictureDetelecine", "integer", "");\r
79             AddEncodeElement("PictureDetelecineCustom", "string", "");\r
80             AddEncodeElement("PictureHeight", "integer", "");\r
81             AddEncodeElement("PictureKeepRatio", "integer", "");\r
82             AddEncodeElement("PictureLeftCrop", "integer", "");\r
83             AddEncodeElement("PicturePAR", "integer", "");\r
84             AddEncodeElement("PictureRightCrop", "integer", "");\r
85             AddEncodeElement("PictureTopCrop", "integer", "");\r
86             AddEncodeElement("PictureWidth", "integer", "");\r
87             AddEncodeElement("PresetBuildNumber", "string", "");\r
88             AddEncodeElement("PresetDescription", "string", "");\r
89             AddEncodeElement("PresetName", "string", "");\r
90             AddEncodeElement("Type", "integer", "");\r
91             AddEncodeElement("UsesMaxPictureSettings", "integer", "");\r
92             AddEncodeElement("UsesPictureFilters", "integer", "");\r
93             AddEncodeElement("UsesPictureSettings", "integer", "");\r
94             AddEncodeElement("VideoAvgBitrate", "string", "");\r
95             AddEncodeElement("VideoEncoder", "string", "");\r
96             AddEncodeElement("VideoFramerate", "string", "");\r
97             AddEncodeElement("VideoGrayScale", "integer", "");\r
98             AddEncodeElement("VideoQualitySlider", "real", "");\r
99             AddEncodeElement("VideoQualityType", "integer", "");\r
100             AddEncodeElement("VideoTargetSize", "string", "");\r
101             AddEncodeElement("VideoTurboTwoPass", "integer", "");\r
102             AddEncodeElement("VideoTwoPass", "integer", "");\r
103             AddEncodeElement("x264Option", "string", "");\r
104         }\r
105 \r
106         // Add Preset setting + value\r
107         private void AddBooleanElement(string keyName, Boolean value)\r
108         {\r
109             writer.WriteStartElement("key");\r
110             writer.WriteString(keyName);\r
111             writer.WriteEndElement();\r
112             if (value)\r
113             {\r
114                 writer.WriteStartElement("true");\r
115                 writer.WriteEndElement();\r
116             }\r
117             else\r
118             {\r
119                 writer.WriteStartElement("false");\r
120                 writer.WriteEndElement();\r
121             }\r
122         }\r
123         private void AddEncodeElement(string keyName, string type, string value)\r
124         {\r
125             writer.WriteElementString("key", keyName);\r
126             writer.WriteElementString(type, value);\r
127         }\r
128 \r
129         // Add List of audio tracks\r
130         private void AudioListArrayDict()\r
131         {\r
132             writer.WriteStartElement("key");\r
133             writer.WriteString("AudioList");\r
134             writer.WriteEndElement();\r
135 \r
136             writer.WriteStartElement("array");\r
137             AddAudioItem();\r
138             AddAudioItem();\r
139             writer.WriteEndElement();\r
140         }\r
141         private void AddAudioItem()\r
142         {\r
143             int bitrate = 448;\r
144             string encoder = "AC3 Passthru";\r
145             string mixdown = "AC3 Passthru";\r
146             string sample = "Auto";\r
147             int track = 1;\r
148             double drc = 0.0;\r
149             string desc = "English (AC3) (5.1 ch)";\r
150 \r
151             writer.WriteStartElement("dict");\r
152 \r
153             writer.WriteElementString("key", "AudioBitrate");\r
154             writer.WriteElementString("string", bitrate.ToString());\r
155 \r
156             writer.WriteElementString("key", "AudioEncoder");\r
157             writer.WriteElementString("string", encoder);\r
158 \r
159             writer.WriteElementString("key", "AudioMixdown");\r
160             writer.WriteElementString("string", mixdown);\r
161 \r
162             writer.WriteElementString("key", "AudioSamplerate");\r
163             writer.WriteElementString("string", sample);\r
164 \r
165             writer.WriteElementString("key", "AudioTrack");\r
166             writer.WriteElementString("integer", track.ToString());\r
167 \r
168             writer.WriteElementString("key", "AudioTrackDRCSlider");\r
169             writer.WriteElementString("real", drc.ToString());\r
170 \r
171             writer.WriteElementString("key", "AudioTrackDescription");\r
172             writer.WriteElementString("string", desc);\r
173 \r
174             writer.WriteEndElement();\r
175         }\r
176     }\r
177 }