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; }
// Legacy: old presets store filter falues as indexes :( static char * generate_generic_settings_by_index(int filter_id, int preset, const char *custom) { char *opt = NULL; int preset_count; hb_filter_param_t *preset_table; hb_filter_param_t *preset_entry; preset_table = filter_param_get_presets_internal(filter_id, &preset_count); preset_entry = filter_param_get_entry_by_index(preset_table, preset, preset_count); if (preset_entry != NULL) { if (!strcasecmp(preset_entry->short_name, "custom") && custom != NULL) { opt = strdup(custom); } else if (preset_entry->settings == hb_filter_off) { return (char*)hb_filter_off; } else if (preset_entry->settings != NULL) { opt = hb_strdup_printf("%s", preset_entry->settings); } } return opt; }
static char * generate_generic_settings(int filter_id, const char *preset, const char *tune) { char *opt = NULL; 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); tune_table = filter_param_get_tunes_internal(filter_id, &tune_count); preset_entry = filter_param_get_entry(preset_table, preset, preset_count); tune_entry = filter_param_get_entry(tune_table, tune, tune_count); if (preset_entry != NULL) { if (!strcasecmp(preset, "custom") && tune != NULL) { opt = strdup(tune); } else if (preset_entry->settings == hb_filter_off) { return (char*)hb_filter_off; } else if (preset_entry->settings != NULL) { opt = hb_strdup_printf("%s%s%s", preset_entry->settings, tune_entry != NULL ? ":" : "", tune_entry != NULL ? tune_entry->settings : ""); } } else if (preset != NULL) { return strdup(preset); } return opt; }
int hb_filter_preset_index(int filter_id, const char *preset) { if (preset == NULL) return -1; int preset_count; hb_filter_param_t *preset_table; hb_filter_param_t *preset_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) return -1; return preset_entry->index; }
static hb_dict_t * generate_generic_settings(int filter_id, const char *preset, const char *custom) { int preset_count; hb_filter_param_t *preset_table; hb_filter_param_t *preset_entry; if (preset == NULL || !strcasecmp(preset, "custom")) { return hb_parse_filter_settings(custom); } 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->settings != NULL) { return hb_parse_filter_settings(preset_entry->settings); } return NULL; }
// Get json array of filter preset name and short_name char * hb_filter_get_presets_json(int filter_id) { hb_value_array_t * array = hb_value_array_init(); int ii, count = 0; hb_filter_param_t * table; table = filter_param_get_presets_internal(filter_id, NULL); for (count = 0; table[count].name != NULL; count++); for (ii = 0; ii < count; ii++) { hb_dict_t * dict = hb_dict_init(); hb_dict_set(dict, "short_name", hb_value_string(table[ii].short_name)); hb_dict_set(dict, "name", hb_value_string(table[ii].name)); hb_value_array_append(array, dict); } char * result = hb_value_get_json(array); hb_value_free(&array); return result; }
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; }
hb_filter_param_t* hb_filter_param_get_presets(int filter_id) { return filter_param_get_presets_internal(filter_id, NULL); }