// -------------------------------------------------------------------------------------------------------------------- // // This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. // // // The hand brake preset service. // // -------------------------------------------------------------------------------------------------------------------- namespace HandBrake.ApplicationServices.Interop { using System; using System.Collections.Generic; using System.IO; using System.Runtime.InteropServices; using HandBrake.ApplicationServices.Interop.HbLib; using HandBrake.ApplicationServices.Interop.Helpers; using HandBrake.ApplicationServices.Interop.Json.Presets; using HandBrake.ApplicationServices.Services.Logging; using HandBrake.ApplicationServices.Services.Logging.Interfaces; using HandBrake.ApplicationServices.Services.Logging.Model; using Newtonsoft.Json; /// /// The hand brake preset service. /// public class HandBrakePresetService { private static readonly ILog log = LogService.GetLogger(); /// /// The get built in presets. /// Requires an hb_init to have been invoked. /// /// /// The . /// public static IList GetBuiltInPresets() { IntPtr presets = HBFunctions.hb_presets_builtin_get_json(); string presetJson = Marshal.PtrToStringAnsi(presets); log.LogMessage(presetJson, LogMessageType.API, LogLevel.Debug); IList presetList = JsonConvert.DeserializeObject>(presetJson); return presetList; } /// /// The get preset from file. /// /// /// The filename. /// /// /// The . /// public static PresetTransportContainer GetPresetFromFile(string filename) { IntPtr presetStringPointer = HBFunctions.hb_presets_read_file_json(InteropUtilities.ToUtf8PtrFromString(filename)); string presetJson = Marshal.PtrToStringAnsi(presetStringPointer); log.LogMessage(presetJson, LogMessageType.API, LogLevel.Debug); if (!string.IsNullOrEmpty(presetJson)) { // Check to see if we have a list of presets. if (presetJson.StartsWith("[")) { presetJson = "{ \"PresetList\":" + presetJson + " } "; } PresetTransportContainer preset = JsonConvert.DeserializeObject(presetJson); return preset; } return null; } /// /// The export preset. /// /// /// The filename. /// /// /// The container. /// public static void ExportPreset(string filename, PresetTransportContainer container) { string preset = JsonConvert.SerializeObject(container, Formatting.Indented); using (StreamWriter writer = new StreamWriter(filename)) { writer.Write(preset); } } } }