]> code.delx.au - pulseaudio/commitdiff
add utility functions to dump alsa PCM state
authorLennart Poettering <lennart@poettering.net>
Mon, 7 Apr 2008 16:46:13 +0000 (16:46 +0000)
committerLennart Poettering <lennart@poettering.net>
Mon, 7 Apr 2008 16:46:13 +0000 (16:46 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2219 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/modules/alsa-util.c
src/modules/alsa-util.h

index 38ea863331524620e9d4d0e82d0dd2493684424a..c8f594ac3467edbf39cb74bd1eab4e12d50ad994 100644 (file)
@@ -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);
+}
index dee955fd50f5d9d4aa84d7ef2e63cc8023f4205b..0e536f1b7c880057797b469e0bc7557ae95f3232 100644 (file)
@@ -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