forgot to add parec-simple
authorLennart Poettering <lennart@poettering.net>
Sat, 10 Jul 2004 19:06:48 +0000 (19:06 +0000)
committerLennart Poettering <lennart@poettering.net>
Sat, 10 Jul 2004 19:06:48 +0000 (19:06 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@57 fefdeb5f-60dc-0310-8127-8f9354f1896f

src/parec-simple.c [new file with mode: 0644]

diff --git a/src/parec-simple.c b/src/parec-simple.c
new file mode 100644 (file)
index 0000000..a2841be
--- /dev/null
@@ -0,0 +1,69 @@
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include "simple.h"
+#include "polyp-error.h"
+
+#define BUFSIZE 1024
+
+static ssize_t loop_write(int fd, const void*data, size_t size) {
+    ssize_t ret = 0;
+
+    while (size > 0) {
+        ssize_t r;
+
+        if ((r = write(fd, data, size)) < 0)
+            return r;
+
+        if (r == 0)
+            break;
+        
+        ret += r;
+        data += r;
+        size -= r;
+    }
+
+    return ret;
+}
+
+int main(int argc, char*argv[]) {
+    static const struct pa_sample_spec ss = {
+        .format = PA_SAMPLE_S16LE,
+        .rate = 44100,
+        .channels = 2
+    };
+    struct pa_simple *s = NULL;
+    int ret = 1;
+    int error;
+
+    if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, &error))) {
+        fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
+        goto finish;
+    }
+
+    for (;;) {
+        uint8_t buf[BUFSIZE];
+        ssize_t r;
+
+        if (pa_simple_read(s, buf, sizeof(buf), &error) < 0) {
+            fprintf(stderr, __FILE__": pa_simple_read() failed: %s\n", pa_strerror(error));
+            goto finish;
+        }
+            
+        if ((r = loop_write(STDOUT_FILENO, buf, sizeof(buf))) <= 0) {
+            fprintf(stderr, __FILE__": write() failed: %s\n", strerror(errno));
+            goto finish;
+        }
+    }
+
+    ret = 0;
+
+finish:
+
+    if (s)
+        pa_simple_free(s);
+    
+    return ret;
+}