• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/iserver/alsa-lib-1.0.26/src/pcm/

Lines Matching defs:pcm

2  * \file pcm/pcm_dsnoop.c
57 static int snoop_timestamp(snd_pcm_t *pcm)
59 snd_pcm_direct_t *dsnoop = pcm->private_data;
102 static void snd_pcm_dsnoop_sync_area(snd_pcm_t *pcm, snd_pcm_uframes_t slave_hw_ptr, snd_pcm_uframes_t size)
104 snd_pcm_direct_t *dsnoop = pcm->private_data;
110 dst_areas = snd_pcm_mmap_areas(pcm);
112 hw_ptr %= pcm->buffer_size;
115 transfer = hw_ptr + size > pcm->buffer_size ? pcm->buffer_size - hw_ptr : size;
123 hw_ptr %= pcm->buffer_size;
130 static int snd_pcm_dsnoop_sync_ptr(snd_pcm_t *pcm)
132 snd_pcm_direct_t *dsnoop = pcm->private_data;
146 snoop_timestamp(pcm);
155 snd_pcm_dsnoop_sync_area(pcm, old_slave_hw_ptr, diff);
157 dsnoop->hw_ptr %= pcm->boundary;
159 if (pcm->stop_threshold >= pcm->boundary) /* don't care */
161 if ((avail = snd_pcm_mmap_capture_hw_avail(pcm)) >= pcm->stop_threshold) {
162 gettimestamp(&dsnoop->trigger_tstamp, pcm->monotonic);
176 static int snd_pcm_dsnoop_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
178 snd_pcm_direct_t *dsnoop = pcm->private_data;
184 snd_pcm_dsnoop_sync_ptr(pcm);
194 status->avail = snd_pcm_mmap_capture_avail(pcm);
200 static snd_pcm_state_t snd_pcm_dsnoop_state(snd_pcm_t *pcm)
202 snd_pcm_direct_t *dsnoop = pcm->private_data;
215 static int snd_pcm_dsnoop_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)
217 snd_pcm_direct_t *dsnoop = pcm->private_data;
223 err = snd_pcm_dsnoop_sync_ptr(pcm);
229 *delayp = snd_pcm_mmap_capture_hw_avail(pcm);
240 static int snd_pcm_dsnoop_hwsync(snd_pcm_t *pcm)
242 snd_pcm_direct_t *dsnoop = pcm->private_data;
247 return snd_pcm_dsnoop_sync_ptr(pcm);
260 static int snd_pcm_dsnoop_prepare(snd_pcm_t *pcm)
262 snd_pcm_direct_t *dsnoop = pcm->private_data;
264 snd_pcm_direct_check_interleave(dsnoop, pcm);
271 static int snd_pcm_dsnoop_reset(snd_pcm_t *pcm)
273 snd_pcm_direct_t *dsnoop = pcm->private_data;
274 dsnoop->hw_ptr %= pcm->period_size;
280 static int snd_pcm_dsnoop_start(snd_pcm_t *pcm)
282 snd_pcm_direct_t *dsnoop = pcm->private_data;
288 snoop_timestamp(pcm);
298 static int snd_pcm_dsnoop_drop(snd_pcm_t *pcm)
300 snd_pcm_direct_t *dsnoop = pcm->private_data;
308 static int snd_pcm_dsnoop_drain(snd_pcm_t *pcm)
310 snd_pcm_direct_t *dsnoop = pcm->private_data;
316 stop_threshold = pcm->stop_threshold;
317 if (pcm->stop_threshold > pcm->buffer_size)
318 pcm->stop_threshold = pcm->buffer_size;
320 err = snd_pcm_dsnoop_sync_ptr(pcm);
323 if (pcm->mode & SND_PCM_NONBLOCK)
325 snd_pcm_wait(pcm, -1);
327 pcm->stop_threshold = stop_threshold;
328 return snd_pcm_dsnoop_drop(pcm);
331 static int snd_pcm_dsnoop_pause(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int enable ATTRIBUTE_UNUSED)
336 static snd_pcm_sframes_t snd_pcm_dsnoop_rewindable(snd_pcm_t *pcm)
338 return snd_pcm_mmap_capture_avail(pcm);
341 static snd_pcm_sframes_t snd_pcm_dsnoop_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
345 avail = snd_pcm_mmap_capture_avail(pcm);
350 snd_pcm_mmap_appl_backward(pcm, frames);
354 static snd_pcm_sframes_t snd_pcm_dsnoop_forwardable(snd_pcm_t *pcm)
356 return snd_pcm_mmap_capture_hw_avail(pcm);
359 static snd_pcm_sframes_t snd_pcm_dsnoop_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
363 avail = snd_pcm_mmap_capture_hw_avail(pcm);
368 snd_pcm_mmap_appl_forward(pcm, frames);
372 static snd_pcm_sframes_t snd_pcm_dsnoop_writei(snd_pcm_t *pcm ATTRIBUTE_UNUSED, const void *buffer ATTRIBUTE_UNUSED, snd_pcm_uframes_t size ATTRIBUTE_UNUSED)
377 static snd_pcm_sframes_t snd_pcm_dsnoop_writen(snd_pcm_t *pcm ATTRIBUTE_UNUSED, void **bufs ATTRIBUTE_UNUSED, snd_pcm_uframes_t size ATTRIBUTE_UNUSED)
382 static int snd_pcm_dsnoop_close(snd_pcm_t *pcm)
384 snd_pcm_direct_t *dsnoop = pcm->private_data;
399 pcm->private_data = NULL;
404 static snd_pcm_sframes_t snd_pcm_dsnoop_mmap_commit(snd_pcm_t *pcm,
408 snd_pcm_direct_t *dsnoop = pcm->private_data;
420 err = snd_pcm_dsnoop_sync_ptr(pcm);
424 snd_pcm_mmap_appl_forward(pcm, size);
426 if (snd_pcm_mmap_capture_avail(pcm) < pcm->avail_min)
431 static snd_pcm_sframes_t snd_pcm_dsnoop_avail_update(snd_pcm_t *pcm)
433 snd_pcm_direct_t *dsnoop = pcm->private_data;
437 err = snd_pcm_dsnoop_sync_ptr(pcm);
441 return snd_pcm_mmap_capture_avail(pcm);
444 static int snd_pcm_dsnoop_htimestamp(snd_pcm_t *pcm,
448 snd_pcm_direct_t *dsnoop = pcm->private_data;
455 snd_pcm_dsnoop_sync_ptr(pcm);
456 avail1 = snd_pcm_mmap_capture_avail(pcm);
465 static void snd_pcm_dsnoop_dump(snd_pcm_t *pcm, snd_output_t *out)
467 snd_pcm_direct_t *dsnoop = pcm->private_data;
470 if (pcm->setup) {
472 snd_pcm_dump_setup(pcm, out);
545 snd_pcm_t *pcm = NULL, *spcm = NULL;
572 ret = snd_pcm_new(&pcm, dsnoop->type = SND_PCM_TYPE_DSNOOP, name, stream, mode);
599 pcm->ops = &snd_pcm_dsnoop_ops;
600 pcm->fast_ops = &snd_pcm_dsnoop_fast_ops;
601 pcm->private_data = dsnoop;
686 pcm->poll_fd = dsnoop->poll_fd;
687 pcm->poll_events = POLLIN; /* it's different than other plugins */
689 pcm->mmap_rw = 1;
690 snd_pcm_set_hw_ptr(pcm, &dsnoop->hw_ptr, -1, 0);
691 snd_pcm_set_appl_ptr(pcm, &dsnoop->appl_ptr, -1, 0);
698 *pcmp = pcm;
719 if (pcm)
720 snd_pcm_free(pcm);
735 pcm.name {
743 pcm STR # slave PCM name
745 pcm { } # slave PCM definition