Lines Matching refs:plugin
34 * Basic io plugin
37 static snd_pcm_sframes_t io_playback_transfer(struct snd_pcm_plugin *plugin,
42 if (snd_BUG_ON(!plugin))
46 if (plugin->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED) {
47 return pcm_write(plugin->plug, src_channels->area.addr, frames);
49 int channel, channels = plugin->dst_format.channels;
50 void **bufs = (void**)plugin->extra_data;
59 return pcm_writev(plugin->plug, bufs, frames);
63 static snd_pcm_sframes_t io_capture_transfer(struct snd_pcm_plugin *plugin,
68 if (snd_BUG_ON(!plugin))
72 if (plugin->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED) {
73 return pcm_read(plugin->plug, dst_channels->area.addr, frames);
75 int channel, channels = plugin->dst_format.channels;
76 void **bufs = (void**)plugin->extra_data;
85 return pcm_readv(plugin->plug, bufs, frames);
90 static snd_pcm_sframes_t io_src_channels(struct snd_pcm_plugin *plugin,
97 err = snd_pcm_plugin_client_channels(plugin, frames, &v);
101 if (plugin->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED) {
102 for (channel = 0; channel < plugin->src_format.channels; ++channel, ++v)
114 struct snd_pcm_plugin *plugin;
127 &plugin);
130 plugin->access = params_access(params);
132 plugin->transfer = io_playback_transfer;
133 if (plugin->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED)
134 plugin->client_channels = io_src_channels;
136 plugin->transfer = io_capture_transfer;
139 *r_plugin = plugin;