diff options
| author | Mattias Andrée <maandree@kth.se> | 2017-01-11 09:11:51 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2017-01-11 09:11:51 +0100 |
| commit | b7a82c980fe7e0c1f9029b55be97422428d65d5a (patch) | |
| tree | 67bedc856eb1f72a2daa8ef8347b904269b06df5 /src/vu-flop.c | |
| parent | vu-crop: add -t (diff) | |
| download | blind-b7a82c980fe7e0c1f9029b55be97422428d65d5a.tar.gz blind-b7a82c980fe7e0c1f9029b55be97422428d65d5a.tar.bz2 blind-b7a82c980fe7e0c1f9029b55be97422428d65d5a.tar.xz | |
Clean up code
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/vu-flop.c')
| -rw-r--r-- | src/vu-flop.c | 69 |
1 files changed, 17 insertions, 52 deletions
diff --git a/src/vu-flop.c b/src/vu-flop.c index 1d21d20..e98771d 100644 --- a/src/vu-flop.c +++ b/src/vu-flop.c @@ -1,79 +1,44 @@ /* See LICENSE file for copyright and license details. */ -#include "arg.h" #include "stream.h" #include "util.h" -#include <fcntl.h> #include <inttypes.h> #include <string.h> #include <unistd.h> -static void -usage(void) -{ - eprintf("usage: %s\n", argv0); -} +USAGE("") int main(int argc, char *argv[]) { struct stream stream; - char *buf, t1, t2; - size_t ptr, n, i, j, k, wm; - ssize_t r; - - ARGBEGIN { - default: - usage(); - } ARGEND; + char *buf, *image; + size_t i, j, n, m; - if (argc) - usage(); + ENOFLAGS(argc); stream.file = "<stdin>"; stream.fd = STDIN_FILENO; einit_stream(&stream); fprint_stream_head(stdout, &stream); - fflush(stdout); - if (ferror(stdout)) - eprintf("<stdout>:"); + efflush(stdout, "<stdout>"); if (stream.width > SIZE_MAX / stream.pixel_size) - eprintf("<stdin>: video is too wide\n"); + eprintf("<stdin>: video frame is too wide\n"); n = stream.width * stream.pixel_size; - if (!(buf = malloc(n))) - eprintf("malloc:"); + buf = emalloc(n); + image = emalloc(n); - wm = stream.width - 1; - memcpy(buf, stream.buf, ptr = stream.ptr); - for (;;) { - for (; ptr < n; ptr += (size_t)r) { - r = read(stream.fd, buf + ptr, n - ptr); - if (r < 0) { - eprintf("read %s:", stream.file); - } else if (r == 0) { - if (!ptr) - break; - eprintf("%s: incomplete frame", stream.file); - } - } - if (!ptr) - break; - for (i = 0; i < stream.pixel_size; i++) { - for (j = 0; j < stream.width >> 1; j++) { - k = wm - j; - t1 = buf[j * stream.pixel_size + i]; - t2 = buf[k * stream.pixel_size + i]; - buf[j * stream.pixel_size + i] = t2; - buf[k * stream.pixel_size + i] = t1; - } - } - for (ptr = 0; ptr < n; ptr += (size_t)r) { - r = write(STDOUT_FILENO, buf + ptr, n - ptr); - if (r < 0) - eprintf("write <stdout>"); - } + m = n - stream.pixel_size; + memcpy(buf, stream.buf, stream.ptr); + while (eread_row(&stream, buf, n)) { + for (i = 0; i < stream.pixel_size; i++) + for (j = 0; j < n; j += stream.pixel_size) + image[m - j + i] = buf[i + j]; + ewriteall(STDOUT_FILENO, image, n, "<stdout>"); } + free(buf); + free(image); return 0; } |
