summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2016-03-11 23:57:12 -0500
committerLuke Shumaker <lukeshu@sbcglobal.net>2016-03-11 23:57:12 -0500
commita12ec8aa4aa65cc74b2f5945fc76b181cf6fddb8 (patch)
treecc056591e0262c66c86b0b6398cb042c9e41714d
parent4ddf5700fb13cca9ef8fec0bd44d6ef769b37216 (diff)
more fixing
-rw-r--r--freenect-server--http.c11
-rw-r--r--freenect-server.sh26
2 files changed, 21 insertions, 16 deletions
diff --git a/freenect-server--http.c b/freenect-server--http.c
index d966e3b..e1b91f0 100644
--- a/freenect-server--http.c
+++ b/freenect-server--http.c
@@ -28,6 +28,7 @@ struct reader_thread_args {
void *reader_thread(void *args_anon) {
struct reader_thread_args *args = args_anon;
mpjpeg_reader(args->stream, args->fd, args->boundary);
+ error(EXIT_FAILURE, 0, "mpjpeg stream ended");
return NULL;
}
@@ -46,8 +47,12 @@ void file_add(const char *filename) {
int fd = open(filename, O_RDONLY);
if (fd < 0)
error(EXIT_FAILURE, errno, "opening file: %s", filename);
- filev = xrealloc(NULL, (++filec)*sizeof(*filev));
- strncpy(filev[filec-1].name, filename, sizeof(filev[filec-1].name));
+ filev = xrealloc(filev, (++filec)*sizeof(*filev));
+ const char *shortname = strrchr(filename, '/');
+ if (shortname == NULL)
+ shortname = filename;
+ strncpy(filev[filec-1].name, shortname, sizeof(filev[filec-1].name));
+ error(0, 0, "added file #%zd: %s", filec-1, filev[filec-1].name);
filev[filec-1].stream = stream;
start_mpjpeg_reader(stream, fd, "ffserver" /* FIXME */);
}
@@ -119,6 +124,7 @@ void connection_handler(int fd) {
struct mpjpeg_stream *vidstream = file_get(path);
if (vidstream == NULL) {
+ error(0, 0, "404 %s", path);
dprintf(fd,
"HTTP/1.1 404 Not Found\r\n"
"\r\n");
@@ -126,6 +132,7 @@ void connection_handler(int fd) {
}
const char *boundary = "boundary" /* FIXME */;
+ error(0, 0, "200 %s", path);
dprintf(fd,
"HTTP/1.1 200 OK\r\n"
"Content-Type: multipart/x-mixed-replace;boundary=%s\r\n"
diff --git a/freenect-server.sh b/freenect-server.sh
index b2f3d7c..a608df3 100644
--- a/freenect-server.sh
+++ b/freenect-server.sh
@@ -1,23 +1,21 @@
#!/usr/bin/env bash
+d="$(dirname -- "$0")"
-mkfifo video.rgb24
-mkfifo depth.rgb24
-mkfifo video.mjpg
-mkfifo depth.mjpg
+t="$(mktemp -d --tmpdir "${0##*/}.XXXXXXXXXX")"
-pids=()
-./freenect-server--kinect -v video.rgb24 -d depth.rgb24 &
-pids+=($!)
-./freenect-server--http 8090 video.mjpg depth.mjpg &
-pids+=($!)
-ffmpeg -pix_fmt rgb24 -s 640x480 -f rawvideo -i video.rgb24 -f mpjpeg - > video.mjpg &
-pids+=($!)
-ffmpeg -pix_fmt rgb24 -s 640x480 -f rawvideo -i depth.rgb24 -f mpjpeg - > depth.mjpg &
-pids+=($!)
+mkfifo $t/video.rgb24
+mkfifo $t/depth.rgb24
+mkfifo $t/video.mjpg
+mkfifo $t/depth.mjpg
+
+$d/freenect-server--kinect -v $t/video.rgb24 -d $t/depth.rgb24 & pids+=($!)
+$d/freenect-server--http 8090 $t/video.mjpg $t/depth.mjpg & pids+=($!)
+ffmpeg -loglevel warning -pix_fmt rgb24 -s 640x480 -f rawvideo -i $t/video.rgb24 -f mpjpeg - > $t/video.mjpg & pids+=($!)
+ffmpeg -loglevel warning -pix_fmt rgb24 -s 640x480 -f rawvideo -i $t/depth.rgb24 -f mpjpeg - > $t/depth.mjpg & pids+=($!)
cleanup() {
kill -- "${pids[@]}"
- rm -f {video,depth}.{rgb24,mjpg}
+ rm -rf -- "$tmpdir"
}
trap cleanup EXIT