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
            }
        }