/* gcc -W -Wall -o alsa-rate alsa-rate.c -lasound */ #include #include int main(int argc, char *argv[]) { char *device; snd_pcm_t *handle; snd_pcm_hw_params_t *params; unsigned int min; unsigned int max; int dir; int err; device = argc > 1 ? argv[1] : "hw:0,0"; err = snd_pcm_open(&handle, device, SND_PCM_STREAM_PLAYBACK, 0); if (err < 0) { fprintf(stderr, "snd_pcm_open: %s\n", snd_strerror(err)); return err; } err = snd_pcm_hw_params_malloc(¶ms); if (err < 0) { fprintf(stderr, "snd_pcm_hw_params_alloc: %s\n", snd_strerror(err)); return err; } err = snd_pcm_hw_params_any(handle, params); if (err < 0) { fprintf(stderr, "snd_pcm_hw_params_any: %s\n", snd_strerror(err)); return err; } err = snd_pcm_close(handle); if (err < 0) { fprintf(stderr, "snd_pcm_close: %s\n", snd_strerror(err)); return err; } err = snd_pcm_hw_params_get_rate_min(params, &min, &dir); if (err < 0) { fprintf(stderr, "snd_pcm_hw_params_get_rate_min: %s\n", snd_strerror(err)); return err; } err = snd_pcm_hw_params_get_rate_max(params, &max, &dir); if (err < 0) { fprintf(stderr, "snd_pcm_hw_params_get_rate_max: %s\n", snd_strerror(err)); return err; } snd_pcm_hw_params_free(params); printf("supported sample rates for %s : min=%u, max=%u\n", device, min, max); return 0; }