private static void ParseFilters(EncodeTask task, JsonEncodeObject job) { // Crop scale Filter cropscaleFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_CROP_SCALE); if (cropscaleFilter != null) { var filterSettings = cropscaleFilter.Settings; int cropTop = filterSettings.Value <int>("crop-top"); int cropBottom = filterSettings.Value <int>("crop-bottom"); int cropLeft = filterSettings.Value <int>("crop-left"); int cropRight = filterSettings.Value <int>("crop-right"); int width = filterSettings.Value <int>("width"); int height = filterSettings.Value <int>("height"); task.Width = width; task.Height = height; task.Cropping.Top = cropTop; task.Cropping.Bottom = cropBottom; task.Cropping.Left = cropLeft; task.Cropping.Right = cropRight; } // Grayscale Filter grayscaleFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_GRAYSCALE); if (grayscaleFilter != null) { task.Grayscale = true; } // Rotate Filter rotationFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_ROTATE); if (rotationFilter != null) { var filterSettings = rotationFilter.Settings; task.Rotation = filterSettings.Value <int>("angle"); task.FlipVideo = filterSettings.Value <string>("hflip") == "1"; } // Deblock Filter deblockFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_DEBLOCK); if (deblockFilter != null) { var filterSettings = deblockFilter.Settings; task.Deblock = filterSettings.Value <string>("qp").ToInt(); } // Sharpen Filter lapsharpFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_LAPSHARP); if (lapsharpFilter != null) { var filterSettings = lapsharpFilter.Settings; task.Sharpen = Sharpen.LapSharp; // TODO Preset / Tune } Filter unsharpFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_UNSHARP); if (unsharpFilter != null) { var filterSettings = unsharpFilter.Settings; task.Sharpen = Sharpen.UnSharp; // TODO Preset / Tune } // Denoise Filter hqdn3dFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_HQDN3D); if (hqdn3dFilter != null) { var filterSettings = hqdn3dFilter.Settings; task.Denoise = Denoise.hqdn3d; // TODO Preset / Tune } Filter nlmeansFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_NLMEANS); if (nlmeansFilter != null) { var filterSettings = nlmeansFilter.Settings; task.Denoise = Denoise.NLMeans; // TODO Preset / Tune } // Detelecine Filter detelecineFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_DETELECINE); if (detelecineFilter != null) { var filterSettings = detelecineFilter.Settings; task.Detelecine = Detelecine.Default; // TODO Handle Custom } // Deinterlace Filter deinterlaceFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_DEINTERLACE); if (deinterlaceFilter != null) { var filterSettings = deinterlaceFilter.Settings; task.DeinterlaceFilter = DeinterlaceFilter.Yadif; // TODO Handle Preset / Custom } Filter decombFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_DECOMB); if (decombFilter != null) { var filterSettings = decombFilter.Settings; task.DeinterlaceFilter = DeinterlaceFilter.Decomb; // TODO Handle Preset / Custom } // Interlace Detection Filter combDetect = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_COMB_DETECT); if (combDetect != null) { var filterSettings = combDetect.Settings; task.CombDetect = CombDetect.Default; // TODO Handle Preset / Custom } // Framerate Filter framerateFilter = job.Filters.FilterList.FirstOrDefault(f => f.ID == (int)hb_filter_ids.HB_FILTER_VFR); if (framerateFilter != null) { var filterSettings = framerateFilter.Settings; task.FramerateMode = (FramerateMode)filterSettings.Value <int>("mode"); // TODO numbers may not be in correct order. string rate = filterSettings.Value <string>("rate"); // TODO Handle Rate. num/den hb_video_framerate_get_from_name } }