• 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_dshare.c
58 static void do_silence(snd_pcm_t *pcm)
60 snd_pcm_direct_t *dshare = pcm->private_data;
103 static void snd_pcm_dshare_sync_area(snd_pcm_t *pcm)
105 snd_pcm_direct_t *dshare = pcm->private_data;
132 src_areas = snd_pcm_mmap_areas(pcm);
134 appl_ptr = dshare->last_appl_ptr % pcm->buffer_size;
136 dshare->last_appl_ptr %= pcm->boundary;
142 if (appl_ptr + transfer > pcm->buffer_size)
143 transfer = pcm->buffer_size - appl_ptr;
153 appl_ptr %= pcm->buffer_size;
160 static int snd_pcm_dshare_sync_ptr(snd_pcm_t *pcm)
162 snd_pcm_direct_t *dshare = pcm->private_data;
189 dshare->hw_ptr %= pcm->boundary;
191 if (pcm->stop_threshold >= pcm->boundary) /* don't care */
193 avail = snd_pcm_mmap_playback_avail(pcm);
196 if (avail >= pcm->stop_threshold) {
198 gettimestamp(&dshare->trigger_tstamp, pcm->monotonic);
214 static int snd_pcm_dshare_status(snd_pcm_t *pcm, snd_pcm_status_t * status)
216 snd_pcm_direct_t *dshare = pcm->private_data;
221 snd_pcm_dshare_sync_ptr(pcm);
229 gettimestamp(&status->tstamp, pcm->monotonic);
230 status->avail = snd_pcm_mmap_playback_avail(pcm);
236 static snd_pcm_state_t snd_pcm_dshare_state(snd_pcm_t *pcm)
238 snd_pcm_direct_t *dshare = pcm->private_data;
252 static int snd_pcm_dshare_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp)
254 snd_pcm_direct_t *dshare = pcm->private_data;
260 err = snd_pcm_dshare_sync_ptr(pcm);
267 *delayp = snd_pcm_mmap_playback_hw_avail(pcm);
278 static int snd_pcm_dshare_hwsync(snd_pcm_t *pcm)
280 snd_pcm_direct_t *dshare = pcm->private_data;
285 return snd_pcm_dshare_sync_ptr(pcm);
298 static int snd_pcm_dshare_prepare(snd_pcm_t *pcm)
300 snd_pcm_direct_t *dshare = pcm->private_data;
302 snd_pcm_direct_check_interleave(dshare, pcm);
309 static int snd_pcm_dshare_reset(snd_pcm_t *pcm)
311 snd_pcm_direct_t *dshare = pcm->private_data;
312 dshare->hw_ptr %= pcm->period_size;
331 static int snd_pcm_dshare_start(snd_pcm_t *pcm)
333 snd_pcm_direct_t *dshare = pcm->private_data;
339 avail = snd_pcm_mmap_playback_hw_avail(pcm);
347 snd_pcm_dshare_sync_area(pcm);
349 gettimestamp(&dshare->trigger_tstamp, pcm->monotonic);
353 static int snd_pcm_dshare_drop(snd_pcm_t *pcm)
355 snd_pcm_direct_t *dshare = pcm->private_data;
360 do_silence(pcm);
364 static int snd_pcm_dshare_drain(snd_pcm_t *pcm)
366 snd_pcm_direct_t *dshare = pcm->private_data;
372 if (pcm->mode & SND_PCM_NONBLOCK)
375 if (snd_pcm_mmap_playback_hw_avail(pcm) > 0)
376 snd_pcm_dshare_start(pcm);
378 snd_pcm_dshare_drop(pcm);
384 snd_pcm_dshare_drop(pcm);
388 stop_threshold = pcm->stop_threshold;
389 if (pcm->stop_threshold > pcm->buffer_size)
390 pcm->stop_threshold = pcm->buffer_size;
393 err = snd_pcm_dshare_sync_ptr(pcm);
395 snd_pcm_dshare_drop(pcm);
399 snd_pcm_dshare_sync_area(pcm);
400 snd_pcm_wait_nocheck(pcm, -1);
404 pcm->stop_threshold = stop_threshold;
408 static int snd_pcm_dshare_pause(snd_pcm_t *pcm ATTRIBUTE_UNUSED, int enable ATTRIBUTE_UNUSED)
413 static snd_pcm_sframes_t snd_pcm_dshare_rewindable(snd_pcm_t *pcm)
415 return snd_pcm_mmap_playback_hw_avail(pcm);
418 static snd_pcm_sframes_t snd_pcm_dshare_rewind(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
422 avail = snd_pcm_mmap_playback_hw_avail(pcm);
427 snd_pcm_mmap_appl_backward(pcm, frames);
431 static snd_pcm_sframes_t snd_pcm_dshare_forwardable(snd_pcm_t *pcm)
433 return snd_pcm_mmap_playback_avail(pcm);
436 static snd_pcm_sframes_t snd_pcm_dshare_forward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
440 avail = snd_pcm_mmap_playback_avail(pcm);
445 snd_pcm_mmap_appl_forward(pcm, frames);
449 static snd_pcm_sframes_t snd_pcm_dshare_readi(snd_pcm_t *pcm ATTRIBUTE_UNUSED, void *buffer ATTRIBUTE_UNUSED, snd_pcm_uframes_t size ATTRIBUTE_UNUSED)
454 static snd_pcm_sframes_t snd_pcm_dshare_readn(snd_pcm_t *pcm ATTRIBUTE_UNUSED, void **bufs ATTRIBUTE_UNUSED, snd_pcm_uframes_t size ATTRIBUTE_UNUSED)
459 static int snd_pcm_dshare_close(snd_pcm_t *pcm)
461 snd_pcm_direct_t *dshare = pcm->private_data;
465 do_silence(pcm);
478 pcm->private_data = NULL;
483 static snd_pcm_sframes_t snd_pcm_dshare_mmap_commit(snd_pcm_t *pcm,
487 snd_pcm_direct_t *dshare = pcm->private_data;
500 snd_pcm_mmap_appl_forward(pcm, size);
506 snd_pcm_dshare_sync_ptr(pcm);
511 snd_pcm_dshare_sync_area(pcm);
513 if (snd_pcm_mmap_playback_avail(pcm) < pcm->avail_min)
519 static snd_pcm_sframes_t snd_pcm_dshare_avail_update(snd_pcm_t *pcm)
521 snd_pcm_direct_t *dshare = pcm->private_data;
525 snd_pcm_dshare_sync_ptr(pcm);
526 return snd_pcm_mmap_playback_avail(pcm);
529 static int snd_pcm_dshare_htimestamp(snd_pcm_t *pcm,
533 snd_pcm_direct_t *dshare = pcm->private_data;
540 snd_pcm_dshare_sync_ptr(pcm);
541 avail1 = snd_pcm_mmap_playback_avail(pcm);
550 static void snd_pcm_dshare_dump(snd_pcm_t *pcm, snd_output_t *out)
552 snd_pcm_direct_t *dshare = pcm->private_data;
555 if (pcm->setup) {
557 snd_pcm_dump_setup(pcm, out);
630 snd_pcm_t *pcm = NULL, *spcm = NULL;
665 ret = snd_pcm_new(&pcm, dshare->type = SND_PCM_TYPE_DSHARE, name, stream, mode);
692 pcm->ops = &snd_pcm_dshare_ops;
693 pcm->fast_ops = &snd_pcm_dshare_fast_ops;
694 pcm->private_data = dshare;
789 pcm->poll_fd = dshare->poll_fd;
790 pcm->poll_events = POLLIN; /* it's different than other plugins */
792 pcm->mmap_rw = 1;
793 snd_pcm_set_hw_ptr(pcm, &dshare->hw_ptr, -1, 0);
794 snd_pcm_set_appl_ptr(pcm, &dshare->appl_ptr, -1, 0);
798 *pcmp = pcm;
821 if (pcm)
822 snd_pcm_free(pcm);
838 pcm.name {
846 pcm STR # slave PCM name
848 pcm { } # slave PCM definition