From a12ec8aa4aa65cc74b2f5945fc76b181cf6fddb8 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Fri, 11 Mar 2016 23:57:12 -0500 Subject: more fixing --- freenect-server--http.c | 11 +++++++++-- freenect-server.sh | 26 ++++++++++++-------------- 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 -- cgit v1.2.3