char * hb_generate_filter_settings(int filter_id, const char *preset, const char *tune) { char *filter_param = NULL; switch (filter_id) { case HB_FILTER_NLMEANS: filter_param = generate_nlmeans_settings(preset, tune); break; case HB_FILTER_ROTATE: if (atoi(preset) == 0) filter_param = (char*)hb_filter_off; else filter_param = strdup(preset); break; case HB_FILTER_DEBLOCK: if (atoi(preset) < 5) filter_param = (char*)hb_filter_off; else filter_param = strdup(preset); break; case HB_FILTER_DECOMB: case HB_FILTER_DEINTERLACE: case HB_FILTER_DETELECINE: case HB_FILTER_HQDN3D: filter_param = generate_generic_settings(filter_id, preset, tune); break; default: fprintf(stderr, "hb_generate_filter_settings: Unrecognized filter (%d).\n", filter_id); break; } if (filter_param == hb_filter_off) return filter_param; if (filter_param != NULL && hb_validate_filter_settings(filter_id, filter_param) == 0) { return filter_param; } free(filter_param); return NULL; }
hb_value_t * hb_generate_filter_settings(int filter_id, const char *preset, const char *tune, const char *custom) { hb_value_t * settings = NULL; switch (filter_id) { case HB_FILTER_DEBLOCK: settings = generate_deblock_settings(preset, custom); break; case HB_FILTER_PAD: case HB_FILTER_ROTATE: case HB_FILTER_CROP_SCALE: case HB_FILTER_VFR: case HB_FILTER_RENDER_SUB: case HB_FILTER_GRAYSCALE: case HB_FILTER_QSV: settings = hb_parse_filter_settings(custom); break; case HB_FILTER_NLMEANS: settings = generate_nlmeans_settings(preset, tune, custom); break; case HB_FILTER_COMB_DETECT: case HB_FILTER_DECOMB: case HB_FILTER_DETELECINE: case HB_FILTER_HQDN3D: case HB_FILTER_DEINTERLACE: settings = generate_generic_settings(filter_id, preset, custom); break; default: fprintf(stderr, "hb_generate_filter_settings: Unrecognized filter (%d).\n", filter_id); break; } check_filter_status(filter_id, settings); if (settings != NULL && hb_validate_filter_settings(filter_id, settings) == 0) { return settings; } hb_value_free(&settings); return NULL; }