int hb_validate_filter_preset(int filter_id, const char *preset, const char *tune) { if (preset == NULL && tune == NULL) return 1; int preset_count, tune_count; hb_filter_param_t *preset_table, *tune_table; hb_filter_param_t *preset_entry, *tune_entry; preset_table = filter_param_get_presets_internal(filter_id, &preset_count); preset_entry = filter_param_get_entry(preset_table, preset, preset_count); if (preset_entry == NULL || preset_entry->name == NULL) return 1; if (tune != NULL) { if (!strcasecmp(preset, "custom") && tune != NULL) { return hb_validate_filter_settings(filter_id, tune); } tune_table = filter_param_get_tunes_internal(filter_id, &tune_count); tune_entry = filter_param_get_entry(tune_table, tune, tune_count); if (tune_entry == NULL) return 1; } return 0; }
int hb_validate_filter_settings_json(int filter_id, const char * json) { hb_value_t * value = hb_value_json(json); int result = hb_validate_filter_settings(filter_id, value); hb_value_free(&value); return result; }
int hb_validate_filter_string(int filter_id, const char * filter_str) { hb_dict_t * settings = hb_parse_filter_settings(filter_str); if (settings == NULL) { return 1; } int result = hb_validate_filter_settings(filter_id, settings); hb_value_free(&settings); return result; }
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; }
char * hb_generate_filter_settings_by_index(int filter_id, int preset, const char *custom) { char *filter_param = NULL; switch (filter_id) { case HB_FILTER_ROTATE: if (preset <= 0) filter_param = (char*)hb_filter_off; else filter_param = hb_strdup_printf("%d", preset); break; case HB_FILTER_DEBLOCK: if (preset < 5) filter_param = (char*)hb_filter_off; else filter_param = hb_strdup_printf("%d", preset); break; case HB_FILTER_DECOMB: case HB_FILTER_DEINTERLACE: case HB_FILTER_DETELECINE: case HB_FILTER_HQDN3D: filter_param = generate_generic_settings_by_index(filter_id, preset, custom); 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; }
int hb_validate_filter_preset(int filter_id, const char *preset, const char *tune, const char *custom) { if (preset == NULL && tune == NULL) return 1; int preset_count, tune_count; hb_filter_param_t *preset_table, *tune_table; hb_filter_param_t *preset_entry, *tune_entry; preset_table = filter_param_get_presets_internal(filter_id, &preset_count); preset_entry = filter_param_get_entry(preset_table, preset, preset_count); if (preset_entry == NULL || preset_entry->name == NULL) return 1; if (!strcasecmp(preset, "custom") && custom != NULL) { hb_dict_t * settings = hb_parse_filter_settings(custom); if (settings == NULL) { return 1; } int result = hb_validate_filter_settings(filter_id, settings); hb_value_free(&settings); return result; } if (tune != NULL) { tune_table = filter_param_get_tunes_internal(filter_id, &tune_count); tune_entry = filter_param_get_entry(tune_table, tune, tune_count); if (tune_entry == NULL) { return 1; } } return 0; }