Lines Matching defs:capt

340 	if ((err = setparams_stream(loop->capt, ct_params)) < 0) {
341 logit(LOG_CRIT, "Unable to set parameters for %s stream: %s\n", loop->capt->id, snd_strerror(err));
349 if ((err = setparams_bufsize(loop->capt, c_params, ct_params, bufsize / loop->capt->pitch)) < 0) {
350 logit(LOG_CRIT, "Unable to set buffer parameters for %s stream: %s\n", loop->capt->id, snd_strerror(err));
358 if ((err = setparams_set(loop->capt, c_params, c_swparams, bufsize / loop->capt->pitch)) < 0) {
359 logit(LOG_CRIT, "Unable to set sw parameters for %s stream: %s\n", loop->capt->id, snd_strerror(err));
365 if (snd_pcm_link(loop->capt->handle, loop->play->handle) >= 0)
372 if (!loop->linked && (err = snd_pcm_prepare(loop->capt->handle)) < 0) {
373 logit(LOG_CRIT, "Prepare %s error: %s\n", loop->capt->id, snd_strerror(err));
379 snd_pcm_dump(loop->capt->handle, loop->output);
420 snd_pcm_delay(loop->capt->handle, &cdelay) >= 0) {
425 loop->xrun_buf_ccount = loop->capt->buf_count;
457 (double)loop->capt->rate) * 1000;
464 (double)loop->capt->rate) * 1000;
498 if (loop->play->buf == loop->capt->buf) {
499 if (count < loop->capt->buf_count)
500 loop->capt->buf_count -= count;
502 loop->capt->buf_count = 0;
509 struct loopback_handle *capt = loop->capt;
513 count = capt->buf_count;
514 cpos = capt->buf_pos - count;
515 if (cpos > capt->buf_size)
516 cpos += capt->buf_size;
520 if (count1 + cpos > capt->buf_size)
521 count1 = capt->buf_size - cpos;
529 capt->buf + cpos * capt->frame_size,
530 count1 * capt->frame_size);
532 capt->buf_count -= count1;
536 cpos %= capt->buf_size;
545 struct loopback_handle *capt = loop->capt;
549 count = capt->buf_count;
551 pos1 = capt->buf_pos - count;
552 if (pos1 > capt->buf_size)
553 pos1 += capt->buf_size;
556 if (count1 + pos1 > capt->buf_size)
557 count1 = capt->buf_size - pos1;
558 if (capt->format == SND_PCM_FORMAT_S32)
559 src_int_to_float_array((int *)(capt->buf +
560 pos1 * capt->frame_size),
562 pos * capt->channels,
563 count1 * capt->channels);
565 src_short_to_float_array((short *)(capt->buf +
566 pos1 * capt->frame_size),
568 pos * capt->channels,
569 count1 * capt->channels);
573 pos1 %= capt->buf_size;
583 capt->buf_count -= loop->src_data.input_frames_used;
596 if (capt->format == SND_PCM_FORMAT_S32)
638 if (loop->play->buf == loop->capt->buf) {
804 struct loopback_handle *capt = loop->capt;
806 if (loop->play->buf == loop->capt->buf) {
809 if ((snd_pcm_uframes_t)count > loop->capt->buf_count)
810 count = loop->capt->buf_count;
811 capt->buf_count -= count;
818 if ((snd_pcm_uframes_t)count > capt->buf_count)
819 count = capt->buf_count;
820 capt->buf_count -= count;
832 struct loopback_handle *capt = loop->capt;
839 snd_output_printf(loop->output, "%s: xrun sync %i %i\n", loop->id, capt->xrun_pending, play->xrun_pending);
840 if (capt->xrun_pending) {
842 capt->xrun_pending = 0;
843 if ((err = snd_pcm_prepare(capt->handle)) < 0) {
844 logit(LOG_CRIT, "%s prepare failed: %s\n", capt->id, snd_strerror(err));
847 if ((err = snd_pcm_start(capt->handle)) < 0) {
848 logit(LOG_CRIT, "%s start failed: %s\n", capt->id, snd_strerror(err));
852 diff = readit(capt);
854 if (capt->xrun_pending)
858 if ((err = snd_pcm_delay(capt->handle, &cdelay)) < 0) {
860 capt->xrun_pending = 1;
864 err = suspend(capt);
869 logit(LOG_CRIT, "%s capture delay failed: %s\n", capt->id, snd_strerror(err));
886 capt->counter = cdelay;
888 if (play->buf != capt->buf)
889 cdelay += capt->buf_count;
894 cdelay1 = cdelay * capt->pitch;
897 capt->total_queued = 0;
916 (long)capt->buf_count, (long)play->buf_count);
918 if (delay1 > fill && capt->counter > 0) {
919 if ((err = snd_pcm_drop(capt->handle)) < 0)
921 if ((err = snd_pcm_prepare(capt->handle)) < 0)
923 if ((err = snd_pcm_start(capt->handle)) < 0)
925 diff = remove_samples(loop, 1, (delay1 - fill) / capt->pitch);
928 "sync: capt stop removed %li samples\n", (long)diff);
947 diff = (delay1 - fill) / capt->pitch;
948 if ((snd_pcm_uframes_t)diff > capt->buf_count)
949 diff = capt->buf_count;
955 cdelay1 = cdelay * capt->pitch;
1021 if (snd_pcm_delay(capt->handle, &cdelay) < 0)
1025 if (play->buf != capt->buf)
1026 cdelay += capt->buf_count;
1031 cdelay1 = cdelay * capt->pitch;
1089 loop->play->pitch * loop->capt->pitch);
1095 set_rate_shift(loop->capt, pitch);
1100 (loop->play->pitch * loop->capt->pitch);
1113 (loop->play->pitch * loop->capt->pitch);
1390 if ((err = openit(loop->capt)) < 0)
1392 snprintf(id, sizeof(id), "%s/%s", loop->play->id, loop->capt->id);
1395 if (loop->sync == SYNC_TYPE_AUTO && (loop->capt->ctl_rate_shift || loop->capt->ctl_pitch))
1406 loop->capt->ctl_notify &&
1407 loop->capt->ctl_active &&
1408 loop->capt->ctl_format &&
1409 loop->capt->ctl_rate &&
1410 loop->capt->ctl_channels)
1413 err = set_notify(loop->capt, 1);
1416 if (loop->capt->ctl_notify == NULL ||
1417 snd_ctl_elem_value_get_boolean(loop->capt->ctl_notify, 0) == 0) {
1445 if (loop->play->buf == loop->capt->buf)
1448 freeit(loop->capt);
1455 closeit(loop->capt);
1484 snd_pcm_format_t format = loop->capt->format;
1495 loop->capt->format = format;
1505 loop->capt->ctl_pollfd_count;
1510 if ((err = snd_pcm_poll_descriptors_count(loop->capt->handle)) < 0)
1512 loop->capt->pollfd_count = err;
1515 err = get_active(loop->capt);
1520 err = get_format(loop->capt);
1523 loop->play->format = loop->capt->format = err;
1525 err = get_rate(loop->capt);
1528 loop->play->rate_req = loop->capt->rate_req = err;
1529 err = get_channels(loop->capt);
1532 loop->play->channels = loop->capt->channels = err;
1547 if (loop->play->access == loop->capt->access &&
1548 loop->play->format == loop->capt->format &&
1549 loop->play->rate == loop->capt->rate &&
1550 loop->play->channels == loop->capt->channels &&
1556 if ((err = init_handle(loop->capt, 0)) < 0)
1558 if (loop->play->buf_size < loop->capt->buf_size) {
1560 loop->capt->buf_size *
1561 loop->capt->frame_size);
1567 loop->play->buf_size = loop->capt->buf_size;
1568 } else if (loop->capt->buf_size < loop->play->buf_size) {
1569 char *nbuf = realloc(loop->capt->buf,
1576 loop->capt->buf = nbuf;
1577 loop->capt->buf_size = loop->play->buf_size;
1579 loop->capt->buf = loop->play->buf;
1583 if ((err = init_handle(loop->capt, 1)) < 0)
1586 loop->capt->rate_req != loop->capt->rate) {
1590 format2 = loop->capt->format;
1593 loop->capt->format != format2) {
1609 if ((loop->capt->format != SND_PCM_FORMAT_S16 ||
1611 (loop->capt->format != SND_PCM_FORMAT_S32 ||
1613 logit(LOG_CRIT, "samplerate conversion supports only %s or %s formats (play=%s, capt=%s)\n", snd_pcm_format_name(SND_PCM_FORMAT_S16), snd_pcm_format_name(SND_PCM_FORMAT_S32), snd_pcm_format_name(loop->play->format), snd_pcm_format_name(loop->capt->format));
1620 loop->src_data.data_in = calloc(1, sizeof(float)*loop->capt->channels*loop->capt->buf_size);
1631 (double)loop->capt->rate;
1653 lhandle_start(loop->capt);
1661 snd_output_printf(loop->output, "%s: capt->buffer_size = %li, play->buffer_size = %li\n", loop->id, loop->capt->buf_size, loop->play->buf_size);
1664 loop->pitch_delta = 1.0 / ((double)loop->capt->rate * 4);
1669 if (loop->play->buf == loop->capt->buf)
1670 loop->capt->buf_pos = count;
1689 if ((err = snd_pcm_start(loop->capt->handle)) < 0) {
1690 logit(LOG_CRIT, "pcm start %s error: %s\n", loop->capt->id, snd_strerror(err));
1710 if ((err = snd_pcm_drop(loop->capt->handle)) < 0)
1711 logit(LOG_WARNING, "pcm drop %s error: %s\n", loop->capt->id, snd_strerror(err));
1714 if ((err = snd_pcm_hw_free(loop->capt->handle)) < 0)
1715 logit(LOG_WARNING, "pcm hw_free %s error: %s\n", loop->capt->id, snd_strerror(err));
1733 err = snd_pcm_poll_descriptors(loop->capt->handle, fds + idx, loop->capt->pollfd_count);
1736 idx += loop->capt->pollfd_count;
1745 if (loop->capt->ctl_pollfd_count > 0 &&
1747 err = snd_ctl_poll_descriptors(loop->capt->ctl, fds + idx, loop->capt->ctl_pollfd_count);
1750 idx += loop->capt->ctl_pollfd_count;
1775 if ((err = snd_pcm_delay(loop->capt->handle, &delay)) < 0)
1777 loop->capt->last_delay = delay;
1778 delay += loop->capt->buf_count;
1859 struct loopback_handle *capt = loop->capt;
1874 if ((err = snd_pcm_delay(capt->handle, &cdelay)) < 0)
1875 snd_output_printf(loop->output, "%s: delay error: %s / %li / %li\n", capt->id, snd_strerror(err), capt->buf_size, capt->buf_count);
1877 snd_output_printf(loop->output, "%s: delay %li / %li / %li\n", capt->id, cdelay, capt->buf_size, capt->buf_count);
1887 err = snd_pcm_poll_descriptors_revents(capt->handle, fds + idx,
1888 capt->pollfd_count,
1892 idx += capt->pollfd_count;
1920 if (capt->ctl_pollfd_count > 0 &&
1922 err = snd_ctl_poll_descriptors_revents(capt->ctl, fds + idx,
1923 capt->ctl_pollfd_count,
1928 err = handle_ctl_events(capt, events);
1934 idx += capt->ctl_pollfd_count;
1941 ccount = readit(capt);
1955 if (capt->xrun_pending || loop->reinit)
1967 if (play->xrun_pending || capt->xrun_pending) {
1981 capt->counter >= play->sync_point) {
1984 ((double)capt->total_queued * capt->pitch)) /
2007 capt->counter -= play->sync_point;
2009 capt->total_queued = 0;
2029 capt->total_queued += cqueued;
2039 if ((err = snd_pcm_delay(capt->handle, &cdelay)) < 0)
2040 snd_output_printf(loop->output, "%s: end delay error: %s / %li / %li\n", capt->id, snd_strerror(err), capt->buf_size, capt->buf_count);
2042 snd_output_printf(loop->output, "%s: end delay %li / %li / %li\n", capt->id, cdelay, capt->buf_size, capt->buf_count);
2093 show_handle(loop->capt, "capture");