Пример #1
0
static bool
parse_channel_count(const char *src, bool mask, uint8_t *channels_r,
		    const char **endptr_r, GError **error_r)
{
	unsigned long value;
	char *endptr;

	if (mask && *src == '*') {
		*channels_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 channel count");
		return false;
	} else if (!audio_check_channel_count(value, error_r))
		return false;

	*channels_r = value;
	*endptr_r = endptr;
	return true;
}
Пример #2
0
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;
}