summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-04-07 16:46:13 +0000
committerLennart Poettering <lennart@poettering.net>2008-04-07 16:46:13 +0000
commit98b0152d7c9fe219448edfd61777b8f7357da25c (patch)
treee67d2fcbf1c49a639b8c571e246656c1db9b74c7
parentb9c10f2c56fc34b5ff99b0a9b3959b4d37586a39 (diff)
add utility functions to dump alsa PCM state
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2219 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/modules/alsa-util.c43
-rw-r--r--src/modules/alsa-util.h3
2 files changed, 46 insertions, 0 deletions
diff --git a/src/modules/alsa-util.c b/src/modules/alsa-util.c
index 38ea8633..c8f594ac 100644
--- a/src/modules/alsa-util.c
+++ b/src/modules/alsa-util.c
@@ -894,3 +894,46 @@ void pa_alsa_0dB_capture(snd_mixer_elem_t *elem) {
snd_mixer_selem_set_capture_volume_all(elem, v);
}
+
+void pa_alsa_dump(snd_pcm_t *pcm) {
+ int err;
+ snd_output_t *out;
+
+ pa_assert(pcm);
+
+ pa_assert_se(snd_output_buffer_open(&out) == 0);
+
+ if ((err = snd_pcm_dump(pcm, out)) < 0)
+ pa_log_debug("snd_pcm_dump(): %s", snd_strerror(err));
+ else {
+ char *s = NULL;
+ snd_output_buffer_string(out, &s);
+ pa_log_debug("snd_pcm_dump():\n%s", pa_strnull(s));
+ }
+
+ pa_assert_se(snd_output_close(out) == 0);
+}
+
+void pa_alsa_dump_status(snd_pcm_t *pcm) {
+ int err;
+ snd_output_t *out;
+ snd_pcm_status_t *status;
+
+ pa_assert(pcm);
+
+ snd_pcm_status_alloca(&status);
+
+ pa_assert_se(snd_output_buffer_open(&out) == 0);
+
+ pa_assert_se(snd_pcm_status(pcm, status) == 0);
+
+ if ((err = snd_pcm_status_dump(status, out)) < 0)
+ pa_log_debug("snd_pcm_dump(): %s", snd_strerror(err));
+ else {
+ char *s = NULL;
+ snd_output_buffer_string(out, &s);
+ pa_log_debug("snd_pcm_dump():\n%s", pa_strnull(s));
+ }
+
+ pa_assert_se(snd_output_close(out) == 0);
+}
diff --git a/src/modules/alsa-util.h b/src/modules/alsa-util.h
index dee955fd..0e536f1b 100644
--- a/src/modules/alsa-util.h
+++ b/src/modules/alsa-util.h
@@ -82,4 +82,7 @@ int pa_alsa_calc_mixer_map(snd_mixer_elem_t *elem, const pa_channel_map *channel
void pa_alsa_0dB_playback(snd_mixer_elem_t *elem);
void pa_alsa_0dB_capture(snd_mixer_elem_t *elem);
+void pa_alsa_dump(snd_pcm_t *pcm);
+void pa_alsa_dump_status(snd_pcm_t *pcm);
+
#endif