Update of /cvsroot/pure-data/pd/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv3534
Modified Files: Tag: desiredata s_audio_alsa.c Log Message: remove fprintf
Index: s_audio_alsa.c =================================================================== RCS file: /cvsroot/pure-data/pd/src/s_audio_alsa.c,v retrieving revision 1.5.4.5.2.2.2.10 retrieving revision 1.5.4.5.2.2.2.11 diff -C2 -d -r1.5.4.5.2.2.2.10 -r1.5.4.5.2.2.2.11 *** s_audio_alsa.c 10 Jul 2007 16:15:00 -0000 1.5.4.5.2.2.2.10 --- s_audio_alsa.c 30 Jul 2007 23:48:34 -0000 1.5.4.5.2.2.2.11 *************** *** 1,4 **** ! /* Copyright (c) 1997-2003 Guenter Geiger, Miller Puckette, Larry Troxler, ! * Winfried Ritsch, Karl MacMillan, and others. * For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ --- 1,3 ---- ! /* Copyright (c) 1997-2003 Guenter Geiger, Miller Puckette, Larry Troxler, Winfried Ritsch, Karl MacMillan, and others. * For information on usage and redistribution, and for a DISCLAIMER OF ALL * WARRANTIES, see the file, "LICENSE.txt," in this distribution. */ *************** *** 59,65 **** int alsa_noutdev;
! static void check_error(int err, const char *why) { ! if (err < 0) fprintf(stderr, "%s: %s\n", why, snd_strerror(err)); ! }
static int alsaio_canmmap(t_alsa_dev *dev) { --- 58,62 ---- int alsa_noutdev;
! static void check_error(int err, const char *why) {if (err<0) error("%s: %s", why, snd_strerror(err));}
static int alsaio_canmmap(t_alsa_dev *dev) { *************** *** 77,81 **** } else err2 = -1; #if 0 ! post("err 1 %d (%s), err2 %d (%s)", err1, snd_strerror(err1), err2, snd_strerror(err2)); #endif return err1<0 && err2>=0; --- 74,78 ---- } else err2 = -1; #if 0 ! error("err 1 %d (%s), err2 %d (%s)", err1, snd_strerror(err1), err2, snd_strerror(err2)); #endif return err1<0 && err2>=0; *************** *** 102,107 **** /* Try to set 32 bit format first */ err = snd_pcm_hw_params_set_format(dev->a_handle, hw_params, SND_PCM_FORMAT_S32); ! if (err < 0) { ! /* fprintf(stderr,"PD-ALSA: 32 bit format not available - using 16\n"); */ err = snd_pcm_hw_params_set_format(dev->a_handle, hw_params,SND_PCM_FORMAT_S16); check_error(err, "snd_pcm_hw_params_set_format"); --- 99,104 ---- /* Try to set 32 bit format first */ err = snd_pcm_hw_params_set_format(dev->a_handle, hw_params, SND_PCM_FORMAT_S32); ! if (err<0) { ! error("PD-ALSA: 32 bit format not available - using 16"); err = snd_pcm_hw_params_set_format(dev->a_handle, hw_params,SND_PCM_FORMAT_S16); check_error(err, "snd_pcm_hw_params_set_format"); *************** *** 116,121 **** err = snd_pcm_hw_params_set_channels_min(dev->a_handle, hw_params, &tmp_uint); check_error(err, "snd_pcm_hw_params_set_channels"); ! if (tmp_uint != (unsigned)*channels) ! post("ALSA: set input channels to %d", tmp_uint); *channels = tmp_uint; dev->a_channels = *channels; --- 113,117 ---- err = snd_pcm_hw_params_set_channels_min(dev->a_handle, hw_params, &tmp_uint); check_error(err, "snd_pcm_hw_params_set_channels"); ! if (tmp_uint != (unsigned)*channels) post("ALSA: set input channels to %d", tmp_uint); *channels = tmp_uint; dev->a_channels = *channels; *************** *** 159,174 **** if (alsa_snd_buf) { if (alsa_snd_bufsize < bufsizeforthis) { ! if (!(alsa_snd_buf = (char *)realloc(alsa_snd_buf, bufsizeforthis))) { ! post("out of memory"); ! return 0; ! } memset(alsa_snd_buf, 0, bufsizeforthis); alsa_snd_bufsize = bufsizeforthis; } } else { ! if (!(alsa_snd_buf = (char *)malloc(bufsizeforthis))) { ! post("out of memory"); ! return 0; ! } memset(alsa_snd_buf, 0, bufsizeforthis); alsa_snd_bufsize = bufsizeforthis; --- 155,164 ---- if (alsa_snd_buf) { if (alsa_snd_bufsize < bufsizeforthis) { ! if (!(alsa_snd_buf = (char *)realloc(alsa_snd_buf, bufsizeforthis))) {error("out of memory"); return 0;} memset(alsa_snd_buf, 0, bufsizeforthis); alsa_snd_bufsize = bufsizeforthis; } } else { ! if (!(alsa_snd_buf = (char *)malloc(bufsizeforthis))) {error("out of memory"); return 0;} memset(alsa_snd_buf, 0, bufsizeforthis); alsa_snd_bufsize = bufsizeforthis; *************** *** 305,309 **** timenow = sys_getrealtime(); #ifdef DEBUG_ALSA_XFER ! if (timenow - timelast > 0.050) fprintf(stderr, "(%d)", int(1000 * (timenow - timelast))), fflush(stderr); callno++; #endif --- 295,299 ---- timenow = sys_getrealtime(); #ifdef DEBUG_ALSA_XFER ! if (timenow - timelast > 0.050) post("(%d)", int(1000 * (timenow - timelast))), fflush(stderr); callno++; #endif *************** *** 343,350 **** if (result != (int)transfersize) { #ifdef DEBUG_ALSA_XFER ! if (result >= 0 || errno == EAGAIN) ! fprintf(stderr, "ALSA: write returned %d of %d\n", result, transfersize); ! else fprintf(stderr, "ALSA: write: %s\n", snd_strerror(errno)); ! fprintf(stderr, "inputcount %d, outputcount %d, outbufsize %d\n", inputcount, outputcount, (ALSA_EXTRABUFFER + sys_advance_samples) * alsa_outdev[iodev].a_sampwidth * outchannels); #endif --- 333,339 ---- if (result != (int)transfersize) { #ifdef DEBUG_ALSA_XFER ! if (result >= 0 || errno == EAGAIN) post("ALSA: write returned %d of %d\n", result, transfersize); ! else error("ALSA: write: %s", snd_strerror(errno)); ! post("inputcount %d, outputcount %d, outbufsize %d", inputcount, outputcount, (ALSA_EXTRABUFFER + sys_advance_samples) * alsa_outdev[iodev].a_sampwidth * outchannels); #endif *************** *** 358,362 **** if (sys_getrealtime() - timenow > 0.002) { #ifdef DEBUG_ALSA_XFER ! fprintf(stderr, "output %d took %d msec\n", callno, int(1000 * (timenow - timelast))), fflush(stderr); #endif timenow = sys_getrealtime(); --- 347,351 ---- if (sys_getrealtime() - timenow > 0.002) { #ifdef DEBUG_ALSA_XFER ! post("output %d took %d msec", callno, int(1000 * (timenow - timelast))), fflush(stderr); #endif timenow = sys_getrealtime(); *************** *** 372,379 **** if (result < (int)transfersize) { #ifdef DEBUG_ALSA_XFER ! if (result < 0) ! fprintf(stderr, "snd_pcm_read %d %d: %s\n", callno, xferno, snd_strerror(errno)); ! else fprintf(stderr, "snd_pcm_read %d %d returned only %d\n", callno, xferno, result); ! fprintf(stderr, "inputcount %d, outputcount %d, inbufsize %d\n", inputcount, outputcount, (ALSA_EXTRABUFFER + sys_advance_samples) * alsa_indev[iodev].a_sampwidth * inchannels); #endif --- 361,367 ---- if (result < (int)transfersize) { #ifdef DEBUG_ALSA_XFER ! if (result<0) error("snd_pcm_read %d %d: %s", callno, xferno, snd_strerror(errno)); ! else post("snd_pcm_read %d %d returned only %d", callno, xferno, result); ! post("inputcount %d, outputcount %d, inbufsize %d", inputcount, outputcount, (ALSA_EXTRABUFFER + sys_advance_samples) * alsa_indev[iodev].a_sampwidth * inchannels); #endif *************** *** 382,391 **** } if (alsa_indev[iodev].a_sampwidth == 4) { ! for (i = 0; i < chans; i++, ch++, fp1 += sys_dacblocksize) { for (j = ch, k = sys_dacblocksize, fp2 = fp1; k--; j += thisdevchans, fp2++) *fp2 = (float) ((t_alsa_sample32 *)alsa_snd_buf)[j] * (1./ INT32_MAX); } } else { ! for (i = 0; i < chans; i++, ch++, fp1 += sys_dacblocksize) { for (j = ch, k = sys_dacblocksize, fp2 = fp1; k--; j += thisdevchans, fp2++) *fp2 = (float) ((t_alsa_sample16 *)alsa_snd_buf)[j] * 3.051850e-05; --- 370,379 ---- } if (alsa_indev[iodev].a_sampwidth == 4) { ! for (int i=0; i<chans; i++, ch++, fp1 += sys_dacblocksize) { for (j = ch, k = sys_dacblocksize, fp2 = fp1; k--; j += thisdevchans, fp2++) *fp2 = (float) ((t_alsa_sample32 *)alsa_snd_buf)[j] * (1./ INT32_MAX); } } else { ! for (int i=0; i<chans; i++, ch++, fp1 += sys_dacblocksize) { for (j = ch, k = sys_dacblocksize, fp2 = fp1; k--; j += thisdevchans, fp2++) *fp2 = (float) ((t_alsa_sample16 *)alsa_snd_buf)[j] * 3.051850e-05; *************** *** 398,402 **** if (sys_getrealtime() - timenow > 0.002) { #ifdef DEBUG_ALSA_XFER ! fprintf(stderr, "routine took %d msec\n", int(1000 * (sys_getrealtime() - timenow))); #endif sys_log_error(ERR_ADCSLEPT); --- 386,390 ---- if (sys_getrealtime() - timenow > 0.002) { #ifdef DEBUG_ALSA_XFER ! post("routine took %d msec", int(1000 * (sys_getrealtime() - timenow))); #endif sys_log_error(ERR_ADCSLEPT); *************** *** 414,422 **** if (sys_inchannels) { result = snd_pcm_delay(alsa_indev[iodev].a_handle, &indelay); ! if (result < 0) post("snd_pcm_delay 1 failed"); else post("in delay %d", indelay); } if (sys_outchannels) { result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); ! if (result < 0) post("snd_pcm_delay 2 failed"); else post("out delay %d", outdelay); } post("sum %d (%d mod 64)\n", indelay + outdelay, (indelay+outdelay)%64); --- 402,410 ---- if (sys_inchannels) { result = snd_pcm_delay(alsa_indev[iodev].a_handle, &indelay); ! if (result<0) error("snd_pcm_delay 1 failed"); else post( "in delay %d", indelay); } if (sys_outchannels) { result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); ! if (result<0) error("snd_pcm_delay 2 failed"); else post("out delay %d", outdelay); } post("sum %d (%d mod 64)\n", indelay + outdelay, (indelay+outdelay)%64); *************** *** 465,469 **** /* call this only if both input and output are open */ static void alsa_checkiosync() { ! int result, giveup = 1000, alreadylogged = 0, iodev = 0; snd_pcm_sframes_t minphase, maxphase, thisphase, outdelay; while (1) { --- 453,457 ---- /* call this only if both input and output are open */ static void alsa_checkiosync() { ! int result, giveup = 1000, alreadylogged = 0; snd_pcm_sframes_t minphase, maxphase, thisphase, outdelay; while (1) { *************** *** 475,487 **** minphase = 0x7fffffff; maxphase = -0x7fffffff; ! for (iodev=0; iodev<alsa_noutdev; iodev++) { ! result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); if (result < 0) { snd_pcm_prepare(alsa_outdev[iodev].a_handle); result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); } ! if (result < 0) { ! post("output snd_pcm_delay failed: %s", snd_strerror(result)); ! if (snd_pcm_status(alsa_outdev[iodev].a_handle, alsa_status) < 0) post("output snd_pcm_status failed"); else post("astate %d", snd_pcm_status_get_state(alsa_status)); return; --- 463,475 ---- minphase = 0x7fffffff; maxphase = -0x7fffffff; ! for (int iodev=0; iodev<alsa_noutdev; iodev++) { ! result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); if (result < 0) { snd_pcm_prepare(alsa_outdev[iodev].a_handle); result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); } ! if (result<0) { ! error("output snd_pcm_delay failed: %s", snd_strerror(result)); ! if (snd_pcm_status(alsa_outdev[iodev].a_handle, alsa_status)<0) error("output snd_pcm_status failed"); else post("astate %d", snd_pcm_status_get_state(alsa_status)); return; *************** *** 493,497 **** sys_log_error(ERR_DATALATE), alreadylogged = 1; } ! for (iodev=0; iodev<alsa_nindev; iodev++) { result = snd_pcm_delay(alsa_indev[iodev].a_handle, &thisphase); if (result < 0) { --- 481,485 ---- sys_log_error(ERR_DATALATE), alreadylogged = 1; } ! for (int iodev=0; iodev<alsa_nindev; iodev++) { result = snd_pcm_delay(alsa_indev[iodev].a_handle, &thisphase); if (result < 0) { *************** *** 500,506 **** } if (result < 0) { ! post("output snd_pcm_delay failed: %s", snd_strerror(result)); ! if (snd_pcm_status(alsa_outdev[iodev].a_handle, alsa_status) < 0) ! post("output snd_pcm_status failed"); else post("astate %d", snd_pcm_status_get_state(alsa_status)); return; --- 488,493 ---- } if (result < 0) { ! error("output snd_pcm_delay failed: %s", snd_strerror(result)); ! if (snd_pcm_status(alsa_outdev[iodev].a_handle, alsa_status) < 0) error("output snd_pcm_status failed"); else post("astate %d", snd_pcm_status_get_state(alsa_status)); return; *************** *** 509,519 **** if (thisphase > maxphase) maxphase = thisphase; } ! /* the "correct" position is for all the phases to be exactly ! equal; but since we only make corrections sys_dacblocksize samples ! at a time, we just ask that the spread be not more than 3/4 of a block. */ if (maxphase <= minphase + (alsa_jittermax * (sys_dacblocksize / 4))) break; ! if (!alreadylogged) ! sys_log_error(ERR_RESYNC), alreadylogged = 1; ! for (iodev = 0; iodev < alsa_noutdev; iodev++) { result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); if (result < 0) break; --- 496,505 ---- if (thisphase > maxphase) maxphase = thisphase; } ! /* the "correct" position is for all the phases to be exactly equal; ! but since we only make corrections sys_dacblocksize samples at a time, ! we just ask that the spread be not more than 3/4 of a block. */ if (maxphase <= minphase + (alsa_jittermax * (sys_dacblocksize / 4))) break; ! if (!alreadylogged) sys_log_error(ERR_RESYNC), alreadylogged = 1; ! for (int iodev=0; iodev<alsa_noutdev; iodev++) { result = snd_pcm_delay(alsa_outdev[iodev].a_handle, &outdelay); if (result < 0) break; *************** *** 522,530 **** alsa_putzeros(iodev, 1); #if DEBUGSYNC ! fprintf(stderr, "putz %d %d\n", (int)thisphase, (int)minphase); #endif } } ! for (iodev = 0; iodev < alsa_nindev; iodev++) { result = snd_pcm_delay(alsa_indev[iodev].a_handle, &thisphase); if (result < 0) break; --- 508,516 ---- alsa_putzeros(iodev, 1); #if DEBUGSYNC ! post("putz %d %d", (int)thisphase, (int)minphase); #endif } } ! for (int iodev=0; iodev<alsa_nindev; iodev++) { result = snd_pcm_delay(alsa_indev[iodev].a_handle, &thisphase); if (result < 0) break; *************** *** 532,536 **** alsa_getzeros(iodev, 1); #if DEBUGSYNC ! fprintf(stderr, "getz %d %d\n", (int)thisphase, (int)minphase); #endif } --- 518,522 ---- alsa_getzeros(iodev, 1); #if DEBUGSYNC ! post("getz %d %d", (int)thisphase, (int)minphase); #endif } *************** *** 538,543 **** } #if DEBUGSYNC ! if (alreadylogged) ! fprintf(stderr, "done\n"); #endif } --- 524,528 ---- } #if DEBUGSYNC ! if (alreadylogged) post("done"); #endif } *************** *** 576,582 **** if (2 * ndev + 2 > maxndev) break; /* apparently, "cardno" is just a counter; but check that here */ ! if (ndev != cardno) fprintf(stderr, "oops: ALSA cards not reported in order?\n"); sprintf(devname, "hw:%d", cardno); ! /* fprintf(stderr, "\ntry %s...\n", devname); */ if (snd_ctl_open(&ctl, devname, 0) >= 0) { snd_ctl_card_info_malloc(&info); --- 561,567 ---- if (2 * ndev + 2 > maxndev) break; /* apparently, "cardno" is just a counter; but check that here */ ! if (ndev != cardno) post("oops: ALSA cards not reported in order?"); sprintf(devname, "hw:%d", cardno); ! /* post("try %s..", devname); */ if (snd_ctl_open(&ctl, devname, 0) >= 0) { snd_ctl_card_info_malloc(&info); *************** *** 585,589 **** snd_ctl_card_info_free(info); } else { ! fprintf(stderr, "ALSA card scan error\n"); desc = strdup("???"); } --- 570,574 ---- snd_ctl_card_info_free(info); } else { ! error("ALSA card scan error"); desc = strdup("???"); }