Home | History | Annotate | Download | only in libalsa-intf

Lines Matching refs:pcm

55     {"pcm", 0, 0, 'P'},
83 static int set_params(struct pcm *pcm)
90 unsigned int requestedRate = pcm->rate;
91 int channels = (pcm->flags & PCM_MONO) ? 1 : ((pcm->flags & PCM_5POINT1)? 6 : 2 );
102 (pcm->flags & PCM_MMAP)? SNDRV_PCM_ACCESS_MMAP_INTERLEAVED : SNDRV_PCM_ACCESS_RW_INTERLEAVED);
103 param_set_mask(params, SNDRV_PCM_HW_PARAM_FORMAT, pcm->format);
112 pcm->channels * 16);
114 pcm->channels);
115 param_set_int(params, SNDRV_PCM_HW_PARAM_RATE, pcm->rate);
116 param_set_hw_refine(pcm, params);
118 if (param_set_hw_params(pcm, params)) {
125 pcm->buffer_size = pcm_buffer_size(params);
126 pcm->period_size = pcm_period_size(params);
127 pcm->period_cnt = pcm->buffer_size/pcm->period_size;
129 fprintf (stderr,"period_cnt = %d\n", pcm->period_cnt);
130 fprintf (stderr,"period_size = %d\n", pcm->period_size);
131 fprintf (stderr,"buffer_size = %d\n", pcm->buffer_size);
142 sparams->avail_min = pcm->period_size/(channels * 2) ;
143 sparams->start_threshold = pcm->period_size/(channels * 2) ;
144 sparams->stop_threshold = pcm->buffer_size ;
145 sparams->xfer_align = pcm->period_size/(channels * 2) ; /* needed for old kernels */
150 if (param_set_sw_params(pcm, sparams)) {
167 struct pcm *pcm;
196 pcm = pcm_open(flags, device);
197 if (pcm < 0)
198 return pcm;
200 if (!pcm_ready(pcm)) {
201 pcm_close(pcm);
209 if (ioctl(pcm->fd, SNDRV_COMPRESS_GET_CAPS, &compr_cap)) {
211 pcm_close(pcm);
227 if (ioctl(pcm->fd, SNDRV_COMPRESS_SET_PARAMS, &compr_params)) {
229 pcm_close(pcm);
234 pcm->channels = channels;
235 pcm->rate = rate;
236 pcm->flags = flags;
237 pcm->format = format;
238 if (set_params(pcm)) {
240 pcm_close(pcm);
245 if (pcm_prepare(pcm)) {
247 pcm_close(pcm);
250 if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_START)) {
252 pcm_close(pcm);
262 struct snd_pcm_sync_ptr *sync_ptr1 = pcm->sync_ptr;
263 if (mmap_buffer(pcm)) {
265 pcm_close(pcm);
268 if (pcm_prepare(pcm)) {
270 pcm_close(pcm);
274 bufsize = pcm->period_size;
278 pfd[0].fd = pcm->timer_fd;
281 frames = (pcm->flags & PCM_MONO) ? (bufsize / 2) : (bufsize / 4);
283 if (!pcm->running) {
284 if (pcm_prepare(pcm)) {
286 pcm_close(pcm);
289 pcm->running = 1;
293 pcm->sync_ptr->flags = SNDRV_PCM_SYNC_PTR_APPL | SNDRV_PCM_SYNC_PTR_AVAIL_MIN;//SNDRV_PCM_SYNC_PTR_HWSYNC;
294 err = sync_ptr(pcm);
298 pcm->underruns++;
299 pcm->running = 0;
306 avail = pcm_avail(pcm);
309 pcm_close(pcm);
312 if (avail < pcm->sw_p->avail_min) {
321 dst_addr = dst_address(pcm);
326 fprintf(stderr, "Aplay:sync_ptr->s.status.hw_ptr %ld pcm->buffer_size %d sync_ptr->c.control.appl_ptr %ld\n",
327 pcm->sync_ptr->s.status.hw_ptr,
328 pcm->buffer_size,
329 pcm->sync_ptr->c.control.appl_ptr);
341 frames = (pcm->flags & PCM_MONO) ? (remainingData / 2) : (remainingData / 4);
361 pcm->sync_ptr->c.control.appl_ptr += frames;
362 pcm->sync_ptr->flags = 0;
364 err = sync_ptr(pcm);
368 pcm->underruns++;
369 pcm->running = 0;
375 pcm->sync_ptr->s.status.hw_ptr,
376 pcm->sync_ptr->c.control.appl_ptr);
380 if (ioctl(pcm->fd, SNDRV_COMPRESS_TSTAMP, &tstamp))
393 if (ioctl(pcm->fd, SNDRV_PCM_IOCTL_START)) {
398 pcm->underruns++;
399 pcm->running = 0;
403 pcm_close(pcm);
413 pcm->sync_ptr->flags = SNDRV_PCM_SYNC_PTR_APPL | SNDRV_PCM_SYNC_PTR_AVAIL_MIN;//SNDRV_PCM_SYNC_PTR_HWSYNC;
414 sync_ptr(pcm);
419 if (pcm->sync_ptr->s.status.hw_ptr >= pcm->sync_ptr->c.control.appl_ptr) {
421 pcm->sync_ptr->s.status.hw_ptr,
422 pcm->sync_ptr->c.control.appl_ptr);
428 if (pcm_prepare(pcm)) {
430 pcm_close(pcm);
434 bufsize = pcm->period_size;
439 pcm_close(pcm);
449 if (pcm_write(pcm, data, bufsize)){
452 pcm_close(pcm);
468 pcm_close(pcm);
535 fprintf(stderr, "Aplay:aplay: '%s' is not pcm format\n", fn);
573 "-D <hw:C,D> -- Alsa PCM by name\n"
575 "-P -- Hostless steam[No PCM]\n"
625 "-D <hw:C,D> -- Alsa PCM by name\n"
627 "-P -- Hostless steam[No PCM]\n"