static bool parse_sample_rate(const char *src, bool mask, uint32_t *sample_rate_r, const char **endptr_r, GError **error_r) { unsigned long value; char *endptr; if (mask && *src == '*') { *sample_rate_r = 0; *endptr_r = src + 1; return true; } value = strtoul(src, &endptr, 10); if (endptr == src) { g_set_error(error_r, audio_parser_quark(), 0, "Failed to parse the sample rate"); return false; } else if (!audio_check_sample_rate(value, error_r)) return false; *sample_rate_r = value; *endptr_r = endptr; return true; }
bool audio_format_init_checked(struct audio_format *af, unsigned long sample_rate, enum sample_format sample_format, unsigned channels, GError **error_r) { if (audio_check_sample_rate(sample_rate, error_r) && audio_check_sample_format(sample_format, error_r) && audio_check_channel_count(channels, error_r)) { audio_format_init(af, sample_rate, sample_format, channels); assert(audio_format_valid(af)); return true; } else return false; }
static bool fluidsynth_init(const struct config_param *param) { GError *error = NULL; sample_rate = config_get_block_unsigned(param, "sample_rate", 48000); if (!audio_check_sample_rate(sample_rate, &error)) { g_warning("%s\n", error->message); g_error_free(error); return false; } soundfont_path = config_get_block_string(param, "soundfont", "/usr/share/sounds/sf2/FluidR3_GM.sf2"); fluid_set_log_function(LAST_LOG_LEVEL, fluidsynth_mpd_log_function, NULL); return true; }