Lines Matching refs:pcm

2  * \file pcm/pcm_null.c
50 static int snd_pcm_null_close(snd_pcm_t *pcm)
52 snd_pcm_null_t *null = pcm->private_data;
58 static int snd_pcm_null_nonblock(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int nonblock ATTRIBUTE_UNUSED)
63 static int snd_pcm_null_async(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int sig ATTRIBUTE_UNUSED, pid_t pid ATTRIBUTE_UNUSED)
68 static int snd_pcm_null_info(snd_pcm_t *pcm, snd_pcm_info_t * info)
71 info->stream = pcm->stream;
73 if (pcm->name) {
74 snd_strlcpy((char *)info->id, pcm->name, sizeof(info->id));
75 snd_strlcpy((char *)info->name, pcm->name, sizeof(info->name));
76 snd_strlcpy((char *)info->subname, pcm->name, sizeof(info->subname));
82 static snd_pcm_sframes_t snd_pcm_null_avail_update(snd_pcm_t *pcm)
84 snd_pcm_null_t *null = pcm->private_data;
88 return snd_pcm_mmap_avail(pcm);
90 return pcm->buffer_size;
93 static int snd_pcm_null_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
95 snd_pcm_null_t *null = pcm->private_data;
99 status->appl_ptr = *pcm->appl.ptr;
100 status->hw_ptr = *pcm->hw.ptr;
101 gettimestamp(&status->tstamp, pcm->tstamp_type);
102 status->avail = snd_pcm_null_avail_update(pcm);
103 status->avail_max = pcm->buffer_size;
107 static snd_pcm_state_t snd_pcm_null_state(snd_pcm_t *pcm)
109 snd_pcm_null_t *null = pcm->private_data;
113 static int snd_pcm_null_hwsync(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
118 static int snd_pcm_null_delay(snd_pcm_t *pcm ATTRIBUTE_UNUSED, snd_pcm_sframes_t *delayp)
124 static int snd_pcm_null_reset(snd_pcm_t *pcm)
126 *pcm->appl.ptr = 0;
127 *pcm->hw.ptr = 0;
131 static int snd_pcm_null_prepare(snd_pcm_t *pcm)
133 snd_pcm_null_t *null = pcm->private_data;
135 return snd_pcm_null_reset(pcm);
138 static int snd_pcm_null_start(snd_pcm_t *pcm)
140 snd_pcm_null_t *null = pcm->private_data;
143 if (pcm->stream == SND_PCM_STREAM_CAPTURE)
144 *pcm->hw.ptr = *pcm->appl.ptr + pcm->buffer_size;
146 *pcm->hw.ptr = *pcm->appl.ptr;
150 static int snd_pcm_null_drop(snd_pcm_t *pcm)
152 snd_pcm_null_t *null = pcm->private_data;
158 static int snd_pcm_null_drain(snd_pcm_t *pcm)
160 snd_pcm_null_t *null = pcm->private_data;
166 static int snd_pcm_null_pause(snd_pcm_t *pcm, int enable)
168 snd_pcm_null_t *null = pcm->private_data;
181 static snd_pcm_sframes_t snd_pcm_null_rewindable(snd_pcm_t *pcm)
183 return pcm->buffer_size;
186 static snd_pcm_sframes_t snd_pcm_null_forwardable(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
192 static snd_pcm_sframes_t snd_pcm_null_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
194 snd_pcm_null_t *null = pcm->private_data;
197 snd_pcm_mmap_hw_backward(pcm, frames);
200 snd_pcm_mmap_appl_backward(pcm, frames);
207 static snd_pcm_sframes_t snd_pcm_null_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
209 snd_pcm_null_t *null = pcm->private_data;
212 snd_pcm_mmap_hw_forward(pcm, frames);
215 snd_pcm_mmap_appl_forward(pcm, frames);
222 static int snd_pcm_null_resume(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
227 static snd_pcm_sframes_t snd_pcm_null_xfer_areas(snd_pcm_t *pcm,
232 snd_pcm_mmap_appl_forward(pcm, size);
233 snd_pcm_mmap_hw_forward(pcm, size);
237 static snd_pcm_sframes_t snd_pcm_null_writei(snd_pcm_t *pcm, const void *buffer ATTRIBUTE_UNUSED, snd_pcm_uframes_t size)
239 return snd_pcm_write_areas(pcm, NULL, 0, size, snd_pcm_null_xfer_areas);
242 static snd_pcm_sframes_t snd_pcm_null_writen(snd_pcm_t *pcm, void **bufs ATTRIBUTE_UNUSED, snd_pcm_uframes_t size)
244 return snd_pcm_write_areas(pcm, NULL, 0, size, snd_pcm_null_xfer_areas);
247 static snd_pcm_sframes_t snd_pcm_null_readi(snd_pcm_t *pcm, void *buffer ATTRIBUTE_UNUSED, snd_pcm_uframes_t size)
249 return snd_pcm_read_areas(pcm, NULL, 0, size, snd_pcm_null_xfer_areas);
252 static snd_pcm_sframes_t snd_pcm_null_readn(snd_pcm_t *pcm, void **bufs ATTRIBUTE_UNUSED, snd_pcm_uframes_t size)
254 return snd_pcm_read_areas(pcm, NULL, 0, size, snd_pcm_null_xfer_areas);
257 static snd_pcm_sframes_t snd_pcm_null_mmap_commit(snd_pcm_t *pcm,
261 return snd_pcm_null_forward(pcm, size);
264 static int snd_pcm_null_hw_refine(snd_pcm_t *pcm ATTRIBUTE_UNUSED, snd_pcm_hw_params_t *params)
276 err = snd_pcm_hw_refine_soft(pcm, params);
283 static int snd_pcm_null_hw_params(snd_pcm_t *pcm ATTRIBUTE_UNUSED, snd_pcm_hw_params_t * params ATTRIBUTE_UNUSED)
288 static int snd_pcm_null_hw_free(snd_pcm_t *pcm ATTRIBUTE_UNUSED)
293 static int snd_pcm_null_sw_params(snd_pcm_t *pcm ATTRIBUTE_UNUSED, snd_pcm_sw_params_t * params ATTRIBUTE_UNUSED)
298 static snd_pcm_chmap_query_t **snd_pcm_null_query_chmaps(snd_pcm_t *pcm)
300 snd_pcm_null_t *null = pcm->private_data;
307 static snd_pcm_chmap_t *snd_pcm_null_get_chmap(snd_pcm_t *pcm)
309 snd_pcm_null_t *null = pcm->private_data;
312 return _snd_pcm_choose_fixed_chmap(pcm, null->chmap);
316 static void snd_pcm_null_dump(snd_pcm_t *pcm, snd_output_t *out)
319 if (pcm->setup) {
321 snd_pcm_dump_setup(pcm, out);
381 snd_pcm_t *pcm;
407 err = snd_pcm_new(&pcm, SND_PCM_TYPE_NULL, name, stream, mode);
413 pcm->ops = &snd_pcm_null_ops;
414 pcm->fast_ops = &snd_pcm_null_fast_ops;
415 pcm->private_data = null;
416 pcm->poll_fd = fd;
417 pcm->poll_events = stream == SND_PCM_STREAM_PLAYBACK ? POLLOUT : POLLIN;
418 snd_pcm_set_hw_ptr(pcm, &null->hw_ptr, -1, 0);
419 snd_pcm_set_appl_ptr(pcm, &null->appl_ptr, -1, 0);
420 *pcmp = pcm;
436 pcm.name {