From: Abramo Bagnara Date: Sat, 25 Dec 1999 15:23:47 +0000 (+0000) Subject: Fixed return value for plugin transfer function X-Git-Tag: v1.0.3~1370 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=cde18e13bc2123920fa19fe26bdd300d3154f639;p=alsa-lib.git Fixed return value for plugin transfer function --- diff --git a/src/pcm/plugin/rate.c b/src/pcm/plugin/rate.c index 1506b6c4..0c03b66d 100644 --- a/src/pcm/plugin/rate.c +++ b/src/pcm/plugin/rate.c @@ -234,66 +234,6 @@ static void resample8_shrink(struct rate_private_data *data, int voices, } } -static ssize_t rate_transfer(snd_pcm_plugin_t *plugin, - char *src_ptr, size_t src_size, - char *dst_ptr, size_t dst_size) -{ - struct rate_private_data *data; - - if (plugin == NULL || src_ptr == NULL || src_size < 0 || - dst_ptr == NULL || dst_size < 0) - return -EINVAL; - if (src_size == 0) - return 0; - data = (struct rate_private_data *)snd_pcm_plugin_extra_data(plugin); - if (data == NULL) - return -EINVAL; - if (data->sample_size == 2) { - if (data->src_rate < data->dst_rate) { - resample16_expand(data, data->src_voices, - (signed short *)src_ptr, src_size / (data->src_voices * 2), - (signed short *)dst_ptr, dst_size / (data->dst_voices * 2)); - } else { - resample16_shrink(data, data->src_voices, - (signed short *)src_ptr, src_size / (data->src_voices * 2), - (signed short *)dst_ptr, dst_size / (data->dst_voices * 2)); - } - } else { - if (data->src_rate < data->dst_rate) { - resample8_expand(data, data->src_voices, - src_ptr, src_size / data->src_voices, - dst_ptr, dst_size / data->dst_voices); - } else { - resample8_shrink(data, data->src_voices, - src_ptr, src_size / data->src_voices, - dst_ptr, dst_size / data->dst_voices); - } - } - return dst_size / (data->sample_size * data->src_voices) * (data->sample_size * data->src_voices); -} - -static int rate_action(snd_pcm_plugin_t *plugin, snd_pcm_plugin_action_t action) -{ - struct rate_private_data *data; - int voice; - - if (plugin == NULL) - return -EINVAL; - data = (struct rate_private_data *)snd_pcm_plugin_extra_data(plugin); - switch (action) { - case INIT: - case PREPARE: - case DRAIN: - case FLUSH: - data->pos = 0; - for (voice = 0; voice < data->src_voices; ++voice) { - data->last_S1[voice] = data->last_S2[voice] = 0; - } - break; - } - return 0; /* silenty ignore other actions */ -} - static ssize_t rate_src_size(snd_pcm_plugin_t *plugin, size_t size) { struct rate_private_data *data; @@ -358,6 +298,66 @@ static ssize_t rate_dst_size(snd_pcm_plugin_t *plugin, size_t size) return res; } +static ssize_t rate_transfer(snd_pcm_plugin_t *plugin, + char *src_ptr, size_t src_size, + char *dst_ptr, size_t dst_size) +{ + struct rate_private_data *data; + + if (plugin == NULL || src_ptr == NULL || src_size < 0 || + dst_ptr == NULL || dst_size < 0) + return -EINVAL; + if (src_size == 0) + return 0; + data = (struct rate_private_data *)snd_pcm_plugin_extra_data(plugin); + if (data == NULL) + return -EINVAL; + if (data->sample_size == 2) { + if (data->src_rate < data->dst_rate) { + resample16_expand(data, data->src_voices, + (signed short *)src_ptr, src_size / (data->src_voices * 2), + (signed short *)dst_ptr, dst_size / (data->dst_voices * 2)); + } else { + resample16_shrink(data, data->src_voices, + (signed short *)src_ptr, src_size / (data->src_voices * 2), + (signed short *)dst_ptr, dst_size / (data->dst_voices * 2)); + } + } else { + if (data->src_rate < data->dst_rate) { + resample8_expand(data, data->src_voices, + src_ptr, src_size / data->src_voices, + dst_ptr, dst_size / data->dst_voices); + } else { + resample8_shrink(data, data->src_voices, + src_ptr, src_size / data->src_voices, + dst_ptr, dst_size / data->dst_voices); + } + } + return rate_dst_size(plugin, src_size); +} + +static int rate_action(snd_pcm_plugin_t *plugin, snd_pcm_plugin_action_t action) +{ + struct rate_private_data *data; + int voice; + + if (plugin == NULL) + return -EINVAL; + data = (struct rate_private_data *)snd_pcm_plugin_extra_data(plugin); + switch (action) { + case INIT: + case PREPARE: + case DRAIN: + case FLUSH: + data->pos = 0; + for (voice = 0; voice < data->src_voices; ++voice) { + data->last_S1[voice] = data->last_S2[voice] = 0; + } + break; + } + return 0; /* silenty ignore other actions */ +} + int snd_pcm_plugin_build_rate(snd_pcm_format_t *src_format, snd_pcm_format_t *dst_format, snd_pcm_plugin_t **r_plugin)