From f244a70111c60b47cd49404fc10d0a97f9df3013 Mon Sep 17 00:00:00 2001 From: Julian Porter Date: Fri, 6 Mar 2020 20:06:59 +0000 Subject: [PATCH] tidied up --- py/CHANGES => CHANGES | 0 py/LICENSE => LICENSE | 0 py/MANIFEST.in => MANIFEST.in | 0 py/NOTES.md => NOTES.md | 0 py/README.md => README.md | 0 py/TODO => TODO | 0 py/alsaaudio.c => alsaaudio.c | 0 {py/doc => doc}/Makefile | 0 {py/doc => doc}/README.md | 0 {py/doc => doc}/conf.py | 0 {py/doc => doc}/index.rst | 0 {py/doc => doc}/libalsaaudio.rst | 0 {py/doc => doc}/pyalsaaudio.rst | 0 {py/doc => doc}/terminology.rst | 0 py/isine.py => isine.py | 0 py/mixertest.py => mixertest.py | 0 py/play_rusage.py => play_rusage.py | 0 py/playbacktest.py => playbacktest.py | 0 py/playwav.py => playwav.py | 0 py/recordtest.py => recordtest.py | 0 py/setup.py => setup.py | 0 py/test.py => test.py | 0 tests/params | Bin 18408 -> 0 bytes tests/params.c | 299 -------------------------- 24 files changed, 299 deletions(-) rename py/CHANGES => CHANGES (100%) rename py/LICENSE => LICENSE (100%) rename py/MANIFEST.in => MANIFEST.in (100%) rename py/NOTES.md => NOTES.md (100%) rename py/README.md => README.md (100%) rename py/TODO => TODO (100%) rename py/alsaaudio.c => alsaaudio.c (100%) rename {py/doc => doc}/Makefile (100%) rename {py/doc => doc}/README.md (100%) rename {py/doc => doc}/conf.py (100%) rename {py/doc => doc}/index.rst (100%) rename {py/doc => doc}/libalsaaudio.rst (100%) rename {py/doc => doc}/pyalsaaudio.rst (100%) rename {py/doc => doc}/terminology.rst (100%) rename py/isine.py => isine.py (100%) rename py/mixertest.py => mixertest.py (100%) rename py/play_rusage.py => play_rusage.py (100%) rename py/playbacktest.py => playbacktest.py (100%) rename py/playwav.py => playwav.py (100%) rename py/recordtest.py => recordtest.py (100%) rename py/setup.py => setup.py (100%) rename py/test.py => test.py (100%) delete mode 100755 tests/params delete mode 100644 tests/params.c diff --git a/py/CHANGES b/CHANGES similarity index 100% rename from py/CHANGES rename to CHANGES diff --git a/py/LICENSE b/LICENSE similarity index 100% rename from py/LICENSE rename to LICENSE diff --git a/py/MANIFEST.in b/MANIFEST.in similarity index 100% rename from py/MANIFEST.in rename to MANIFEST.in diff --git a/py/NOTES.md b/NOTES.md similarity index 100% rename from py/NOTES.md rename to NOTES.md diff --git a/py/README.md b/README.md similarity index 100% rename from py/README.md rename to README.md diff --git a/py/TODO b/TODO similarity index 100% rename from py/TODO rename to TODO diff --git a/py/alsaaudio.c b/alsaaudio.c similarity index 100% rename from py/alsaaudio.c rename to alsaaudio.c diff --git a/py/doc/Makefile b/doc/Makefile similarity index 100% rename from py/doc/Makefile rename to doc/Makefile diff --git a/py/doc/README.md b/doc/README.md similarity index 100% rename from py/doc/README.md rename to doc/README.md diff --git a/py/doc/conf.py b/doc/conf.py similarity index 100% rename from py/doc/conf.py rename to doc/conf.py diff --git a/py/doc/index.rst b/doc/index.rst similarity index 100% rename from py/doc/index.rst rename to doc/index.rst diff --git a/py/doc/libalsaaudio.rst b/doc/libalsaaudio.rst similarity index 100% rename from py/doc/libalsaaudio.rst rename to doc/libalsaaudio.rst diff --git a/py/doc/pyalsaaudio.rst b/doc/pyalsaaudio.rst similarity index 100% rename from py/doc/pyalsaaudio.rst rename to doc/pyalsaaudio.rst diff --git a/py/doc/terminology.rst b/doc/terminology.rst similarity index 100% rename from py/doc/terminology.rst rename to doc/terminology.rst diff --git a/py/isine.py b/isine.py similarity index 100% rename from py/isine.py rename to isine.py diff --git a/py/mixertest.py b/mixertest.py similarity index 100% rename from py/mixertest.py rename to mixertest.py diff --git a/py/play_rusage.py b/play_rusage.py similarity index 100% rename from py/play_rusage.py rename to play_rusage.py diff --git a/py/playbacktest.py b/playbacktest.py similarity index 100% rename from py/playbacktest.py rename to playbacktest.py diff --git a/py/playwav.py b/playwav.py similarity index 100% rename from py/playwav.py rename to playwav.py diff --git a/py/recordtest.py b/recordtest.py similarity index 100% rename from py/recordtest.py rename to recordtest.py diff --git a/py/setup.py b/setup.py similarity index 100% rename from py/setup.py rename to setup.py diff --git a/py/test.py b/test.py similarity index 100% rename from py/test.py rename to test.py diff --git a/tests/params b/tests/params deleted file mode 100755 index 412c9c41b4b9ac81fce8638f2239b4737ca7257b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18408 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 diff --git a/tests/params.c b/tests/params.c deleted file mode 100644 index 1e72d87..0000000 --- a/tests/params.c +++ /dev/null @@ -1,299 +0,0 @@ -/* - * hw_params.c - print hardware capabilities - * - * compile with: gcc -o hw_params hw_params.c -lasound - */ - -#include -#include - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof *(a)) - -static const snd_pcm_access_t accesses[] = { - SND_PCM_ACCESS_MMAP_INTERLEAVED, - SND_PCM_ACCESS_MMAP_NONINTERLEAVED, - SND_PCM_ACCESS_MMAP_COMPLEX, - SND_PCM_ACCESS_RW_INTERLEAVED, - SND_PCM_ACCESS_RW_NONINTERLEAVED, -}; - -static const snd_pcm_format_t formats[] = { - SND_PCM_FORMAT_S8, - SND_PCM_FORMAT_U8, - SND_PCM_FORMAT_S16_LE, - SND_PCM_FORMAT_S16_BE, - SND_PCM_FORMAT_U16_LE, - SND_PCM_FORMAT_U16_BE, - SND_PCM_FORMAT_S24_LE, - SND_PCM_FORMAT_S24_BE, - SND_PCM_FORMAT_U24_LE, - SND_PCM_FORMAT_U24_BE, - SND_PCM_FORMAT_S32_LE, - SND_PCM_FORMAT_S32_BE, - SND_PCM_FORMAT_U32_LE, - SND_PCM_FORMAT_U32_BE, - SND_PCM_FORMAT_FLOAT_LE, - SND_PCM_FORMAT_FLOAT_BE, - SND_PCM_FORMAT_FLOAT64_LE, - SND_PCM_FORMAT_FLOAT64_BE, - SND_PCM_FORMAT_IEC958_SUBFRAME_LE, - SND_PCM_FORMAT_IEC958_SUBFRAME_BE, - SND_PCM_FORMAT_MU_LAW, - SND_PCM_FORMAT_A_LAW, - SND_PCM_FORMAT_IMA_ADPCM, - SND_PCM_FORMAT_MPEG, - SND_PCM_FORMAT_GSM, - SND_PCM_FORMAT_SPECIAL, - SND_PCM_FORMAT_S24_3LE, - SND_PCM_FORMAT_S24_3BE, - SND_PCM_FORMAT_U24_3LE, - SND_PCM_FORMAT_U24_3BE, - SND_PCM_FORMAT_S20_3LE, - SND_PCM_FORMAT_S20_3BE, - SND_PCM_FORMAT_U20_3LE, - SND_PCM_FORMAT_U20_3BE, - SND_PCM_FORMAT_S18_3LE, - SND_PCM_FORMAT_S18_3BE, - SND_PCM_FORMAT_U18_3LE, - SND_PCM_FORMAT_U18_3BE, -}; - -static const unsigned int rates[] = { - 4000, - 5512, - 8000, - 11025, - 16000, - 22050, - 32000, - 44100, - 48000, - 64000, - 88200, - 96000, - 176400, - 192000, -}; - - -struct info_t { - int nChannels; - int channels[16]; - int nRates; - int rates[ARRAY_SIZE(formats)]; - int nFormats; - int formats[ARRAY_SIZE(rates)]; -}; - - -int checkPCM(const char *device_name,unsigned direction,struct info_t *info) { - - snd_pcm_t *pcm; - int err = snd_pcm_open(&pcm, device_name, direction, SND_PCM_NONBLOCK); - if (err < 0) { - fprintf(stderr, "cannot open device '%s': %s\n", device_name, snd_strerror(err)); - return 1; - } - - snd_pcm_hw_params_t *params; - snd_pcm_hw_params_alloca(¶ms); - err = snd_pcm_hw_params_any(pcm, params); - if (err < 0) { - fprintf(stderr, "cannot get hardware parameters: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - - unsigned min,max; - err = snd_pcm_hw_params_get_channels_min(params, &min); - if (err < 0) { - fprintf(stderr, "cannot get minimum channels count: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - err = snd_pcm_hw_params_get_channels_max(params, &max); - if (err < 0) { - fprintf(stderr, "cannot get maximum channels count: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - - int nChannels=0; - for (int i = min; i <= max; ++i) { - if (!snd_pcm_hw_params_test_channels(pcm, params, i)) { - info->channels[nChannels++]=i; - } - } - info->nChannels=nChannels; - - int nFormats=0; - for (int i = 0; i < ARRAY_SIZE(formats); ++i) { - if (!snd_pcm_hw_params_test_format(pcm, params, formats[i])) { - info->formats[nFormats++]=formats[i]; - } - } - info->nFormats=nFormats; - - int nRates=0; - for (int i = 0; i < ARRAY_SIZE(rates); ++i) { - if (!snd_pcm_hw_params_test_rate(pcm, params, rates[i], 0)) { - info->rates[nRates++]=rates[i]; - } - } - info->nRates=nRates; - - - snd_pcm_close(pcm); - return 0; -} - -int main(int argc, char *argv[]) -{ - const char *device_name = "hw"; - snd_pcm_t *pcm; - snd_pcm_hw_params_t *hw_params; - unsigned int i; - unsigned int min, max; - int any_rate; - int err; - - if (argc > 1) - device_name = argv[1]; - - struct info_t info; - checkPCM(device_name,SND_PCM_STREAM_PLAYBACK,&info); - - printf("Formats:"); - for (int i = 0; i < info.nFormats; ++i) { - printf("%s ", snd_pcm_format_name(info.formats[i])); - } - putchar('\n'); - printf("Rates:"); - for (int i = 0; i < info.nRates; ++i) { - printf(" %u", info.rates[i]); - } - putchar('\n'); - - printf("Channels:"); - for (int i = 0; i < info.nChannels; ++i) { - printf(" %u", info.channels[i]); - } - putchar('\n'); - - - err = snd_pcm_open(&pcm, device_name, SND_PCM_STREAM_PLAYBACK, SND_PCM_NONBLOCK); - if (err < 0) { - fprintf(stderr, "cannot open device '%s': %s\n", device_name, snd_strerror(err)); - return 1; - } - - snd_pcm_hw_params_alloca(&hw_params); - err = snd_pcm_hw_params_any(pcm, hw_params); - if (err < 0) { - fprintf(stderr, "cannot get hardware parameters: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - - printf("Device: %s (type: %s)\n", device_name, snd_pcm_type_name(snd_pcm_type(pcm))); - - printf("Access types:"); - for (i = 0; i < ARRAY_SIZE(accesses); ++i) { - if (!snd_pcm_hw_params_test_access(pcm, hw_params, accesses[i])) - printf(" %s", snd_pcm_access_name(accesses[i])); - } - putchar('\n'); - - printf("Formats:"); - for (i = 0; i < ARRAY_SIZE(formats); ++i) { - if (!snd_pcm_hw_params_test_format(pcm, hw_params, formats[i])) { - printf(" %s", snd_pcm_format_name(formats[i])); - } - - } - putchar('\n'); - - err = snd_pcm_hw_params_get_channels_min(hw_params, &min); - if (err < 0) { - fprintf(stderr, "cannot get minimum channels count: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - err = snd_pcm_hw_params_get_channels_max(hw_params, &max); - if (err < 0) { - fprintf(stderr, "cannot get maximum channels count: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - printf("Channels:"); - for (i = min; i <= max; ++i) { - if (!snd_pcm_hw_params_test_channels(pcm, hw_params, i)) - printf(" %u", i); - } - putchar('\n'); - - err = snd_pcm_hw_params_get_rate_min(hw_params, &min, NULL); - if (err < 0) { - fprintf(stderr, "cannot get minimum rate: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - err = snd_pcm_hw_params_get_rate_max(hw_params, &max, NULL); - if (err < 0) { - fprintf(stderr, "cannot get maximum rate: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - printf("Sample rates:"); - if (min == max) - printf(" %u", min); - else if (!snd_pcm_hw_params_test_rate(pcm, hw_params, min + 1, 0)) - printf(" %u-%u", min, max); - else { - any_rate = 0; - for (i = 0; i < ARRAY_SIZE(rates); ++i) { - if (!snd_pcm_hw_params_test_rate(pcm, hw_params, rates[i], 0)) { - any_rate = 1; - printf(" %u", rates[i]); - } - } - if (!any_rate) - printf(" %u-%u", min, max); - } - putchar('\n'); - - err = snd_pcm_hw_params_get_period_time_min(hw_params, &min, NULL); - if (err < 0) { - fprintf(stderr, "cannot get minimum period time: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - err = snd_pcm_hw_params_get_period_time_max(hw_params, &max, NULL); - if (err < 0) { - fprintf(stderr, "cannot get maximum period time: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - printf("Interrupt interval: %u-%u us\n", min, max); - - err = snd_pcm_hw_params_get_buffer_time_min(hw_params, &min, NULL); - if (err < 0) { - fprintf(stderr, "cannot get minimum buffer time: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - err = snd_pcm_hw_params_get_buffer_time_max(hw_params, &max, NULL); - if (err < 0) { - fprintf(stderr, "cannot get maximum buffer time: %s\n", snd_strerror(err)); - snd_pcm_close(pcm); - return 1; - } - printf("Buffer size: %u-%u us\n", min, max); - - snd_pcm_close(pcm); - - - return 0; -} - -