summaryrefslogtreecommitdiff
path: root/userland/pcm/pcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'userland/pcm/pcm.c')
-rw-r--r--userland/pcm/pcm.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/userland/pcm/pcm.c b/userland/pcm/pcm.c
new file mode 100644
index 0000000..780bbeb
--- /dev/null
+++ b/userland/pcm/pcm.c
@@ -0,0 +1,40 @@
+#include <assert.h>
+#include <fcntl.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int main(int argc, char **argv) {
+ if (argc < 2) {
+ printf("provide command line arguments dumbass\n");
+ return 1;
+ }
+
+ char *filename = argv[1];
+ int fd = open(filename, O_READ, 0);
+ if (-1 == fd) {
+ perror("open");
+ return 1;
+ }
+ int audio_fd = open("/dev/audio", O_WRITE, 0);
+ if (-1 == audio_fd) {
+ perror("open");
+ return 1;
+ }
+
+ char *buffer = malloc(128000);
+
+ for (;;) {
+ int rc;
+ if (0 == (rc = read(fd, buffer, 128000))) {
+ break;
+ }
+ write(audio_fd, buffer, rc);
+ }
+
+ free(buffer);
+ close(audio_fd);
+ close(fd);
+ return 0;
+}