#include #include #include /** Vendor / Product ID 0x1604 / 0x8001 (US428) 0x1604 / 0x8005 (US224) 0x1604 / 0x8007 (US122) */ int print_hwdep_info ( const char *name ) { snd_hwdep_t *hwdep = NULL; snd_hwdep_info_t *hwdep_info; int err; if ((err = snd_hwdep_open(&hwdep, name, SND_HWDEP_OPEN_READ | SND_HWDEP_OPEN_NONBLOCK)) < 0) { fprintf(stderr, "snd_hwdep_open(%s): %s\n", name, snd_strerror(err)); return err; } snd_hwdep_info_alloca(&hwdep_info); if ((err = snd_hwdep_info(hwdep, hwdep_info)) < 0) { fprintf(stderr, "snd_hwdep_info(%s): %s\n", name, snd_strerror(err)); } else { printf("snd_hwdep_info_get_id (%s) = '%s'\n", name, snd_hwdep_info_get_id(hwdep_info)); printf("snd_hwdep_info_get_name (%s) = '%s'\n", name, snd_hwdep_info_get_name(hwdep_info)); } if ((err = snd_hwdep_close(hwdep)) < 0) fprintf(stderr, "snd_hwdep_close(%s): %s\n", name, snd_strerror(err)); return err; } int print_pcm_info ( const char *name, int stream ) { snd_pcm_t *pcm; snd_pcm_hw_params_t *hw_params; unsigned int channels; int err; if ((err = snd_pcm_open(&pcm, name, stream, SND_PCM_NONBLOCK)) < 0) { fprintf(stderr, "snd_pcm_open(%s): %s\n", name, snd_strerror(err)); return err; } snd_pcm_hw_params_alloca(&hw_params); if ((err = snd_pcm_hw_params_any(pcm, hw_params)) < 0) { fprintf(stderr, "snd_pcm_hw_params_any(%s): %s\n", name, snd_strerror(err)); } else { if ((err = snd_pcm_hw_params_get_channels_min(hw_params, &channels)) < 0) { fprintf(stderr, "snd_pcm_hw_params_get_channels_min(%s): %s\n", name, snd_strerror(err)); } else { printf("snd_pcm_hw_params_get_channels_min(%s) = %u\n", name, channels); } if ((err = snd_pcm_hw_params_get_channels_max(hw_params, &channels)) < 0) { fprintf(stderr, "snd_pcm_hw_params_get_channels_max(%s): %s\n", name, snd_strerror(err)); } else { printf("snd_pcm_hw_params_get_channels_max(%s) = %u\n", name, channels); } } if ((err = snd_pcm_close(pcm)) < 0) fprintf(stderr, "snd_pcm_close(%s): %s\n", name, snd_strerror(err)); return err; } int main ( int argc, char *argv[] ) { int i; for (i = 1; i < argc; ++i) { const char *name = argv[i]; printf("---hwdep---\n"); print_hwdep_info(name); printf("---pcm (capture)---\n"); print_pcm_info(name, SND_PCM_STREAM_CAPTURE); printf("---pcm (playback)---\n"); print_pcm_info(name, SND_PCM_STREAM_PLAYBACK); } }