OSDN Git Service

WinGui:
[handbrake-jp/handbrake-jp-git.git] / win / C# / HandBrake.ApplicationServices / Utilities / PlistUtility.cs
index c3dacb6..fc44b95 100644 (file)
@@ -6,12 +6,13 @@
 namespace HandBrake.ApplicationServices.Utilities\r
 {\r
     using System;\r
-    using System.Collections;\r
+    using System.Collections.Generic;\r
     using System.IO;\r
     using System.Text;\r
     using System.Windows.Forms;\r
     using System.Xml;\r
 \r
+    using HandBrake.ApplicationServices.Functions;\r
     using HandBrake.ApplicationServices.Model;\r
     using HandBrake.ApplicationServices.Model.Encoding;\r
 \r
@@ -24,23 +25,23 @@ namespace HandBrake.ApplicationServices.Utilities
          * TODO:\r
          * - Update with the new vfr,pfr,cfr keys\r
          * - Clean up this code, it's pretty nasty right now.\r
-         **/ \r
+         **/\r
 \r
         #region Import\r
 \r
-        public static QueryParserUtility Import(string filename)\r
+        public static EncodeTask Import(string filename)\r
         {\r
             XmlNode root = loadFile(filename);\r
             if (root == null) return null;\r
 \r
             // We'll query a query parser object and use it's public var structures to store all the data.\r
             // This will allow the preset loader logic to be used instead of writing custom logic just for this file.\r
-            QueryParserUtility queryParsed = new QueryParserUtility();\r
+            EncodeTask parsed = new EncodeTask();\r
             string qualityMode = string.Empty;\r
 \r
             #region Get a List of Audio Track Objects\r
             XmlNode audioListDict = root.ChildNodes[2].ChildNodes[0].FirstChild.ChildNodes[1];\r
-            ArrayList audioTracks = new ArrayList();\r
+            List<AudioTrack> audioTracks = new List<AudioTrack>();\r
 \r
             for (int i = 0; i < audioListDict.ChildNodes.Count; i++)\r
             {\r
@@ -75,7 +76,7 @@ namespace HandBrake.ApplicationServices.Utilities
                     }\r
                 }\r
                 audioTracks.Add(track);\r
-                queryParsed.AudioInformation = audioTracks;\r
+                parsed.AudioTracks = audioTracks;\r
             }\r
             #endregion\r
 \r
@@ -93,16 +94,16 @@ namespace HandBrake.ApplicationServices.Utilities
                 {\r
                     // Output Settings\r
                     case "FileFormat":\r
-                        queryParsed.Format = value;\r
+                        parsed.OutputFormat = Converters.GetFileFormat(value);\r
                         break;\r
                     case "Mp4HttpOptimize":\r
-                        queryParsed.OptimizeMP4 = value == "1";\r
+                        parsed.OptimizeMP4 = value == "1";\r
                         break;\r
                     case "Mp4LargeFile":\r
-                        queryParsed.LargeMP4 = value == "1";\r
+                        parsed.IPod5GSupport = value == "1";\r
                         break;\r
                     case "Mp4iPodCompatible":\r
-                        queryParsed.IpodAtom = value == "1";\r
+                        parsed.IPod5GSupport = value == "1";\r
                         break;\r
 \r
                     // Picture Settings\r
@@ -110,42 +111,58 @@ namespace HandBrake.ApplicationServices.Utilities
                         // Not used\r
                         break;\r
                     case "PictureTopCrop":\r
-                        queryParsed.CropTop = value;\r
+                        parsed.Cropping.Top = int.Parse(value);\r
                         break;\r
                     case "PictureBottomCrop":\r
-                        queryParsed.CropBottom = value;\r
+                        parsed.Cropping.Bottom = int.Parse(value);\r
                         break;\r
                     case "PictureLeftCrop":\r
-                        queryParsed.CropLeft = value;\r
+                        parsed.Cropping.Left = int.Parse(value);\r
                         break;\r
                     case "PictureRightCrop":\r
-                        queryParsed.CropRight = value;\r
+                        parsed.Cropping.Right = int.Parse(value);\r
                         break;\r
                     case "PictureHeight":\r
-                        queryParsed.Height = int.Parse(value);\r
+                        parsed.Height = int.Parse(value);\r
                         break;\r
                     case "PictureWidth":\r
-                        queryParsed.Width = int.Parse(value);\r
+                        parsed.Width = int.Parse(value);\r
                         break;\r
                     case "PictureKeepRatio":\r
-                        queryParsed.KeepDisplayAsect = value == "1";\r
+                        parsed.KeepDisplayAspect = value == "1";\r
                         break;\r
                     case "PicturePAR":\r
-                        queryParsed.AnamorphicMode = int.Parse(value);\r
+                        switch (value)\r
+                        {\r
+                                \r
+                            case "0":\r
+                                parsed.Anamorphic = Anamorphic.None;\r
+                                break;\r
+                            default:\r
+                                parsed.Anamorphic = Anamorphic.Strict;\r
+                                break;\r
+                                case "2":\r
+                                parsed.Anamorphic = Anamorphic.Loose;\r
+                                break;\r
+                                case "3":\r
+                                parsed.Anamorphic = Anamorphic.Custom;\r
+                                break;\r
+\r
+                        }\r
                         break;\r
 \r
                     // Filters\r
                     case "PictureDeblock":\r
-                        queryParsed.DeBlock = int.Parse(value);\r
+                        parsed.Deblock = int.Parse(value);\r
                         break;\r
                     case "PictureDecomb":\r
-                        queryParsed.Decomb = "Off";\r
+                        parsed.Decomb = Decomb.Off;\r
                         // Don't place custom here as it's handled in the filter panel\r
-                        if (value == "2") queryParsed.Decomb = "Default";\r
+                        if (value == "2") parsed.Decomb = Decomb.Default;\r
                         break;\r
                     case "PictureDecombCustom":\r
                         if (value != string.Empty)\r
-                            queryParsed.Decomb = value;\r
+                            parsed.CustomDecomb = value;\r
                         break;\r
                     case "PictureDecombDeinterlace":\r
                         // Not Used\r
@@ -154,116 +171,116 @@ namespace HandBrake.ApplicationServices.Utilities
                         switch (value)\r
                         {\r
                             case "0":\r
-                                queryParsed.DeInterlace = "Off";\r
+                                parsed.Deinterlace = Deinterlace.Off;\r
                                 break;\r
                             // Don't place custom here as it's handled in the filter panel\r
                             case "2":\r
-                                queryParsed.DeInterlace = "Fast";\r
+                                parsed.Deinterlace = Deinterlace.Fast;\r
                                 break;\r
                             case "3":\r
-                                queryParsed.DeInterlace = "Slow";\r
+                                parsed.Deinterlace = Deinterlace.Slow;\r
                                 break;\r
                             case "4":\r
-                                queryParsed.DeInterlace = "Slowest";\r
+                                parsed.Deinterlace = Deinterlace.Slower;\r
                                 break;\r
                         }\r
                         break;\r
                     case "PictureDeinterlaceCustom":\r
                         if (value != string.Empty)\r
-                            queryParsed.DeInterlace = value;\r
+                            parsed.CustomDeinterlace = value;\r
                         break;\r
                     case "PictureDenoise":\r
                         switch (value)\r
                         {\r
                             case "0":\r
-                                queryParsed.DeNoise = "Off";\r
+                                parsed.Denoise = Denoise.Off;\r
                                 break;\r
                             // Don't place custom here as it's handled in the filter panel\r
                             case "2":\r
-                                queryParsed.DeNoise = "Weak";\r
+                                parsed.Denoise = Denoise.Weak;\r
                                 break;\r
                             case "3":\r
-                                queryParsed.DeNoise = "Medium";\r
+                                parsed.Denoise = Denoise.Medium;\r
                                 break;\r
                             case "4":\r
-                                queryParsed.DeNoise = "Strong";\r
+                                parsed.Denoise = Denoise.Strong;\r
                                 break;\r
                         }\r
 \r
                         break;\r
                     case "PictureDenoiseCustom":\r
                         if (value != string.Empty)\r
-                            queryParsed.DeNoise = value;\r
+                            parsed.CustomDenoise = value;\r
                         break;\r
                     case "PictureDetelecine":\r
-                        queryParsed.DeTelecine = "Off";\r
-                        if (value == "1") queryParsed.DeTelecine = "Default";\r
+                        parsed.Detelecine = Detelecine.Off;\r
+                        if (value == "1") parsed.Detelecine = Detelecine.Default;\r
                         break;\r
                     case "PictureDetelecineCustom":\r
                         if (value != string.Empty)\r
-                            queryParsed.DeTelecine = value;\r
+                            parsed.CustomDetelecine = value;\r
                         break;\r
 \r
                     // Video Tab\r
                     case "VideoAvgBitrate":\r
-                        queryParsed.AverageVideoBitrate = value;\r
+                        parsed.VideoBitrate = int.Parse(value);\r
                         break;\r
                     case "VideoEncoder":\r
-                        queryParsed.VideoEncoder = value;\r
+                        parsed.VideoEncoder = Converters.GetVideoEncoder(value);\r
                         break;\r
                     case "VideoFramerate":\r
-                        queryParsed.VideoFramerate = value;\r
+                        parsed.Framerate = int.Parse(value);\r
                         break;\r
                     case "VideoGrayScale":\r
-                        queryParsed.Grayscale = value == "1";\r
+                        parsed.Grayscale = value == "1";\r
                         break;\r
                     case "VideoQualitySlider":\r
-                        queryParsed.VideoQuality = float.Parse(value);\r
+                        parsed.Quality = double.Parse(value);\r
                         break;\r
                     case "VideoQualityType": // The Type of Quality Mode used\r
                         qualityMode = value;\r
                         break;\r
                     case "VideoTargetSize":\r
-                        queryParsed.VideoTargetSize = value;\r
+                        parsed.TargetSize = int.Parse(value);\r
                         break;\r
                     case "VideoTurboTwoPass":\r
-                        queryParsed.TurboFirstPass = value == "1";\r
+                        parsed.TurboFirstPass = value == "1";\r
                         break;\r
                     case "VideoTwoPass":\r
-                        queryParsed.TwoPass = value == "1";\r
+                        parsed.TwoPass = value == "1";\r
                         break;\r
 \r
                     // Chapter Markers Tab\r
                     case "ChapterMarkers":\r
-                        queryParsed.ChapterMarkers = value == "1";\r
+                        parsed.IncludeChapterMarkers = value == "1";\r
                         break;\r
 \r
                     // Advanced x264 tab\r
                     case "x264Option":\r
-                        queryParsed.H264Query = value;\r
+                        parsed.X264Options = value;\r
                         break;\r
 \r
                     // Preset Information\r
                     case "PresetBuildNumber":\r
-                        queryParsed.PresetBuildNumber = int.Parse(value);\r
+                        parsed.PresetBuildNumber = int.Parse(value);\r
                         break;\r
                     case "PresetDescription":\r
-                        queryParsed.PresetDescription = value;\r
+                        parsed.PresetDescription = value;\r
                         break;\r
                     case "PresetName":\r
-                        queryParsed.PresetName = value;\r
+                        parsed.PresetName = value;\r
                         break;\r
                     case "Type":\r
-                        queryParsed.Type = value;\r
+                        parsed.Type = value;\r
                         break;\r
                     case "UsesMaxPictureSettings":\r
-                        queryParsed.UsesMaxPictureSettings = value == "1";\r
+                        parsed.UsesMaxPictureSettings = value == "1";\r
                         break;\r
                     case "UsesPictureFilters":\r
-                        queryParsed.UsesPictureFilters = value == "1";\r
+                        parsed.UsesPictureFilters = value == "1";\r
                         break;\r
                     case "UsesPictureSettings":\r
-                        queryParsed.UsesPictureSettings = value == "1";\r
+                        parsed.UsesPictureSettings = value == "1";\r
                         break;\r
                 }\r
             }\r
@@ -272,21 +289,21 @@ namespace HandBrake.ApplicationServices.Utilities
             switch (qualityMode)\r
             {\r
                 case "0": // FileSize\r
-                    queryParsed.VideoQuality = -1;\r
-                    queryParsed.AverageVideoBitrate = null;\r
+                    parsed.Quality = null;\r
+                    parsed.VideoBitrate = null;\r
                     break;\r
                 case "1": // Avg Bitrate\r
-                    queryParsed.VideoQuality = -1;\r
-                    queryParsed.VideoTargetSize = null;\r
+                    parsed.Quality = null;\r
+                    parsed.TargetSize = null;\r
                     break;\r
                 case "2": // CQ\r
-                    queryParsed.AverageVideoBitrate = null;\r
-                    queryParsed.VideoTargetSize = null;\r
+                    parsed.VideoBitrate = null;\r
+                    parsed.TargetSize = null;\r
                     break;\r
             }\r
             #endregion\r
 \r
-            return queryParsed;\r
+            return parsed;\r
         }\r
 \r
         private static XmlNode loadFile(string filename)\r
@@ -343,7 +360,7 @@ namespace HandBrake.ApplicationServices.Utilities
         /// </param>\r
         public static void Export(string path, Preset preset)\r
         {\r
-            QueryParserUtility parsed = QueryParserUtility.Parse(preset.Query);\r
+            EncodeTask parsed = QueryParserUtility.Parse(preset.Query);\r
             XmlTextWriter xmlWriter = new XmlTextWriter(path, Encoding.UTF8) { Formatting = Formatting.Indented };\r
 \r
             // Header\r
@@ -379,7 +396,7 @@ namespace HandBrake.ApplicationServices.Utilities
         /// <param name="preset">\r
         /// The preset.\r
         /// </param>\r
-        private static void WritePreset(XmlTextWriter xmlWriter, QueryParserUtility parsed, Preset preset)\r
+        private static void WritePreset(XmlTextWriter xmlWriter, EncodeTask parsed, Preset preset)\r
         {\r
             xmlWriter.WriteStartElement("dict");\r
             AudioListArrayDict(xmlWriter, parsed);\r
@@ -400,93 +417,93 @@ namespace HandBrake.ApplicationServices.Utilities
         /// <param name="preset">\r
         /// The preset.\r
         /// </param>\r
-        private static void AddEncodeSettings(XmlTextWriter xmlWriter, QueryParserUtility parsed, Preset preset)\r
+        private static void AddEncodeSettings(XmlTextWriter xmlWriter, EncodeTask parsed, Preset preset)\r
         {\r
-            AddEncodeElement(xmlWriter, "ChapterMarkers", "integer", parsed.ChapterMarkers ? "1" : "0");\r
+            AddEncodeElement(xmlWriter, "ChapterMarkers", "integer", parsed.IncludeChapterMarkers ? "1" : "0");\r
             AddEncodeElement(xmlWriter, "Default", "integer", "0");\r
-            AddEncodeElement(xmlWriter, "FileFormat", "string", parsed.Format.ToUpper() + " file");\r
+            AddEncodeElement(xmlWriter, "FileFormat", "string", Converters.GetFileFormat(parsed.OutputFormat) + " file");\r
             AddBooleanElement(xmlWriter, "Folder", false);\r
             AddEncodeElement(xmlWriter, "Mp4HttpOptimize", "integer", parsed.OptimizeMP4 ? "1" : "0");\r
-            AddEncodeElement(xmlWriter, "Mp4LargeFile", "integer", parsed.LargeMP4 ? "1" : "0");\r
-            AddEncodeElement(xmlWriter, "Mp4iPodCompatible", "integer", parsed.IpodAtom ? "1" : "0");\r
+            AddEncodeElement(xmlWriter, "Mp4LargeFile", "integer", parsed.LargeFile ? "1" : "0");\r
+            AddEncodeElement(xmlWriter, "Mp4iPodCompatible", "integer", parsed.IPod5GSupport ? "1" : "0");\r
             AddEncodeElement(xmlWriter, "PictureAutoCrop", "integer", "1");\r
-            AddEncodeElement(xmlWriter, "PictureBottomCrop", "integer", parsed.CropBottom);\r
+            AddEncodeElement(xmlWriter, "PictureBottomCrop", "integer", parsed.Cropping.Bottom.ToString());\r
 \r
             // Filters\r
-            AddEncodeElement(xmlWriter, "PictureDeblock", "integer", parsed.DeBlock.ToString());\r
+            AddEncodeElement(xmlWriter, "PictureDeblock", "integer", parsed.Deblock.ToString());\r
 \r
             switch (parsed.Decomb)\r
             {\r
-                case "Off":\r
+                case Decomb.Off:\r
                     AddEncodeElement(xmlWriter, "PictureDecomb", "integer", "0");\r
                     AddEncodeElement(xmlWriter, "PictureDecombCustom", "string", string.Empty);\r
                     break;\r
-                case "Default":\r
+                case Decomb.Default:\r
                     AddEncodeElement(xmlWriter, "PictureDecomb", "integer", "1");\r
                     AddEncodeElement(xmlWriter, "PictureDecombCustom", "string", string.Empty);\r
                     break;\r
                 default:\r
                     AddEncodeElement(xmlWriter, "PictureDecomb", "integer", "2");\r
-                    AddEncodeElement(xmlWriter, "PictureDecombCustom", "string", parsed.Decomb);\r
+                    AddEncodeElement(xmlWriter, "PictureDecombCustom", "string", parsed.CustomDecomb);\r
                     break;\r
             }\r
-            AddEncodeElement(xmlWriter, "PictureDecombDeinterlace", "integer", parsed.Decomb != "Off" ? "0" : "1"); \r
+            AddEncodeElement(xmlWriter, "PictureDecombDeinterlace", "integer", parsed.Decomb != Decomb.Off ? "0" : "1");\r
 \r
-            switch (parsed.DeInterlace)\r
+            switch (parsed.Deinterlace)\r
             {\r
-                case "Off":\r
+                case Deinterlace.Off:\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlace", "integer", "0");\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlaceCustom", "string", string.Empty);\r
                     break;\r
-                case "Fast":\r
+                case Deinterlace.Fast:\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlace", "integer", "1");\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlaceCustom", "string", string.Empty);\r
                     break;\r
-                case "Slow":\r
+                case Deinterlace.Slow:\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlace", "integer", "2");\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlaceCustom", "string", string.Empty);\r
                     break;\r
-                case "Slower":\r
+                case Deinterlace.Slower:\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlace", "integer", "3");\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlaceCustom", "string", string.Empty);\r
                     break;\r
                 default:\r
                     AddEncodeElement(xmlWriter, "PictureDeinterlace", "integer", "4");\r
-                    AddEncodeElement(xmlWriter, "PictureDeinterlaceCustom", "string", parsed.DeInterlace);\r
+                    AddEncodeElement(xmlWriter, "PictureDeinterlaceCustom", "string", parsed.CustomDeinterlace);\r
                     break;\r
             }\r
 \r
-            switch (parsed.DeNoise)\r
+            switch (parsed.Denoise)\r
             {\r
-                case "Off":\r
+                case Denoise.Off:\r
                     AddEncodeElement(xmlWriter, "PictureDenoise", "integer", "0");\r
                     AddEncodeElement(xmlWriter, "PictureDenoiseCustom", "string", string.Empty);\r
                     break;\r
-                case "Weak":\r
+                case Denoise.Weak:\r
                     AddEncodeElement(xmlWriter, "PictureDenoise", "integer", "1");\r
                     AddEncodeElement(xmlWriter, "PictureDenoiseCustom", "string", string.Empty);\r
                     break;\r
-                case "Medium":\r
+                case Denoise.Medium:\r
                     AddEncodeElement(xmlWriter, "PictureDenoise", "integer", "2");\r
                     AddEncodeElement(xmlWriter, "PictureDenoiseCustom", "string", string.Empty);\r
                     break;\r
-                case "Strong":\r
+                case Denoise.Strong:\r
                     AddEncodeElement(xmlWriter, "PictureDenoise", "integer", "3");\r
                     AddEncodeElement(xmlWriter, "PictureDenoiseCustom", "string", string.Empty);\r
                     break;\r
                 default:\r
                     AddEncodeElement(xmlWriter, "PictureDenoise", "integer", "4");\r
-                    AddEncodeElement(xmlWriter, "PictureDenoiseCustom", "string", parsed.DeNoise);\r
+                    AddEncodeElement(xmlWriter, "PictureDenoiseCustom", "string", parsed.CustomDenoise);\r
                     break;\r
             }\r
 \r
             int detelecine;\r
-            switch (parsed.DeTelecine)\r
+            switch (parsed.Detelecine)\r
             {\r
-                case "Off":\r
+                case Detelecine.Off:\r
                     detelecine = 0;\r
                     break;\r
-                case "Default":\r
+                case Detelecine.Default:\r
                     detelecine = 2;\r
                     break;\r
                 default:\r
@@ -495,16 +512,16 @@ namespace HandBrake.ApplicationServices.Utilities
             }\r
 \r
             AddEncodeElement(xmlWriter, "PictureDetelecine", "integer", detelecine.ToString());\r
-            AddEncodeElement(xmlWriter, "PictureDetelecineCustom", "string", detelecine == 1 ? parsed.DeTelecine : string.Empty);\r
+            AddEncodeElement(xmlWriter, "PictureDetelecineCustom", "string", detelecine == 1 ? parsed.CustomDecomb : string.Empty);\r
 \r
             // Picture Settings\r
             AddEncodeElement(xmlWriter, "PictureHeight", "integer", parsed.Height.ToString());\r
-            AddEncodeElement(xmlWriter, "PictureKeepRatio", "integer", parsed.KeepDisplayAsect ? "1" : "0");\r
-            AddEncodeElement(xmlWriter, "PictureLeftCrop", "integer", parsed.CropLeft);\r
-            AddEncodeElement(xmlWriter, "PictureModulus", "integer", parsed.AnamorphicModulus.ToString());\r
-            AddEncodeElement(xmlWriter, "PicturePAR", "integer", parsed.AnamorphicMode.ToString());\r
-            AddEncodeElement(xmlWriter, "PictureRightCrop", "integer", parsed.CropRight);\r
-            AddEncodeElement(xmlWriter, "PictureTopCrop", "integer", parsed.CropTop);\r
+            AddEncodeElement(xmlWriter, "PictureKeepRatio", "integer", parsed.KeepDisplayAspect ? "1" : "0");\r
+            AddEncodeElement(xmlWriter, "PictureLeftCrop", "integer", parsed.Cropping.Left.ToString());\r
+            AddEncodeElement(xmlWriter, "PictureModulus", "integer", parsed.Modulus.ToString());\r
+            AddEncodeElement(xmlWriter, "PicturePAR", "integer", ((int)parsed.Anamorphic).ToString());\r
+            AddEncodeElement(xmlWriter, "PictureRightCrop", "integer", parsed.Cropping.Right.ToString());\r
+            AddEncodeElement(xmlWriter, "PictureTopCrop", "integer", parsed.Cropping.Top.ToString());\r
             AddEncodeElement(xmlWriter, "PictureWidth", "integer", parsed.Width.ToString());\r
 \r
             // Preset Information\r
@@ -519,25 +536,25 @@ namespace HandBrake.ApplicationServices.Utilities
             AddEncodeElement(xmlWriter, "UsesPictureSettings", "integer", "2");\r
 \r
             // Video Settings\r
-            AddEncodeElement(xmlWriter, "VideoAvgBitrate", "string", parsed.AverageVideoBitrate);\r
-            AddEncodeElement(xmlWriter, "VideoEncoder", "string", parsed.VideoEncoder);\r
-            AddEncodeElement(xmlWriter, "VideoFramerate", "string", parsed.VideoFramerate);\r
-            AddEncodeElement(xmlWriter, "VideFrameratePFR", "integer", parsed.Pfr ? "1" : "0");\r
+            AddEncodeElement(xmlWriter, "VideoAvgBitrate", "string", parsed.VideoBitrate.ToString());\r
+            AddEncodeElement(xmlWriter, "VideoEncoder", "string", Converters.GetGUIVideoEncoder(parsed.VideoEncoder));\r
+            AddEncodeElement(xmlWriter, "VideoFramerate", "string", parsed.Framerate.ToString());\r
+            AddEncodeElement(xmlWriter, "VideFrameratePFR", "integer", parsed.FramerateMode == FramerateMode.PFR ? "1" : "0");\r
             AddEncodeElement(xmlWriter, "VideoGrayScale", "integer", parsed.Grayscale ? "1" : "0");\r
-            AddEncodeElement(xmlWriter, "VideoQualitySlider", "real", parsed.VideoQuality.ToString());\r
+            AddEncodeElement(xmlWriter, "VideoQualitySlider", "real", parsed.Quality.ToString());\r
 \r
             int videoQualityType = 0;\r
-            if (!string.IsNullOrEmpty(parsed.VideoTargetSize)) videoQualityType = 0;\r
-            else if (!string.IsNullOrEmpty(parsed.AverageVideoBitrate)) videoQualityType = 1;\r
-            else if (parsed.VideoQuality != 0) videoQualityType = 2;\r
+            if (parsed.TargetSize != null) videoQualityType = 0;\r
+            else if (parsed.VideoBitrate != null) videoQualityType = 1;\r
+            else if (parsed.Quality != null) videoQualityType = 2;\r
 \r
             AddEncodeElement(xmlWriter, "VideoQualityType", "integer", videoQualityType.ToString());\r
-            AddEncodeElement(xmlWriter, "VideoTargetSize", "string", parsed.VideoTargetSize);\r
+            AddEncodeElement(xmlWriter, "VideoTargetSize", "string", parsed.TargetSize.ToString());\r
             AddEncodeElement(xmlWriter, "VideoTurboTwoPass", "integer", parsed.TurboFirstPass ? "1" : "0");\r
             AddEncodeElement(xmlWriter, "VideoTwoPass", "integer", parsed.TwoPass ? "1" : "0");\r
 \r
             // x264 string\r
-            AddEncodeElement(xmlWriter, "x264Option", "string", parsed.H264Query);\r
+            AddEncodeElement(xmlWriter, "x264Option", "string", parsed.X264Options);\r
         }\r
 \r
         /// <summary>\r
@@ -598,14 +615,14 @@ namespace HandBrake.ApplicationServices.Utilities
         /// <param name="parsed">\r
         /// The parsed.\r
         /// </param>\r
-        private static void AudioListArrayDict(XmlTextWriter xmlWriter, QueryParserUtility parsed)\r
+        private static void AudioListArrayDict(XmlTextWriter xmlWriter, EncodeTask parsed)\r
         {\r
             xmlWriter.WriteStartElement("key");\r
             xmlWriter.WriteString("AudioList");\r
             xmlWriter.WriteEndElement();\r
 \r
             xmlWriter.WriteStartElement("array");\r
-            foreach (AudioTrack track in parsed.AudioInformation)\r
+            foreach (AudioTrack track in parsed.AudioTracks)\r
             {\r
                 AddAudioItem(xmlWriter, track);\r
             }\r
@@ -635,7 +652,7 @@ namespace HandBrake.ApplicationServices.Utilities
             xmlWriter.WriteElementString("string", audioTrack.MixDown);\r
 \r
             xmlWriter.WriteElementString("key", "AudioSamplerate");\r
-            xmlWriter.WriteElementString("string",  audioTrack.SampleRate);\r
+            xmlWriter.WriteElementString("string", audioTrack.SampleRate);\r
 \r
             xmlWriter.WriteElementString("key", "AudioTrack");\r
             xmlWriter.WriteElementString("integer", audioTrack.Track);\r