mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-02 09:01:48 -05:00
Abramo Bagnara <abramo@alsa-project.org>
Sat, 11 Dec 1999 16:16:34 +0100 - PCM plugin fixes
This commit is contained in:
parent
20ebae20a7
commit
00f2df9954
4 changed files with 72 additions and 73 deletions
|
|
@ -218,7 +218,7 @@ static int snd_pcm_plugin_action(snd_pcm_t *pcm, int channel, int action)
|
|||
|
||||
int snd_pcm_plugin_params(snd_pcm_t *pcm, snd_pcm_channel_params_t *params)
|
||||
{
|
||||
snd_pcm_channel_params_t hwparams;
|
||||
snd_pcm_channel_params_t hwparams, newparams;
|
||||
snd_pcm_channel_info_t hwinfo;
|
||||
snd_pcm_plugin_t *plugin;
|
||||
int err;
|
||||
|
|
@ -244,7 +244,7 @@ int snd_pcm_plugin_params(snd_pcm_t *pcm, snd_pcm_channel_params_t *params)
|
|||
snd_pcm_plugin_clear(pcm, params->channel);
|
||||
|
||||
/* add necessary plugins */
|
||||
if ((err = snd_pcm_plugin_format(pcm, params, &hwparams, &hwinfo)) < 0)
|
||||
if ((err = snd_pcm_plugin_format(pcm, params, &hwparams, &hwinfo, &newparams)) < 0)
|
||||
return err;
|
||||
|
||||
/*
|
||||
|
|
@ -279,22 +279,22 @@ int snd_pcm_plugin_params(snd_pcm_t *pcm, snd_pcm_channel_params_t *params)
|
|||
|
||||
/* compute right sizes */
|
||||
if (params->mode == SND_PCM_MODE_STREAM) {
|
||||
pdprintf("params queue_size = %i\n", hwparams.buf.stream.queue_size);
|
||||
hwparams.buf.stream.queue_size = snd_pcm_plugin_hardware_size(pcm, hwparams.channel, hwparams.buf.stream.queue_size);
|
||||
hwparams.buf.stream.max_fill = snd_pcm_plugin_hardware_size(pcm, hwparams.channel, hwparams.buf.stream.max_fill);
|
||||
pdprintf("params queue_size = %i\n", hwparams.buf.stream.queue_size);
|
||||
pdprintf("params queue_size = %i\n", newparams.buf.stream.queue_size);
|
||||
newparams.buf.stream.queue_size = snd_pcm_plugin_hardware_size(pcm, newparams.channel, newparams.buf.stream.queue_size);
|
||||
newparams.buf.stream.max_fill = snd_pcm_plugin_hardware_size(pcm, newparams.channel, newparams.buf.stream.max_fill);
|
||||
pdprintf("params queue_size = %i\n", newparams.buf.stream.queue_size);
|
||||
} else if (params->mode == SND_PCM_MODE_BLOCK) {
|
||||
pdprintf("params frag_size = %i\n", hwparams.buf.block.frag_size);
|
||||
hwparams.buf.block.frag_size = snd_pcm_plugin_hardware_size(pcm, hwparams.channel, hwparams.buf.block.frag_size);
|
||||
pdprintf("params frag_size = %i\n", hwparams.buf.block.frag_size);
|
||||
pdprintf("params frag_size = %i\n", newparams.buf.block.frag_size);
|
||||
newparams.buf.block.frag_size = snd_pcm_plugin_hardware_size(pcm, newparams.channel, newparams.buf.block.frag_size);
|
||||
pdprintf("params frag_size = %i\n", newparams.buf.block.frag_size);
|
||||
} else {
|
||||
return -EINVAL;
|
||||
}
|
||||
pdprintf("params requested params: format = %i, rate = %i, voices = %i\n", hwparams.format.format, hwparams.format.rate, hwparams.format.voices);
|
||||
err = snd_pcm_channel_params(pcm, &hwparams);
|
||||
pdprintf("params requested params: format = %i, rate = %i, voices = %i\n", newparams.format.format, newparams.format.rate, newparams.format.voices);
|
||||
err = snd_pcm_channel_params(pcm, &newparams);
|
||||
if (err < 0)
|
||||
return err;
|
||||
err = snd_pcm_plugin_action(pcm, hwparams.channel, INIT);
|
||||
err = snd_pcm_plugin_action(pcm, newparams.channel, INIT);
|
||||
if (err < 0)
|
||||
return err;
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue