forked from pool/alsa-utils
232 lines
9.2 KiB
Diff
232 lines
9.2 KiB
Diff
|
diff -r d121aa649daf -r 19947765f033 speaker-test/speaker-test.c
|
||
|
--- a/speaker-test/speaker-test.c Thu Oct 25 15:39:19 2007 +0200
|
||
|
+++ b/speaker-test/speaker-test.c Mon Nov 05 12:44:13 2007 +0100
|
||
|
@@ -276,28 +276,28 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
/* choose all parameters */
|
||
|
err = snd_pcm_hw_params_any(handle, params);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Broken configuration for playback: no configurations available: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Broken configuration for playback: no configurations available: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* set the interleaved read/write format */
|
||
|
err = snd_pcm_hw_params_set_access(handle, params, access);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Access type not available for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Access type not available for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* set the sample format */
|
||
|
err = snd_pcm_hw_params_set_format(handle, params, format);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Sample format not available for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Sample format not available for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* set the count of channels */
|
||
|
err = snd_pcm_hw_params_set_channels(handle, params, channels);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Channels count (%i) not available for playbacks: %s\n"), channels, snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Channels count (%i) not available for playbacks: %s\n"), channels, snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
@@ -305,12 +305,12 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
rrate = rate;
|
||
|
err = snd_pcm_hw_params_set_rate(handle, params, rate, 0);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Rate %iHz not available for playback: %s\n"), rate, snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Rate %iHz not available for playback: %s\n"), rate, snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
if (rrate != rate) {
|
||
|
- printf(_("Rate doesn't match (requested %iHz, get %iHz, err %d)\n"), rate, rrate, err);
|
||
|
+ fprintf(stderr, _("Rate doesn't match (requested %iHz, get %iHz, err %d)\n"), rate, rrate, err);
|
||
|
return -EINVAL;
|
||
|
}
|
||
|
|
||
|
@@ -326,7 +326,7 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
printf(_("Requested period time %u us\n"), period_time);
|
||
|
err = snd_pcm_hw_params_set_period_time_near(handle, params, &period_time, NULL);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set period time %u us for playback: %s\n"),
|
||
|
+ fprintf(stderr, _("Unable to set period time %u us for playback: %s\n"),
|
||
|
period_time, snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
@@ -335,7 +335,7 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
printf(_("Requested buffer time %u us\n"), buffer_time);
|
||
|
err = snd_pcm_hw_params_set_buffer_time_near(handle, params, &buffer_time, NULL);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set buffer time %u us for playback: %s\n"),
|
||
|
+ fprintf(stderr, _("Unable to set buffer time %u us for playback: %s\n"),
|
||
|
buffer_time, snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
@@ -347,7 +347,7 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
printf(_("Using max buffer size %lu\n"), buffer_size);
|
||
|
err = snd_pcm_hw_params_set_buffer_size_near(handle, params, &buffer_size);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set buffer size %lu for playback: %s\n"),
|
||
|
+ fprintf(stderr, _("Unable to set buffer size %lu for playback: %s\n"),
|
||
|
buffer_size, snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
@@ -356,7 +356,7 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
printf(_("Periods = %u\n"), nperiods);
|
||
|
err = snd_pcm_hw_params_set_periods_near(handle, params, &nperiods, NULL);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set nperiods %u for playback: %s\n"),
|
||
|
+ fprintf(stderr, _("Unable to set nperiods %u for playback: %s\n"),
|
||
|
nperiods, snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
@@ -366,14 +366,14 @@ static int set_hwparams(snd_pcm_t *handl
|
||
|
printf(_("was set period_size = %lu\n"),period_size);
|
||
|
printf(_("was set buffer_size = %lu\n"),buffer_size);
|
||
|
if (2*period_size > buffer_size) {
|
||
|
- printf(_("buffer to small, could not use\n"));
|
||
|
- return err;
|
||
|
+ fprintf(stderr, _("buffer to small, could not use\n"));
|
||
|
+ return -EINVAL;
|
||
|
}
|
||
|
|
||
|
/* write the parameters to device */
|
||
|
err = snd_pcm_hw_params(handle, params);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set hw params for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Unable to set hw params for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
@@ -386,35 +386,35 @@ static int set_swparams(snd_pcm_t *handl
|
||
|
/* get the current swparams */
|
||
|
err = snd_pcm_sw_params_current(handle, swparams);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to determine current swparams for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Unable to determine current swparams for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* start the transfer when a buffer is full */
|
||
|
err = snd_pcm_sw_params_set_start_threshold(handle, swparams, buffer_size);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set start threshold mode for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Unable to set start threshold mode for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* allow the transfer when at least period_size frames can be processed */
|
||
|
err = snd_pcm_sw_params_set_avail_min(handle, swparams, period_size);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set avail min for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Unable to set avail min for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* align all transfers to 1 sample */
|
||
|
err = snd_pcm_sw_params_set_xfer_align(handle, swparams, 1);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set transfer align for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Unable to set transfer align for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
/* write the parameters to the playback device */
|
||
|
err = snd_pcm_sw_params(handle, swparams);
|
||
|
if (err < 0) {
|
||
|
- printf(_("Unable to set sw params for playback: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Unable to set sw params for playback: %s\n"), snd_strerror(err));
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
@@ -429,7 +429,7 @@ static int xrun_recovery(snd_pcm_t *hand
|
||
|
if (err == -EPIPE) { /* under-run */
|
||
|
err = snd_pcm_prepare(handle);
|
||
|
if (err < 0)
|
||
|
- printf(_("Can't recovery from underrun, prepare failed: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Can't recovery from underrun, prepare failed: %s\n"), snd_strerror(err));
|
||
|
return 0;
|
||
|
}
|
||
|
else if (err == -ESTRPIPE) {
|
||
|
@@ -440,7 +440,7 @@ static int xrun_recovery(snd_pcm_t *hand
|
||
|
if (err < 0) {
|
||
|
err = snd_pcm_prepare(handle);
|
||
|
if (err < 0)
|
||
|
- printf(_("Can't recovery from suspend, prepare failed: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Can't recovery from suspend, prepare failed: %s\n"), snd_strerror(err));
|
||
|
}
|
||
|
|
||
|
return 0;
|
||
|
@@ -648,9 +648,9 @@ static int write_buffer(snd_pcm_t *handl
|
||
|
continue;
|
||
|
|
||
|
if (err < 0) {
|
||
|
- printf(_("Write error: %d,%s\n"), err, snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Write error: %d,%s\n"), err, snd_strerror(err));
|
||
|
if (xrun_recovery(handle, err) < 0) {
|
||
|
- printf(_("xrun_recovery failed: %d,%s\n"), err, snd_strerror(err));
|
||
|
+ fprintf(stderr, _("xrun_recovery failed: %d,%s\n"), err, snd_strerror(err));
|
||
|
return -1;
|
||
|
}
|
||
|
break; /* skip one period */
|
||
|
@@ -683,6 +683,9 @@ static int write_loop(snd_pcm_t *handle,
|
||
|
return err;
|
||
|
}
|
||
|
|
||
|
+
|
||
|
+ if (periods <= 0)
|
||
|
+ periods = 1;
|
||
|
|
||
|
for(n = 0; n < periods; n++) {
|
||
|
if (test_type == TEST_PINK_NOISE)
|
||
|
@@ -847,7 +850,7 @@ int main(int argc, char *argv[]) {
|
||
|
speaker = speaker < 1 ? 0 : speaker;
|
||
|
speaker = speaker > channels ? 0 : speaker;
|
||
|
if (speaker==0) {
|
||
|
- printf(_("Invalid parameter for -s option.\n"));
|
||
|
+ fprintf(stderr, _("Invalid parameter for -s option.\n"));
|
||
|
exit(EXIT_FAILURE);
|
||
|
}
|
||
|
break;
|
||
|
@@ -858,7 +861,7 @@ int main(int argc, char *argv[]) {
|
||
|
wav_file_dir = optarg;
|
||
|
break;
|
||
|
default:
|
||
|
- printf(_("Unknown option '%c'\n"), c);
|
||
|
+ fprintf(stderr, _("Unknown option '%c'\n"), c);
|
||
|
exit(EXIT_FAILURE);
|
||
|
break;
|
||
|
}
|
||
|
@@ -908,7 +911,7 @@ int main(int argc, char *argv[]) {
|
||
|
initialize_pink_noise(&pink, 16);
|
||
|
|
||
|
if (frames == NULL) {
|
||
|
- printf(_("No enough memory\n"));
|
||
|
+ fprintf(stderr, _("No enough memory\n"));
|
||
|
exit(EXIT_FAILURE);
|
||
|
}
|
||
|
if (speaker==0) {
|
||
|
@@ -939,7 +942,7 @@ int main(int argc, char *argv[]) {
|
||
|
err = write_loop(handle, channel, ((rate*3)/period_size), frames);
|
||
|
|
||
|
if (err < 0) {
|
||
|
- printf(_("Transfer failed: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Transfer failed: %s\n"), snd_strerror(err));
|
||
|
free(frames);
|
||
|
snd_pcm_close(handle);
|
||
|
exit(EXIT_SUCCESS);
|
||
|
@@ -961,7 +964,7 @@ int main(int argc, char *argv[]) {
|
||
|
err = write_loop(handle, speaker-1, ((rate*5)/period_size), frames);
|
||
|
|
||
|
if (err < 0) {
|
||
|
- printf(_("Transfer failed: %s\n"), snd_strerror(err));
|
||
|
+ fprintf(stderr, _("Transfer failed: %s\n"), snd_strerror(err));
|
||
|
}
|
||
|
}
|
||
|
|