Lines Matching refs:plugin

49 static int snd_pcm_plugin_alloc(struct snd_pcm_plugin *plugin, snd_pcm_uframes_t frames)  in snd_pcm_plugin_alloc()  argument
57 if (plugin->stream == SNDRV_PCM_STREAM_PLAYBACK) { in snd_pcm_plugin_alloc()
58 format = &plugin->src_format; in snd_pcm_plugin_alloc()
60 format = &plugin->dst_format; in snd_pcm_plugin_alloc()
68 if (plugin->buf_frames < frames) { in snd_pcm_plugin_alloc()
69 kvfree(plugin->buf); in snd_pcm_plugin_alloc()
70 plugin->buf = kvzalloc(size, GFP_KERNEL); in snd_pcm_plugin_alloc()
71 plugin->buf_frames = frames; in snd_pcm_plugin_alloc()
73 if (!plugin->buf) { in snd_pcm_plugin_alloc()
74 plugin->buf_frames = 0; in snd_pcm_plugin_alloc()
77 c = plugin->buf_channels; in snd_pcm_plugin_alloc()
78 if (plugin->access == SNDRV_PCM_ACCESS_RW_INTERLEAVED) { in snd_pcm_plugin_alloc()
83 c->area.addr = plugin->buf; in snd_pcm_plugin_alloc()
87 } else if (plugin->access == SNDRV_PCM_ACCESS_RW_NONINTERLEAVED) { in snd_pcm_plugin_alloc()
95 c->area.addr = plugin->buf + (channel * size); in snd_pcm_plugin_alloc()
110 struct snd_pcm_plugin *plugin = snd_pcm_plug_first(plug); in snd_pcm_plug_alloc() local
111 while (plugin->next) { in snd_pcm_plug_alloc()
112 if (plugin->dst_frames) in snd_pcm_plug_alloc()
113 frames = plugin->dst_frames(plugin, frames); in snd_pcm_plug_alloc()
116 plugin = plugin->next; in snd_pcm_plug_alloc()
117 err = snd_pcm_plugin_alloc(plugin, frames); in snd_pcm_plug_alloc()
122 struct snd_pcm_plugin *plugin = snd_pcm_plug_last(plug); in snd_pcm_plug_alloc() local
123 while (plugin->prev) { in snd_pcm_plug_alloc()
124 if (plugin->src_frames) in snd_pcm_plug_alloc()
125 frames = plugin->src_frames(plugin, frames); in snd_pcm_plug_alloc()
128 plugin = plugin->prev; in snd_pcm_plug_alloc()
129 err = snd_pcm_plugin_alloc(plugin, frames); in snd_pcm_plug_alloc()
138 snd_pcm_sframes_t snd_pcm_plugin_client_channels(struct snd_pcm_plugin *plugin, in snd_pcm_plugin_client_channels() argument
142 *channels = plugin->buf_channels; in snd_pcm_plugin_client_channels()
153 struct snd_pcm_plugin *plugin; in snd_pcm_plugin_build() local
160 plugin = kzalloc(sizeof(*plugin) + extra, GFP_KERNEL); in snd_pcm_plugin_build()
161 if (plugin == NULL) in snd_pcm_plugin_build()
163 plugin->name = name; in snd_pcm_plugin_build()
164 plugin->plug = plug; in snd_pcm_plugin_build()
165 plugin->stream = snd_pcm_plug_stream(plug); in snd_pcm_plugin_build()
166 plugin->access = SNDRV_PCM_ACCESS_RW_INTERLEAVED; in snd_pcm_plugin_build()
167 plugin->src_format = *src_format; in snd_pcm_plugin_build()
168 plugin->src_width = snd_pcm_format_physical_width(src_format->format); in snd_pcm_plugin_build()
169 snd_BUG_ON(plugin->src_width <= 0); in snd_pcm_plugin_build()
170 plugin->dst_format = *dst_format; in snd_pcm_plugin_build()
171 plugin->dst_width = snd_pcm_format_physical_width(dst_format->format); in snd_pcm_plugin_build()
172 snd_BUG_ON(plugin->dst_width <= 0); in snd_pcm_plugin_build()
173 if (plugin->stream == SNDRV_PCM_STREAM_PLAYBACK) in snd_pcm_plugin_build()
177 plugin->buf_channels = kcalloc(channels, sizeof(*plugin->buf_channels), GFP_KERNEL); in snd_pcm_plugin_build()
178 if (plugin->buf_channels == NULL) { in snd_pcm_plugin_build()
179 snd_pcm_plugin_free(plugin); in snd_pcm_plugin_build()
182 plugin->client_channels = snd_pcm_plugin_client_channels; in snd_pcm_plugin_build()
183 *ret = plugin; in snd_pcm_plugin_build()
187 int snd_pcm_plugin_free(struct snd_pcm_plugin *plugin) in snd_pcm_plugin_free() argument
189 if (! plugin) in snd_pcm_plugin_free()
191 if (plugin->private_free) in snd_pcm_plugin_free()
192 plugin->private_free(plugin); in snd_pcm_plugin_free()
193 kfree(plugin->buf_channels); in snd_pcm_plugin_free()
194 kvfree(plugin->buf); in snd_pcm_plugin_free()
195 kfree(plugin); in snd_pcm_plugin_free()
203 struct snd_pcm_plugin *plugin, *plugin_next; in calc_dst_frames() local
205 plugin = snd_pcm_plug_first(plug); in calc_dst_frames()
206 while (plugin && frames > 0) { in calc_dst_frames()
207 plugin_next = plugin->next; in calc_dst_frames()
208 if (check_size && plugin->buf_frames && in calc_dst_frames()
209 frames > plugin->buf_frames) in calc_dst_frames()
210 frames = plugin->buf_frames; in calc_dst_frames()
211 if (plugin->dst_frames) { in calc_dst_frames()
212 frames = plugin->dst_frames(plugin, frames); in calc_dst_frames()
216 plugin = plugin_next; in calc_dst_frames()
225 struct snd_pcm_plugin *plugin, *plugin_prev; in calc_src_frames() local
227 plugin = snd_pcm_plug_last(plug); in calc_src_frames()
228 while (plugin && frames > 0) { in calc_src_frames()
229 plugin_prev = plugin->prev; in calc_src_frames()
230 if (plugin->src_frames) { in calc_src_frames()
231 frames = plugin->src_frames(plugin, frames); in calc_src_frames()
235 if (check_size && plugin->buf_frames && in calc_src_frames()
236 frames > plugin->buf_frames) in calc_src_frames()
237 frames = plugin->buf_frames; in calc_src_frames()
238 plugin = plugin_prev; in calc_src_frames()
375 struct snd_pcm_plugin *plugin = NULL; in snd_pcm_plug_format_plugins() local
427 &plugin); in snd_pcm_plug_format_plugins()
430 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
432 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
442 err = snd_pcm_plugin_build_route(plug, &srcformat, &tmpformat, &plugin); in snd_pcm_plug_format_plugins()
446 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
448 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
462 &plugin); in snd_pcm_plug_format_plugins()
465 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
467 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
476 &plugin); in snd_pcm_plug_format_plugins()
480 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
482 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
496 &plugin); in snd_pcm_plug_format_plugins()
502 &plugin); in snd_pcm_plug_format_plugins()
509 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
511 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
521 err = snd_pcm_plugin_build_route(plug, &srcformat, &tmpformat, &plugin); in snd_pcm_plug_format_plugins()
525 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
527 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
539 &plugin); in snd_pcm_plug_format_plugins()
543 err = snd_pcm_plugin_append(plugin); in snd_pcm_plug_format_plugins()
545 snd_pcm_plugin_free(plugin); in snd_pcm_plug_format_plugins()
558 struct snd_pcm_plugin *plugin; in snd_pcm_plug_client_channels_buf() local
567 plugin = snd_pcm_plug_first(plug); in snd_pcm_plug_client_channels_buf()
568 format = &plugin->src_format; in snd_pcm_plug_client_channels_buf()
570 plugin = snd_pcm_plug_last(plug); in snd_pcm_plug_client_channels_buf()
571 format = &plugin->dst_format; in snd_pcm_plug_client_channels_buf()
573 v = plugin->buf_channels; in snd_pcm_plug_client_channels_buf()
578 if (snd_BUG_ON(plugin->access != SNDRV_PCM_ACCESS_RW_INTERLEAVED && in snd_pcm_plug_client_channels_buf()
594 struct snd_pcm_plugin *plugin, *next; in snd_pcm_plug_write_transfer() local
599 plugin = snd_pcm_plug_first(plug); in snd_pcm_plug_write_transfer()
600 while (plugin) { in snd_pcm_plug_write_transfer()
603 if ((next = plugin->next) != NULL) { in snd_pcm_plug_write_transfer()
605 if (plugin->dst_frames) { in snd_pcm_plug_write_transfer()
606 frames1 = plugin->dst_frames(plugin, frames); in snd_pcm_plug_write_transfer()
615 if (plugin->src_frames) { in snd_pcm_plug_write_transfer()
616 frames = plugin->src_frames(plugin, frames1); in snd_pcm_plug_write_transfer()
623 pdprintf("write plugin: %s, %li\n", plugin->name, frames); in snd_pcm_plug_write_transfer()
624 if ((frames = plugin->transfer(plugin, src_channels, dst_channels, frames)) < 0) in snd_pcm_plug_write_transfer()
627 plugin = next; in snd_pcm_plug_write_transfer()
634 struct snd_pcm_plugin *plugin, *next; in snd_pcm_plug_read_transfer() local
644 plugin = snd_pcm_plug_first(plug); in snd_pcm_plug_read_transfer()
645 while (plugin && frames > 0) { in snd_pcm_plug_read_transfer()
646 if ((next = plugin->next) != NULL) { in snd_pcm_plug_read_transfer()
647 if ((err = plugin->client_channels(plugin, frames, &dst_channels)) < 0) { in snd_pcm_plug_read_transfer()
654 pdprintf("read plugin: %s, %li\n", plugin->name, frames); in snd_pcm_plug_read_transfer()
655 if ((frames = plugin->transfer(plugin, src_channels, dst_channels, frames)) < 0) in snd_pcm_plug_read_transfer()
657 plugin = next; in snd_pcm_plug_read_transfer()