]> granicus.if.org Git - handbrake/commitdiff
WinGui:
authorsr55 <sr55.hb@outlook.com>
Sun, 25 Jan 2015 19:13:54 +0000 (19:13 +0000)
committersr55 <sr55.hb@outlook.com>
Sun, 25 Jan 2015 19:13:54 +0000 (19:13 +0000)
- Change the internal presets.dat file which stores built-in presets to JSON.
- Starting to remove the CLI handling code.
- Some assembly info updates.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6812 b64f7644-9d1e-0410-96f1-a4d463321fa5

win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj
win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs.Nightly.tmpl
win/CS/HandBrake.ApplicationServices/Properties/AssemblyInfo.cs.tmpl
win/CS/HandBrake.ApplicationServices/Utilities/QueryParserUtility.cs [deleted file]
win/CS/HandBrake.ApplicationServices/Utilities/SystemInfo.cs
win/CS/HandBrake.Interop/HandBrakeInterop/Properties/AssemblyInfo.cs
win/CS/HandBrakeWPF/Presets.dat
win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs
win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs.tmpl
win/CS/HandBrakeWPF/Services/Presets/PresetService.cs

index 30740ab36dd12007d01da3088ffc9c8d815cf976..63844f7ab6f8afb90268c0a0a32b5e539c92f234 100644 (file)
     <Compile Include="Utilities\GeneralUtilities.cs" />\r
     <Compile Include="Utilities\LanguageUtilities.cs" />\r
     <Compile Include="Utilities\QueryGeneratorUtility.cs" />\r
-    <Compile Include="Utilities\QueryParserUtility.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <None Include="app.config" />\r
index edd3b7f961433f0a3bbd9b659d06f818437f02e7..1052671f75a326d75e5794d428ec13c867d50aa1 100644 (file)
@@ -16,7 +16,7 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyConfiguration("")]\r
 [assembly: AssemblyCompany("HandBrake Team")]\r
 [assembly: AssemblyProduct("HandBrake")]\r
-[assembly: AssemblyCopyright("Copyright © 2014 HandBrake Team")]\r
+[assembly: AssemblyCopyright("Copyright © 2003-2015 HandBrake Team")]\r
 [assembly: AssemblyTrademark("")]\r
 [assembly: AssemblyCulture("")]\r
 \r
index 34f9eabe397271b881b515025083f1fe1f604168..d913a2a96533fa63b58fd1de1e95c034804c9da3 100644 (file)
@@ -16,7 +16,7 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyConfiguration("")]\r
 [assembly: AssemblyCompany("HandBrake Team")]\r
 [assembly: AssemblyProduct("HandBrake")]\r
-[assembly: AssemblyCopyright("Copyright © 2014 HandBrake Team")]\r
+[assembly: AssemblyCopyright("Copyright © 2003-2015 HandBrake Team")]\r
 [assembly: AssemblyTrademark("")]\r
 [assembly: AssemblyCulture("")]\r
 \r
@@ -38,5 +38,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers \r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("0.11.0.$WCREV$")]\r
+[assembly: AssemblyVersion("0.1.0.$WCREV$")]\r
 [assembly: NeutralResourcesLanguage("")]\r
diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/QueryParserUtility.cs b/win/CS/HandBrake.ApplicationServices/Utilities/QueryParserUtility.cs
deleted file mode 100644 (file)
index 4955cc3..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-// --------------------------------------------------------------------------------------------------------------------\r
-// <copyright file="QueryParserUtility.cs" company="HandBrake Project (http://handbrake.fr)">\r
-//   This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License.\r
-// </copyright>\r
-// <summary>\r
-//   Parse a CLI Query\r
-// </summary>\r
-// --------------------------------------------------------------------------------------------------------------------\r
-\r
-namespace HandBrake.ApplicationServices.Utilities\r
-{\r
-    using System;\r
-    using System.Collections.ObjectModel;\r
-    using System.Globalization;\r
-    using System.Linq;\r
-    using System.Text.RegularExpressions;\r
-\r
-    using HandBrake.ApplicationServices.Model;\r
-    using HandBrake.ApplicationServices.Services.Encode.Model;\r
-    using HandBrake.ApplicationServices.Services.Encode.Model.Models;\r
-    using HandBrake.ApplicationServices.Services.Encode.Model.Models.Video;\r
-    using HandBrake.Interop.Model;\r
-    using HandBrake.Interop.Model.Encoding;\r
-\r
-    /// <summary>\r
-    /// Parse a CLI Query\r
-    /// </summary>\r
-    public class QueryParserUtility\r
-    {\r
-        /**\r
-         * TODO\r
-         * - Add support for PointToPointMode = Seconds or Frames\r
-         **/\r
-\r
-        /// <summary>\r
-        /// The Culture\r
-        /// </summary>\r
-        private static readonly CultureInfo Culture = new CultureInfo("en-US", false);\r
-\r
-        /// <summary>\r
-        /// Takes in a query which can be in any order and parses it. \r
-        /// All varibles are then set so they can be used elsewhere.\r
-        /// </summary>\r
-        /// <param name="input">A ClI Query</param>\r
-        /// <returns>A Parsed Query</returns>\r
-        public static EncodeTask Parse(string input)\r
-        {\r
-            var parsed = new EncodeTask();\r
-\r
-            #region Regular Expressions\r
-\r
-            // Source\r
-            Match title = Regex.Match(input, @"-t ([0-9]+)");\r
-            Match chapters = Regex.Match(input, @"-c ([0-9-]+)");\r
-\r
-            // Output Settings\r
-            Match format = Regex.Match(input, @"-f ([a-zA-Z0-9]+)");\r
-            Match grayscale = Regex.Match(input, @" -g");\r
-            Match ipodAtom = Regex.Match(input, @" -I");\r
-\r
-            // Picture Settings Tab\r
-            Match width = Regex.Match(input, @"-w ([0-9]+)");\r
-            Match height = Regex.Match(input, @"-l ([0-9]+)");\r
-            Match maxWidth = Regex.Match(input, @"-X ([0-9]+)");\r
-            Match maxHeight = Regex.Match(input, @"-Y ([0-9]+)");\r
-            Match crop = Regex.Match(input, @"--crop ([0-9]*):([0-9]*):([0-9]*):([0-9]*)");\r
-\r
-            Match looseAnamorphic = Regex.Match(input, @"--loose-anamorphic");\r
-            Match strictAnamorphic = Regex.Match(input, @"--strict-anamorphic");\r
-            Match customAnamorphic = Regex.Match(input, @"--custom-anamorphic");\r
-\r
-            Match keepDisplayAsect = Regex.Match(input, @"--keep-display-aspect");\r
-            Match displayWidth = Regex.Match(input, @"--display-width ([0-9]*)");\r
-            Match pixelAspect = Regex.Match(input, @"--pixel-aspect ([0-9]*):([0-9]*)");\r
-            Match modulus = Regex.Match(input, @"--modulus ([0-9]*)");\r
-\r
-            // Picture Settings - Filters\r
-            Match decomb = Regex.Match(input, @" --decomb");\r
-            Match decombValue = Regex.Match(input, @" --decomb=([a-zA-Z0-9.:""\\]*)");\r
-            Match deinterlace = Regex.Match(input, @"--deinterlace=\""([a-zA-Z0-9.:]*)\""");\r
-            Match denoise = Regex.Match(input, @"--denoise=\""([a-zA-Z0-9.:]*)\""");\r
-            Match nlmeans = Regex.Match(input, @"--nlmeans=\""([a-zA-Z0-9.:]*)\""");\r
-            Match nlmeansTune = Regex.Match(input, @"--nlmeans-tune=\""([a-zA-Z0-9.:]*)\""");\r
-            Match deblock = Regex.Match(input, @"--deblock=([0-9:]*)");\r
-            Match detelecine = Regex.Match(input, @"--detelecine");\r
-            Match detelecineValue = Regex.Match(input, @" --detelecine=\""([a-zA-Z0-9.:]*)\""");\r
-\r
-            // Video Settings Tab\r
-            Match videoEncoder = Regex.Match(input, @"-e ([a-zA-Z0-9]+)");\r
-            Match videoFramerate = Regex.Match(input, @"-r ([0-9.]+)");\r
-            Match videoBitrate = Regex.Match(input, @"-b ([0-9]+)");\r
-            Match videoQuality = Regex.Match(input, @"-q ([0-9.]+)");\r
-            Match twoPass = Regex.Match(input, @" -2");\r
-            Match turboFirstPass = Regex.Match(input, @" -T");\r
-            Match optimizeMP4 = Regex.Match(input, @" -O");\r
-            Match pfr = Regex.Match(input, @" --pfr");\r
-            Match cfr = Regex.Match(input, @" --cfr");\r
-\r
-            // Audio Settings Tab\r
-            Match audioTrackMixes = Regex.Match(input, @"-6 ([0-9a-zA-Z,]+)");\r
-            Match audioEncoders = Regex.Match(input, @"-E ([a-zA-Z0-9+,:\*]+)");\r
-            Match audioBitrates = Regex.Match(input, @"-B ([0-9a-zA-Z,]+)"); // Auto = a-z\r
-            Match audioSampleRates = Regex.Match(input, @"-R ([0-9a-zA-Z.,]+)"); // Auto = a-z\r
-            Match drcValues = Regex.Match(input, @"-D ([0-9.,]+)");\r
-            Match gainValues = Regex.Match(input, @"--gain=([0-9.,-]+)");\r
-            Match fallbackEncoder = Regex.Match(input, @"--audio-fallback([a-zA-Z0-9:=\s ]*)");\r
-            Match allowedPassthru = Regex.Match(input, @"--audio-copy-mask([a-zA-Z0-9:,=\s ]*)");\r
-\r
-            // Chapters Tab\r
-            Match chapterMarkers = Regex.Match(input, @" -m");\r
-            Match chapterMarkersFileMode = Regex.Match(input, @"--markers");\r
-\r
-            // Advanced Tab\r
-            Match advanced = Regex.Match(input, @"-x ([.,/a-zA-Z0-9=:-]*)");\r
-            Match videoLevel = Regex.Match(input, @"--encoder-level([=a-zA-Z0-9.\s ]*)");\r
-            Match videoProfile = Regex.Match(input, @"--encoder-profile([=a-zA-Z0-9\s ]*)");\r
-            Match videoTune = Regex.Match(input, @"--encoder-tune([=,a-zA-Z0-9\s ]*)");\r
-            Match videoPreset = Regex.Match(input, @"--encoder-preset([=a-zA-Z0-9\s ]*)");\r
-\r
-            #endregion\r
-\r
-            #region Set Varibles\r
-\r
-            try\r
-            {\r
-                #region Source Tab\r
-\r
-                if (title.Success)\r
-                {\r
-                    parsed.Title = int.Parse(title.ToString().Replace("-t ", string.Empty));\r
-                }\r
-\r
-                if (chapters.Success)\r
-                {\r
-                    parsed.PointToPointMode = PointToPointMode.Chapters;\r
-                    string[] actTitles = chapters.ToString().Replace("-c ", string.Empty).Split('-');\r
-                    parsed.StartPoint = int.Parse(actTitles[0]);\r
-                    if (actTitles.Length > 1)\r
-                    {\r
-                        parsed.EndPoint = int.Parse(actTitles[1]);\r
-                    }\r
-\r
-                    if ((parsed.StartPoint == 1) && (parsed.EndPoint == 0))\r
-                    {\r
-                        parsed.EndPoint = parsed.StartPoint;\r
-                    }\r
-                }\r
-\r
-                #endregion\r
-\r
-                #region Output Settings\r
-\r
-                if (format.Success)\r
-                {\r
-                    parsed.OutputFormat = Converters.GetFileFormat(format.Groups[1].ToString());\r
-                }\r
-                parsed.IPod5GSupport = ipodAtom.Success;\r
-                parsed.OptimizeMP4 = optimizeMP4.Success;\r
-\r
-                #endregion\r
-\r
-                #region Picture Tab\r
-\r
-                if (width.Success)\r
-                    parsed.Width = int.Parse(width.Groups[0].Value.Replace("-w ", string.Empty));\r
-\r
-                if (height.Success)\r
-                    parsed.Height = int.Parse(height.Groups[0].Value.Replace("-l ", string.Empty));\r
-\r
-                if (maxWidth.Success)\r
-                    parsed.MaxWidth = int.Parse(maxWidth.Groups[0].Value.Replace("-X ", string.Empty));\r
-\r
-                if (maxHeight.Success)\r
-                    parsed.MaxHeight = int.Parse(maxHeight.Groups[0].Value.Replace("-Y ", string.Empty));\r
-\r
-                if (crop.Success)\r
-                {\r
-                    try\r
-                    {\r
-                        string values = crop.ToString().Replace("--crop ", string.Empty);\r
-                        string[] actCropValues = values.Split(':');\r
-                        parsed.Cropping = new Cropping(\r
-                            int.Parse(actCropValues[0]),\r
-                            int.Parse(actCropValues[1]),\r
-                            int.Parse(actCropValues[2]),\r
-                            int.Parse(actCropValues[3]));\r
-                        parsed.HasCropping = true;\r
-                    }\r
-                    catch (Exception)\r
-                    {\r
-                        parsed.Cropping = null;\r
-                        parsed.HasCropping = false;\r
-                        // No need to do anything.\r
-                    }\r
-                }\r
-\r
-                if (strictAnamorphic.Success)\r
-                    parsed.Anamorphic = Anamorphic.Strict;\r
-                else if (looseAnamorphic.Success)\r
-                    parsed.Anamorphic = Anamorphic.Loose;\r
-                else if (customAnamorphic.Success)\r
-                    parsed.Anamorphic = Anamorphic.Custom;\r
-                else\r
-                    parsed.Anamorphic = Anamorphic.None;\r
-\r
-                parsed.KeepDisplayAspect = keepDisplayAsect.Success;\r
-\r
-                if (displayWidth.Success)\r
-                    parsed.DisplayWidth =\r
-                        double.Parse(displayWidth.Groups[0].Value.Replace("--display-width ", string.Empty), Culture);\r
-\r
-                if (pixelAspect.Success)\r
-                    parsed.PixelAspectX = int.Parse(pixelAspect.Groups[1].Value.Replace("--pixel-aspect ", string.Empty));\r
-\r
-                if (pixelAspect.Success && pixelAspect.Groups.Count >= 3)\r
-                    parsed.PixelAspectY = int.Parse(pixelAspect.Groups[2].Value.Replace("--pixel-aspect ", string.Empty));\r
-\r
-                if (modulus.Success)\r
-                    parsed.Modulus = int.Parse(modulus.Groups[0].Value.Replace("--modulus ", string.Empty));\r
-\r
-                #endregion\r
-\r
-                #region Filters\r
-\r
-                parsed.Decomb = Decomb.Off;\r
-                if (decomb.Success)\r
-                {\r
-                    parsed.Decomb = Decomb.Default;\r
-                    if (decombValue.Success)\r
-                    {\r
-                        string value = decombValue.ToString().Replace("--decomb=", string.Empty).Replace("\"", string.Empty).Trim();\r
-\r
-                        if (value == "bob")\r
-                        {\r
-                            parsed.Decomb = Decomb.Bob;\r
-                        }\r
-                        else if (value == "fast")\r
-                        {\r
-                            parsed.Decomb = Decomb.Fast;\r
-                        }\r
-                        else\r
-                        {\r
-                            parsed.CustomDecomb = value;\r
-                            parsed.Decomb = parsed.CustomDecomb == "7:2:6:9:1:80" ? Decomb.Fast : Decomb.Custom;\r
-                        }\r
-                    }\r
-                }\r
-\r
-                parsed.Deinterlace = Deinterlace.Off;\r
-                if (deinterlace.Success)\r
-                {\r
-                    switch (deinterlace.ToString().Replace("--deinterlace=", string.Empty).Replace("\"", string.Empty).ToLower())\r
-                    {\r
-                        case "fast":\r
-                            parsed.Deinterlace = Deinterlace.Fast;\r
-                            break;\r
-                        case "slow":\r
-                            parsed.Deinterlace = Deinterlace.Slow;\r
-                            break;\r
-                        case "slower":\r
-                            parsed.Deinterlace = Deinterlace.Slower;\r
-                            break;\r
-                        case "bob":\r
-                            parsed.Deinterlace = Deinterlace.Bob;\r
-                            break;\r
-                        default:\r
-                            parsed.Deinterlace = Deinterlace.Custom;\r
-                            parsed.CustomDeinterlace = deinterlace.ToString().Replace("--deinterlace=", string.Empty).Replace("\"", string.Empty).ToLower();\r
-                            break;\r
-                    }\r
-                }\r
-\r
-                parsed.Denoise = Denoise.Off;\r
-                if (denoise.Success)\r
-                {\r
-                    parsed.Denoise = Denoise.hqdn3d;\r
-                    switch (denoise.ToString().Replace("--denoise=", string.Empty).Replace("\"", string.Empty))\r
-                    {\r
-                        case "weak":\r
-                            parsed.DenoisePreset = DenoisePreset.Weak;\r
-                            break;\r
-                        case "medium":\r
-                            parsed.DenoisePreset = DenoisePreset.Medium;\r
-                            break;\r
-                        case "strong":\r
-                            parsed.DenoisePreset = DenoisePreset.Strong;\r
-                            break;\r
-                        default:\r
-                            parsed.DenoisePreset = DenoisePreset.Custom;\r
-                            parsed.CustomDenoise = denoise.ToString().Replace("--denoise=", string.Empty).Replace("\"", string.Empty);\r
-                            break;\r
-                    }\r
-                }\r
-\r
-                if (nlmeans.Success)\r
-                {\r
-                    parsed.Denoise = Denoise.NLMeans;\r
-                    switch (nlmeans.ToString().Replace("--nlmeans=", string.Empty).Replace("\"", string.Empty))\r
-                    {\r
-                        case "ultralight":\r
-                            parsed.DenoisePreset = DenoisePreset.Ultralight;\r
-                            break;\r
-                        case "light":\r
-                            parsed.DenoisePreset = DenoisePreset.Light;\r
-                            break;\r
-                        case "medium":\r
-                            parsed.DenoisePreset = DenoisePreset.Medium;\r
-                            break;\r
-                        case "strong":\r
-                            parsed.DenoisePreset = DenoisePreset.Strong;\r
-                            break;\r
-                    }\r
-\r
-                    if (nlmeansTune.Success)\r
-                    {\r
-                        switch (nlmeansTune.ToString().Replace("--nlmeans-tune=", string.Empty).Replace("\"", string.Empty))\r
-                        {\r
-                            case "animation":\r
-                                parsed.DenoiseTune = DenoiseTune.Animation;\r
-                                break;\r
-                            case "film":\r
-                                parsed.DenoiseTune = DenoiseTune.Film;\r
-                                break;\r
-                            case "grain":\r
-                                parsed.DenoiseTune = DenoiseTune.Grain;\r
-                                break;\r
-                            case "highmotion":\r
-                                parsed.DenoiseTune = DenoiseTune.HighMotion;\r
-                                break;\r
-                        }                      \r
-                    }\r
-                }\r
-\r
-                parsed.Deblock = 0;\r
-                if (deblock.Success)\r
-                {\r
-                    int dval;\r
-                    int.TryParse(deblock.ToString().Replace("--deblock=", string.Empty), out dval);\r
-                    parsed.Deblock = dval;\r
-                }\r
-\r
-                parsed.Detelecine = Detelecine.Off;\r
-                if (detelecine.Success)\r
-                {\r
-                    parsed.Detelecine = Detelecine.Default;\r
-                    if (detelecineValue.Success)\r
-                    {\r
-                        parsed.CustomDetelecine = detelecineValue.ToString().Replace("--detelecine=", string.Empty).Replace("\"", string.Empty);\r
-                        parsed.Detelecine = Detelecine.Custom;\r
-                    }\r
-                }\r
-\r
-                #endregion\r
-\r
-                #region Video Settings Tab\r
-\r
-                parsed.VideoEncoder = videoEncoder.Success\r
-                                          ? Converters.GetVideoEncoder(videoEncoder.ToString().Replace("-e ", string.Empty))\r
-                                          : VideoEncoder.FFMpeg;\r
-\r
-                if (videoFramerate.Success)\r
-                {\r
-                    double fps;\r
-                    double.TryParse(videoFramerate.Groups[1].ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out fps);\r
-                    parsed.Framerate = fps;\r
-                }\r
-\r
-                if (pfr.Success)\r
-                    parsed.FramerateMode = FramerateMode.PFR;\r
-                else if (cfr.Success)\r
-                    parsed.FramerateMode = FramerateMode.CFR;\r
-                else\r
-                    parsed.FramerateMode = FramerateMode.VFR; // Default to VFR\r
-\r
-                parsed.Grayscale = grayscale.Success;\r
-                parsed.TwoPass = twoPass.Success;\r
-                parsed.TurboFirstPass = turboFirstPass.Success;\r
-\r
-                if (videoBitrate.Success)\r
-                {\r
-                    parsed.VideoEncodeRateType = VideoEncodeRateType.AverageBitrate;\r
-                    parsed.VideoBitrate = int.Parse(videoBitrate.ToString().Replace("-b ", string.Empty));\r
-                }\r
-\r
-                if (videoQuality.Success)\r
-                {\r
-                    float quality = float.Parse(videoQuality.ToString().Replace("-q ", string.Empty), Culture);\r
-                    parsed.Quality = quality;\r
-\r
-                    parsed.VideoEncodeRateType = VideoEncodeRateType.ConstantQuality;\r
-                }\r
-\r
-                #endregion\r
-\r
-                #region Audio Tab\r
-\r
-                // Find out how many tracks we need to add by checking how many encoders or audio tracks are selected.\r
-                int encoderCount = 0;\r
-                if (audioEncoders.Success)\r
-                {\r
-                    string[] audioDataCounters = audioEncoders.ToString().Replace("-E ", string.Empty).Split(',');\r
-                    encoderCount = audioDataCounters.Length;\r
-                }\r
-\r
-                // Get the data from the regular expression results\r
-                string[] trackMixes = null;\r
-                string[] trackEncoders = null;\r
-                string[] trackBitrates = null;\r
-                string[] trackSamplerates = null;\r
-                string[] trackDRCvalues = null;\r
-                string[] trackGainValues = null;\r
-\r
-                if (audioTrackMixes.Success)\r
-                    trackMixes = audioTrackMixes.ToString().Replace("-6 ", string.Empty).Split(',');\r
-                if (audioEncoders.Success)\r
-                    trackEncoders = audioEncoders.ToString().Replace("-E ", string.Empty).Split(',');\r
-                if (audioBitrates.Success)\r
-                    trackBitrates = audioBitrates.ToString().Replace("-B ", string.Empty).Split(',');\r
-                if (audioSampleRates.Success)\r
-                    trackSamplerates = audioSampleRates.ToString().Replace("-R ", string.Empty).Split(',');\r
-                if (drcValues.Success)\r
-                    trackDRCvalues = drcValues.ToString().Replace("-D ", string.Empty).Split(',');\r
-                if (gainValues.Success)\r
-                    trackGainValues = gainValues.ToString().Replace("--gain=", string.Empty).Split(',');\r
-\r
-                // Create new Audio Track Classes and store them in the ArrayList\r
-                ObservableCollection<AudioTrack> allAudioTrackInfo = new ObservableCollection<AudioTrack>();\r
-                for (int x = 0; x < encoderCount; x++)\r
-                {\r
-                    AudioTrack track = new AudioTrack();\r
-\r
-                    if (trackMixes != null)\r
-                        if (trackMixes.Length >= (x + 1)) // Audio Mix\r
-                            track.MixDown = Converters.GetAudioMixDown(Converters.GetMixDown(trackMixes[x].Trim()));\r
-\r
-                    if (trackEncoders != null)\r
-                        if (trackEncoders.Length >= (x + 1)) // Audio Mix\r
-                            track.Encoder = Converters.GetAudioEncoderFromCliString(trackEncoders[x].Trim());\r
-\r
-                    if (trackBitrates != null)\r
-                        if (trackBitrates.Length >= (x + 1)) // Audio Encoder\r
-                            track.Bitrate = int.Parse(trackBitrates[x].Trim() == "auto" ? "0" : trackBitrates[x].Trim());\r
-\r
-                    if (trackSamplerates != null)\r
-                        if (trackSamplerates.Length >= (x + 1)) // Audio SampleRate\r
-                            track.SampleRate = double.Parse(trackSamplerates[x].Replace("Auto", "0").Trim(), Culture);\r
-\r
-                    if (trackDRCvalues != null)\r
-                        if (trackDRCvalues.Length >= (x + 1)) // Audio DRC Values\r
-                            track.DRC = double.Parse(trackDRCvalues[x].Trim(), Culture);\r
-\r
-                    if (trackGainValues != null)\r
-                        if (trackGainValues.Length >= (x + 1)) // Audio DRC Values\r
-                            track.Gain = int.Parse(trackGainValues[x].Trim());\r
-\r
-                    allAudioTrackInfo.Add(track);\r
-                }\r
-\r
-                parsed.AudioTracks = allAudioTrackInfo;\r
-\r
-                if (fallbackEncoder.Success)\r
-                {\r
-                    parsed.AllowedPassthruOptions.AudioEncoderFallback =\r
-                        Converters.GetAudioEncoderFromCliString(fallbackEncoder.Groups[1].ToString().Trim());\r
-                }\r
-\r
-                if (allowedPassthru.Success)\r
-                {\r
-                    string[] allowedEncoders = allowedPassthru.Groups[1].ToString().Trim().Split(',');\r
-\r
-                    parsed.AllowedPassthruOptions.AudioAllowAACPass = allowedEncoders.Contains("aac");\r
-                    parsed.AllowedPassthruOptions.AudioAllowAC3Pass = allowedEncoders.Contains("ac3");\r
-                    parsed.AllowedPassthruOptions.AudioAllowDTSHDPass = allowedEncoders.Contains("dtshd");\r
-                    parsed.AllowedPassthruOptions.AudioAllowDTSPass = allowedEncoders.Contains("dts");\r
-                    parsed.AllowedPassthruOptions.AudioAllowMP3Pass = allowedEncoders.Contains("mp3");\r
-                }\r
-\r
-                #endregion\r
-\r
-                #region Chapters Tab\r
-\r
-                if (chapterMarkersFileMode.Success || chapterMarkers.Success)\r
-                    parsed.IncludeChapterMarkers = true;\r
-\r
-                #endregion\r
-\r
-                #region Advanced and other\r
-\r
-                if (advanced.Success)\r
-                    parsed.AdvancedEncoderOptions = advanced.ToString().Replace("-x ", string.Empty);\r
-\r
-                if (videoPreset.Success)\r
-                {\r
-                    string preset = videoPreset.ToString().Replace("--encoder-preset", string.Empty).Replace("=", string.Empty).Trim();\r
-                    parsed.VideoPreset = new VideoPreset(preset, preset);\r
-                }\r
-\r
-                if (videoProfile.Success)\r
-                {\r
-                    string profile = videoProfile.ToString().Replace("--encoder-profile", string.Empty).Replace("=", string.Empty).Trim();\r
-                    parsed.VideoProfile = new VideoProfile(profile, profile);\r
-                }\r
-\r
-                if (videoLevel.Success)\r
-                {\r
-                    string level = videoLevel.ToString().Replace("--encoder-level", string.Empty).Replace("=", string.Empty).Trim();\r
-                    parsed.VideoLevel = new VideoLevel(level, level);\r
-                }\r
-\r
-                if (videoTune.Success)\r
-                {\r
-                    string tuneOptions = videoTune.ToString().Replace("--encoder-tune", string.Empty).Replace("=", string.Empty).Trim();\r
-\r
-                    if (tuneOptions.Contains("fastdecode"))\r
-                    {\r
-                        parsed.VideoTunes.Add(new VideoTune("fastdecode", "fastdecode"));\r
-                    }                \r
-\r
-                    // Remove these options. They are not in the dropdown.\r
-                    tuneOptions = tuneOptions.Replace("fastdecode", string.Empty).Replace(",", string.Empty);\r
-                    if (!string.IsNullOrEmpty(tuneOptions.Trim()))\r
-                    {\r
-                        parsed.VideoTunes.Add(new VideoTune(tuneOptions, tuneOptions));\r
-                    }\r
-                }\r
-\r
-                #endregion\r
-            }\r
-            catch (Exception exc)\r
-            {\r
-                throw new Exception("An error has occured in the QueryParser Utility.", exc);\r
-            }\r
-\r
-            #endregion\r
-\r
-            return parsed;\r
-        }\r
-    }\r
-}
\ No newline at end of file
index df1211528e3dfa506861cbcc2bb63f73987a1405..7ec730330e201ea0235867e5f5ae2712c962ec05 100644 (file)
@@ -12,7 +12,6 @@ namespace HandBrake.ApplicationServices.Utilities
     using System;\r
     using System.Collections.Generic;\r
     using System.Management;\r
-    using System.Text.RegularExpressions;\r
     using System.Windows.Forms;\r
 \r
     using HandBrake.Interop.HbLib;\r
@@ -87,36 +86,6 @@ namespace HandBrake.ApplicationServices.Utilities
             }\r
         }\r
 \r
-        /// <summary>\r
-        /// Gets a value indicating whether is hsw or newer.\r
-        /// </summary>\r
-        public static bool IsHswOrNewer\r
-        {\r
-            get\r
-            {\r
-                // TODO replace with a call to libhb\r
-                string cpu = GetCpuCount.ToString();\r
-                if (cpu.Contains("Intel"))\r
-                {\r
-                    Match match = Regex.Match(cpu, "([0-9]{4})");\r
-                    if (match.Success)\r
-                    {\r
-                        string cpuId = match.Groups[0].ToString();\r
-                        int cpuNumber;\r
-                        if (int.TryParse(cpuId, out cpuNumber))\r
-                        {\r
-                            if (cpuNumber > 4000)\r
-                            {\r
-                                return true;\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-\r
-                return false;\r
-            }\r
-        }\r
-\r
         /// <summary>\r
         /// Gets the get gpu driver version.\r
         /// </summary>\r
index 15a1558841729118fcccdb90831b9d5abfcc9ef9..d7678dfd041ea8cacac418baec58c9eb6d81d897 100644 (file)
@@ -10,7 +10,7 @@ using System.Runtime.InteropServices;
 [assembly: AssemblyConfiguration("")]\r
 [assembly: AssemblyCompany("HandBrake Team")]\r
 [assembly: AssemblyProduct("HandBrake.Interop")]\r
-[assembly: AssemblyCopyright("Copyright © 2014 HandBrake Team")]\r
+[assembly: AssemblyCopyright("Copyright © 2015 HandBrake Team")]\r
 [assembly: AssemblyTrademark("")]\r
 [assembly: AssemblyCulture("")]\r
 \r
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
 // You can specify all the values or you can default the Build and Revision Numbers \r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("1.52.0.0")]\r
-[assembly: AssemblyFileVersion("1.52.0.0")]\r
+[assembly: AssemblyVersion("2.0.0.0")]\r
+[assembly: AssemblyFileVersion("2.0.0.0")]\r
index 0edf6b02f8f9a6c1cffa5bca4343a33ff3fc24cc..9ecb25fa98ba6d93ac206c42bbd33ea6f44ed43b 100644 (file)
-< Devices\r
-\r
-   + Universal:  -e x264  -q 20.0 -r 30 --pfr  -a 1,1 -E ffaac,copy:ac3 -B 160,160 -6 dpl2,none -R Auto,Auto -D 0.0,0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -X 720 -Y 576 --loose-anamorphic --modulus 2 -m --encoder-preset fast --encoder-profile baseline --encoder-level 3.0\r
-\r
-   + iPod:  -e x264  -q 22.0 -r 30 --pfr  -a 1 -E ffaac -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -I -X 320 -Y 240 --modulus 2 -m --encoder-preset medium --encoder-profile baseline --encoder-level 1.3\r
-\r
-   + iPhone & iPod touch:  -e x264  -q 22.0 -r 30 --pfr  -a 1 -E ffaac -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 -X 960 -Y 640 --loose-anamorphic --modulus 2 -m --encoder-preset medium --encoder-profile high --encoder-level 3.1\r
-\r
-   + iPad:  -e x264  -q 20.0 -r 30 --pfr  -a 1 -E ffaac -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 -X 1280 -Y 720 --loose-anamorphic --modulus 2 -m --encoder-preset medium --encoder-profile high --encoder-level 3.1\r
-\r
-   + AppleTV:  -e x264  -q 20.0 -r 30 --pfr  -a 1,1 -E ffaac,copy:ac3 -B 160,160 -6 dpl2,none -R Auto,Auto -D 0.0,0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 -X 960 -Y 720 --loose-anamorphic --modulus 2 -m --encoder-preset medium --encoder-profile high --encoder-level 3.1 -x qpmin=4:cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500\r
-\r
-   + AppleTV 2:  -e x264  -q 20.0 -r 30 --pfr  -a 1,1 -E ffaac,copy:ac3 -B 160,160 -6 dpl2,none -R Auto,Auto -D 0.0,0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 -X 1280 -Y 720 --loose-anamorphic --modulus 2 -m --encoder-preset medium --encoder-profile high --encoder-level 3.1\r
-\r
-   + AppleTV 3:  -e x264  -q 20.0 -r 30 --pfr  -a 1,1 -E ffaac,copy:ac3 -B 160,160 -6 dpl2,none -R Auto,Auto -D 0.0,0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 -X 1920 -Y 1080 --decomb=fast --loose-anamorphic --modulus 2 -m --encoder-preset medium --encoder-profile high --encoder-level 4.0\r
-\r
-   + Android:  -e x264  -q 22.0 -r 30 --pfr  -a 1 -E ffaac -B 128 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -X 720 -Y 576 --loose-anamorphic --modulus 2 --encoder-preset medium --encoder-profile main --encoder-level 3.0\r
-\r
-   + Android Tablet:  -e x264  -q 22.0 -r 30 --pfr  -a 1 -E ffaac -B 128 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -X 1280 -Y 720 --loose-anamorphic --modulus 2 --encoder-preset medium --encoder-profile main --encoder-level 3.1\r
-\r
-   + Windows Phone 8:  -e x264  -q 22.0 -r 30 --pfr  -a 1 -E ffaac -B 128 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -X 1280 -Y 720 --modulus 2 --encoder-preset medium --encoder-profile main --encoder-level 3.1\r
-\r
->\r
-\r
-< Regular\r
-\r
-   + Normal:  -e x264  -q 20.0 -a 1 -E ffaac -B 160 -6 dpl2 -R Auto -D 0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 --loose-anamorphic --modulus 2 -m --encoder-preset veryfast --encoder-profile main --encoder-level 4.0\r
-\r
-   + High Profile:  -e x264  -q 20.0 -a 1,1 -E ffaac,copy:ac3 -B 160,160 -6 dpl2,none -R Auto,Auto -D 0.0,0.0 --audio-copy-mask aac,ac3,dtshd,dts,mp3 --audio-fallback ffac3 -f mp4 -4 --decomb --loose-anamorphic --modulus 2 -m --encoder-preset medium --encoder-profile high --encoder-level 4.1\r
-\r
->
\ No newline at end of file
+[\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "Universal",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 720,\r
+      "MaxHeight": 576,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        },\r
+        {\r
+          "AudioEncoderDisplayValue": "AC3 Passthru",\r
+          "AudioMixdownDisplayValue": "Automatic",\r
+          "BitRateDisplayValue": "Auto",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 6,\r
+          "Gain": 0,\r
+          "MixDown": 2,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": true,\r
+          "CannotSetBitrate": true,\r
+          "IsLossless": true,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "Baseline",\r
+        "ShortName": "baseline"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.0",\r
+        "ShortName": "3.0"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Fast",\r
+        "ShortName": "fast"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": true,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "iPod",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": true,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 320,\r
+      "MaxHeight": 240,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 0,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": true,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 22.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "Baseline",\r
+        "ShortName": "baseline"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "1.3",\r
+        "ShortName": "1.3"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Resolution: x\r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "iPhone & iPod touch",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 960,\r
+      "MaxHeight": 640,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 22.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "High",\r
+        "ShortName": "high"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.1",\r
+        "ShortName": "3.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "iPad",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 1280,\r
+      "MaxHeight": 720,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "High",\r
+        "ShortName": "high"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.1",\r
+        "ShortName": "3.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "AppleTV",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 960,\r
+      "MaxHeight": 720,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        },\r
+        {\r
+          "AudioEncoderDisplayValue": "AC3 Passthru",\r
+          "AudioMixdownDisplayValue": "Automatic",\r
+          "BitRateDisplayValue": "Auto",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 6,\r
+          "Gain": 0,\r
+          "MixDown": 2,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": true,\r
+          "CannotSetBitrate": true,\r
+          "IsLossless": true,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": "qpmin=4:cabac=0:ref=2:b-pyramid=none:weightb=0:weightp=0:vbv-maxrate=9500:vbv-bufsize=9500",\r
+      "VideoProfile": {\r
+        "DisplayName": "High",\r
+        "ShortName": "high"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.1",\r
+        "ShortName": "3.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": true,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "AppleTV 2",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 1280,\r
+      "MaxHeight": 720,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        },\r
+        {\r
+          "AudioEncoderDisplayValue": "AC3 Passthru",\r
+          "AudioMixdownDisplayValue": "Automatic",\r
+          "BitRateDisplayValue": "Auto",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 6,\r
+          "Gain": 0,\r
+          "MixDown": 2,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": true,\r
+          "CannotSetBitrate": true,\r
+          "IsLossless": true,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "High",\r
+        "ShortName": "high"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.1",\r
+        "ShortName": "3.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": true,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "AppleTV 3",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 1920,\r
+      "MaxHeight": 1080,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 3,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        },\r
+        {\r
+          "AudioEncoderDisplayValue": "AC3 Passthru",\r
+          "AudioMixdownDisplayValue": "Automatic",\r
+          "BitRateDisplayValue": "Auto",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 6,\r
+          "Gain": 0,\r
+          "MixDown": 2,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": true,\r
+          "CannotSetBitrate": true,\r
+          "IsLossless": true,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "High",\r
+        "ShortName": "high"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "4.0",\r
+        "ShortName": "4.0"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": true,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "Android",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 720,\r
+      "MaxHeight": 576,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 22.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "128",\r
+          "Bitrate": 128,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": false,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "Main",\r
+        "ShortName": "main"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.0",\r
+        "ShortName": "3.0"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "Android Tablet",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 1280,\r
+      "MaxHeight": 720,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 22.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "128",\r
+          "Bitrate": 128,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": false,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "Main",\r
+        "ShortName": "main"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.1",\r
+        "ShortName": "3.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Devices",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "Windows Phone 8",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": 1280,\r
+      "MaxHeight": 720,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 0,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 1,\r
+      "Quality": 22.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": 30.0,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "128",\r
+          "Bitrate": 128,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": false,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "Main",\r
+        "ShortName": "main"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "3.1",\r
+        "ShortName": "3.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Resolution: x\r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Regular",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": true,\r
+    "Name": "Normal",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": null,\r
+      "MaxHeight": null,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 0,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 2,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": null,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "Main",\r
+        "ShortName": "main"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "4.0",\r
+        "ShortName": "4.0"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Veryfast",\r
+        "ShortName": "veryfast"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": false,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  },\r
+  {\r
+    "Category": "Regular",\r
+    "Description": "",\r
+    "IsBuildIn": true,\r
+    "IsDefault": false,\r
+    "Name": "High Profile",\r
+    "PictureSettingsMode": 0,\r
+    "UseDeinterlace": false,\r
+    "Task": {\r
+      "Source": null,\r
+      "Title": 0,\r
+      "Angle": 0,\r
+      "PointToPointMode": 0,\r
+      "StartPoint": 0,\r
+      "EndPoint": 0,\r
+      "Destination": null,\r
+      "OutputFormat": 0,\r
+      "OptimizeMP4": false,\r
+      "IPod5GSupport": false,\r
+      "Width": null,\r
+      "Height": null,\r
+      "MaxWidth": null,\r
+      "MaxHeight": null,\r
+      "Cropping": {\r
+        "Top": 0,\r
+        "Bottom": 0,\r
+        "Left": 0,\r
+        "Right": 0\r
+      },\r
+      "HasCropping": false,\r
+      "Anamorphic": 2,\r
+      "DisplayWidth": null,\r
+      "KeepDisplayAspect": false,\r
+      "PixelAspectX": 0,\r
+      "PixelAspectY": 0,\r
+      "Modulus": 2,\r
+      "Deinterlace": 0,\r
+      "CustomDeinterlace": null,\r
+      "Decomb": 2,\r
+      "CustomDecomb": null,\r
+      "Detelecine": 0,\r
+      "CustomDetelecine": null,\r
+      "Denoise": 0,\r
+      "DenoisePreset": 0,\r
+      "DenoiseTune": 0,\r
+      "CustomDenoise": null,\r
+      "Deblock": 0,\r
+      "Grayscale": false,\r
+      "VideoEncodeRateType": 2,\r
+      "VideoEncoder": 0,\r
+      "FramerateMode": 2,\r
+      "Quality": 20.0,\r
+      "VideoBitrate": null,\r
+      "TwoPass": false,\r
+      "TurboFirstPass": false,\r
+      "Framerate": null,\r
+      "AudioTracks": [\r
+        {\r
+          "AudioEncoderDisplayValue": "AAC (avcodec)",\r
+          "AudioMixdownDisplayValue": "Dolby Pro Logic II",\r
+          "BitRateDisplayValue": "160",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 0,\r
+          "Gain": 0,\r
+          "MixDown": 0,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": false,\r
+          "CannotSetBitrate": false,\r
+          "IsLossless": false,\r
+          "TrackName": ""\r
+        },\r
+        {\r
+          "AudioEncoderDisplayValue": "AC3 Passthru",\r
+          "AudioMixdownDisplayValue": "Automatic",\r
+          "BitRateDisplayValue": "Auto",\r
+          "Bitrate": 160,\r
+          "DRC": 0.0,\r
+          "IsDefault": false,\r
+          "Encoder": 6,\r
+          "Gain": 0,\r
+          "MixDown": 2,\r
+          "SampleRate": 0.0,\r
+          "SampleRateDisplayValue": "Auto",\r
+          "ScannedTrack": {\r
+            "TrackNumber": 0,\r
+            "Language": null,\r
+            "LanguageCode": null,\r
+            "Description": null,\r
+            "Format": null,\r
+            "SampleRate": 0,\r
+            "Bitrate": 0\r
+          },\r
+          "Track": 0,\r
+          "IsPassthru": true,\r
+          "CannotSetBitrate": true,\r
+          "IsLossless": true,\r
+          "TrackName": ""\r
+        }\r
+      ],\r
+      "AllowedPassthruOptions": {\r
+        "AudioAllowAACPass": true,\r
+        "AudioAllowAC3Pass": true,\r
+        "AudioAllowDTSHDPass": true,\r
+        "AudioAllowDTSPass": true,\r
+        "AudioAllowMP3Pass": true,\r
+        "AudioEncoderFallback": 4\r
+      },\r
+      "SubtitleTracks": [],\r
+      "IncludeChapterMarkers": true,\r
+      "ChapterMarkersFilePath": null,\r
+      "ChapterNames": [],\r
+      "AdvancedEncoderOptions": null,\r
+      "VideoProfile": {\r
+        "DisplayName": "High",\r
+        "ShortName": "high"\r
+      },\r
+      "VideoLevel": {\r
+        "DisplayName": "4.1",\r
+        "ShortName": "4.1"\r
+      },\r
+      "VideoPreset": {\r
+        "DisplayName": "Medium",\r
+        "ShortName": "medium"\r
+      },\r
+      "VideoTunes": [],\r
+      "ExtraAdvancedArguments": null,\r
+      "IsPreviewEncode": false,\r
+      "PreviewEncodeDuration": null,\r
+      "PreviewEncodeStartAt": null,\r
+      "RequiresM4v": true,\r
+      "ShowAdvancedTab": false,\r
+      "PictureSettingsDesc": "Anamorphic: Loose, Width: \r\nCrop Top: 0, Botton: 0, Left: 0, Right: 0"\r
+    },\r
+    "UsePictureFilters": true,\r
+    "Version": "svn5311 (Nightly Build)",\r
+    "AudioTrackBehaviours": null,\r
+    "SubtitleTrackBehaviours": null\r
+  }\r
+]\r
index c9dd6cc8e156eaa4f32066d65fd2f9b9c94ac1b7..10daac53db83f50761d82460788805de02e53f38 100644 (file)
@@ -61,5 +61,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers \r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("0.0.0.5311")]\r
+[assembly: AssemblyVersion("0.0.0.6809")]\r
 [assembly: NeutralResourcesLanguage("")]
\ No newline at end of file
index d99a490f76956f94478791e892b69865b2929cb3..db5403b6f8903c856cbfbe6da7707a0b7ab0b90d 100644 (file)
@@ -61,5 +61,5 @@ using System.Windows;
 // You can specify all the values or you can default the Build and Revision Numbers \r
 // by using the '*' as shown below:\r
 // [assembly: AssemblyVersion("1.0.*")]\r
-[assembly: AssemblyVersion("0.11.0.$WCREV$")]\r
+[assembly: AssemblyVersion("0.1.0.$WCREV$")]\r
 [assembly: NeutralResourcesLanguage("")]
\ No newline at end of file
index 09fcc4a50d90c6bd7f0ace2fd80675f74a8a7a00..c20af5ddcd067b3f49df4c87e4992d7d177c1f27 100644 (file)
@@ -281,58 +281,42 @@ namespace HandBrakeWPF.Services.Presets
             {\r
                 using (StreamReader reader = new StreamReader(stream))\r
                 {\r
-                    StringBuilder contents = new StringBuilder();\r
-\r
-                    string category = String.Empty;\r
-\r
-                    while (!reader.EndOfStream)\r
+                    // New Preset Format.\r
+                    try\r
                     {\r
-                        string line = reader.ReadLine();\r
-                        contents.AppendLine(line);\r
+                        string json = reader.ReadToEnd();\r
+                        var presetList = JsonConvert.DeserializeObject<List<Preset>>(json);\r
 \r
-                        // Found the beginning of a preset block )\r
-                        if (line != null && line.Contains("<") && !line.Contains("<<"))\r
+                        foreach (Preset preset in presetList)\r
                         {\r
-                            category = line.Replace("<", string.Empty).Trim();\r
-                        }\r
+                            preset.Version = VersionHelper.GetVersion();\r
+                            preset.UsePictureFilters = true; \r
+                            preset.IsBuildIn = true; // Older versions did not have this flag so explicitly make sure it is set.\r
 \r
-                        // Found a preset\r
-                        if (line != null && line.Contains("+"))\r
-                        {\r
-                            Regex r = new Regex("(:  )"); // Split on hyphens. \r
-                            string[] presetName = r.Split(line);\r
-\r
-                            Preset newPreset = new Preset\r
-                            {\r
-                                Category = category,\r
-                                Name = presetName[0].Replace("+", string.Empty).Trim(),\r
-                                Version = VersionHelper.GetVersion(),\r
-                                Description = string.Empty, // Maybe one day we will populate this.\r
-                                IsBuildIn = true,\r
-                                UsePictureFilters = true,\r
-                                Task = QueryParserUtility.Parse(presetName[2])\r
-                            };\r
-\r
-                            if (newPreset.Name == "iPod")\r
+                            if (preset.Name == "iPod")\r
                             {\r
-                                newPreset.Task.KeepDisplayAspect = true;\r
+                                preset.Task.KeepDisplayAspect = true;\r
                             }\r
 \r
-                            newPreset.Task.AllowedPassthruOptions = new AllowedPassthru(true); // We don't want to override the built-in preset\r
+                            preset.Task.AllowedPassthruOptions = new AllowedPassthru(true); // We don't want to override the built-in preset\r
 \r
-                            if (newPreset.Name == "Normal")\r
+                            if (preset.Name == "Normal")\r
                             {\r
-                                newPreset.IsDefault = true;\r
+                                preset.IsDefault = true;\r
                             }\r
 \r
-                            this.presets.Add(newPreset);\r
+                            this.presets.Add(preset);\r
                         }\r
-                    }\r
 \r
-                    // Verify we have presets.\r
-                    if (this.presets.Count == 0)\r
+                        // Verify we have presets.\r
+                        if (this.presets.Count == 0)\r
+                        {\r
+                            throw new GeneralApplicationException("Failed to load built-in presets.", "Restarting HandBrake may resolve this issue", new Exception(json));\r
+                        }\r
+                    }\r
+                    catch (Exception exc)\r
                     {\r
-                        throw new GeneralApplicationException("Failed to load built-in presets.", "Restarting HandBrake may resolve this issue", new Exception(contents.ToString()));\r
+                        // Do Nothing.\r
                     }\r
                 }\r
             }\r
@@ -571,8 +555,10 @@ namespace HandBrakeWPF.Services.Presets
                     Directory.CreateDirectory(directory);\r
                 }\r
 \r
+                JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore };\r
+\r
                 // Built-in Presets\r
-                JsonSerializerSettings settings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore, NullValueHandling = NullValueHandling.Ignore };\r
+                \r
                 using (FileStream strm = new FileStream(this.builtInPresetFile, FileMode.Create, FileAccess.Write))\r
                 {\r
                     string presetsJson = JsonConvert.SerializeObject(this.presets.Where(p => p.IsBuildIn).ToList(), Formatting.Indented, settings);\r
@@ -583,14 +569,13 @@ namespace HandBrakeWPF.Services.Presets
                 }\r
 \r
                 // User Presets\r
-                JsonSerializerSettings userPresetSettings = new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Ignore };\r
                 using (FileStream strm = new FileStream(this.userPresetFile, FileMode.Create, FileAccess.Write))\r
                 {\r
                     List<Preset> userPresets = this.presets.Where(p => p.IsBuildIn == false).ToList();\r
-                    string presetsJson = JsonConvert.SerializeObject(userPresets, Formatting.Indented, userPresetSettings);\r
+                    string presetsJson = JsonConvert.SerializeObject(userPresets, Formatting.Indented, settings);\r
 \r
                     PresetContainer container = new PresetContainer(CurrentPresetVersion, presetsJson);\r
-                    string containerJson = JsonConvert.SerializeObject(container, Formatting.Indented, userPresetSettings);\r
+                    string containerJson = JsonConvert.SerializeObject(container, Formatting.Indented, settings);\r
 \r
                     using (StreamWriter writer = new StreamWriter(strm))\r
                     {\r