aboutsummaryrefslogtreecommitdiffstats
path: root/src/vu-concat.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-01-13 09:05:08 +0100
committerMattias Andrée <maandree@kth.se>2017-01-13 09:05:08 +0100
commit4674ec0e4b833ab0d0365225ba99228df14abe87 (patch)
tree1b89fe1559fc9a2422e20048700e694a72d17751 /src/vu-concat.c
parentvu-from-video: fix Y'UV encoding + add vu-to-video (diff)
downloadblind-4674ec0e4b833ab0d0365225ba99228df14abe87.tar.gz
blind-4674ec0e4b833ab0d0365225ba99228df14abe87.tar.bz2
blind-4674ec0e4b833ab0d0365225ba99228df14abe87.tar.xz
Rename to blind
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/vu-concat.c')
-rw-r--r--src/vu-concat.c114
1 files changed, 0 insertions, 114 deletions
diff --git a/src/vu-concat.c b/src/vu-concat.c
deleted file mode 100644
index 95676e2..0000000
--- a/src/vu-concat.c
+++ /dev/null
@@ -1,114 +0,0 @@
-/* See LICENSE file for copyright and license details. */
-#include "stream.h"
-#include "util.h"
-
-#include <sys/mman.h>
-#include <fcntl.h>
-#include <inttypes.h>
-#include <string.h>
-#include <unistd.h>
-
-USAGE("[-o output-file] first-stream ... last-stream")
-
-static void
-concat_to_stdout(int argc, char *argv[])
-{
- struct stream *streams;
- size_t frames = 0;
- int i;
-
- streams = emalloc((size_t)argc * sizeof(*streams));
-
- for (i = 0; i < argc; i++) {
- streams[i].file = argv[i];
- streams[i].fd = eopen(streams[i].file, O_RDONLY);
- einit_stream(streams + i);
- if (i)
- echeck_compat(streams + i, streams);
- if (streams[i].frames > SIZE_MAX - frames)
- eprintf("resulting video is too long\n");
- frames += streams[i].frames;
- }
-
- streams->frames = frames;
- fprint_stream_head(stdout, streams);
- efflush(stdout, "<stdout>");
-
- for (; argc--; streams++) {
- for (; eread_stream(streams, SIZE_MAX); streams->ptr = 0)
- ewriteall(STDOUT_FILENO, streams->buf, streams->ptr, "<stdout>");
- close(streams->fd);
- }
-
- free(streams);
-}
-
-static void
-concat_to_file(int argc, char *argv[], char *output_file)
-{
- struct stream stream, refstream;
- int first = 0;
- int fd = eopen(output_file, O_RDWR | O_CREAT | O_TRUNC, 0666);
- char head[STREAM_HEAD_MAX];
- ssize_t headlen, size = 0;
- char *data;
-
- for (; argc--; argv++) {
- stream.file = *argv;
- stream.fd = eopen(stream.file, O_RDONLY);
- einit_stream(&stream);
-
- if (first) {
- stream = refstream;
- } else {
- if (refstream.frames > SIZE_MAX - stream.frames)
- eprintf("resulting video is too long\n");
- refstream.frames += stream.frames;
- echeck_compat(&stream, &refstream);
- }
-
- for (; eread_stream(&stream, SIZE_MAX); stream.ptr = 0) {
- ewriteall(STDOUT_FILENO, stream.buf, stream.ptr, "<stdout>");
- size += stream.ptr;
- }
- close(stream.fd);
- }
-
- sprintf(head, "%zu %zu %zu %s\n%cuivf%zn",
- stream.frames, stream.width, stream.height, stream.pixfmt, 0, &headlen);
-
- ewriteall(fd, head, (size_t)headlen, output_file);
-
- data = mmap(0, size + (size_t)headlen, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
- if (data == MAP_FAILED)
- eprintf("mmap %s:", output_file);
- memmove(data + headlen, data, size);
- memcpy(data, head, (size_t)headlen);
- munmap(data, size + (size_t)headlen);
-
- close(fd);
-}
-
-int
-main(int argc, char *argv[])
-{
- char *output_file = NULL;
-
- ARGBEGIN {
- case 'o':
- output_file = EARG();
- break;
- default:
- usage();
- } ARGEND;
-
- if (argc < 2)
- usage();
-
- if (output_file)
- concat_to_file(argc, argv, output_file);
- else
- concat_to_stdout(argc, argv);
-
- return 0;
-}