aboutsummaryrefslogtreecommitdiffstats
path: root/src/blind-reverse.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-05-10 16:59:26 +0200
committerMattias Andrée <maandree@kth.se>2017-05-10 16:59:26 +0200
commit6b998b5ed066aeece1146fe245b35965319b3cbd (patch)
treec963b48fbefafcec89a4e4af238869a1cb51148e /src/blind-reverse.c
parentblind-flip is optimal (diff)
downloadblind-6b998b5ed066aeece1146fe245b35965319b3cbd.tar.gz
blind-6b998b5ed066aeece1146fe245b35965319b3cbd.tar.bz2
blind-6b998b5ed066aeece1146fe245b35965319b3cbd.tar.xz
Cleaner code
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/blind-reverse.c')
-rw-r--r--src/blind-reverse.c44
1 files changed, 19 insertions, 25 deletions
diff --git a/src/blind-reverse.c b/src/blind-reverse.c
index 69013bb..7d3e504 100644
--- a/src/blind-reverse.c
+++ b/src/blind-reverse.c
@@ -2,21 +2,18 @@
#include "stream.h"
#include "util.h"
-#include <limits.h>
-#include <unistd.h>
-
USAGE("[-i] file")
static void
-to_stdout(struct stream *stream, size_t frame_size)
+to_stdout(struct stream *stream)
{
size_t ptr, end, n;
char buf[BUFSIZ];
ssize_t r;
while (stream->frames--) {
- ptr = stream->frames * frame_size + stream->headlen;
- end = ptr + frame_size;
+ ptr = stream->frames * stream->frame_size + stream->headlen;
+ end = ptr + stream->frame_size;
while (ptr < end) {
if (!(r = epread(stream->fd, buf, MIN(sizeof(buf), end - ptr), ptr, stream->file)))
eprintf("%s: file is shorter than expected\n", stream->file);
@@ -35,39 +32,39 @@ elseek_set(int fd, off_t offset, const char *fname)
}
static void
-epread_frame(struct stream *stream, char *buf, off_t off, size_t n)
+epread_frame(struct stream *stream, char *buf, off_t off)
{
stream->ptr = stream->xptr = 0;
elseek_set(stream->fd, off, stream->file);
- eread_frame(stream, buf, n);
+ eread_frame(stream, buf);
}
static void
-epwrite_frame(struct stream *stream, char *buf, off_t off, size_t n)
+epwrite_frame(struct stream *stream, char *buf, off_t off)
{
elseek_set(stream->fd, off, stream->file);
- ewriteall(stream->fd, buf, n, stream->file);
+ ewriteall(stream->fd, buf, stream->frame_size, stream->file);
}
static void
-in_place(struct stream *stream, size_t frame_size)
+in_place(struct stream *stream)
{
size_t f, fm = stream->frames - 1;
off_t pa, pb;
char *bufa, *bufb;
- bufa = emalloc(frame_size);
- bufb = emalloc(frame_size);
+ bufa = emalloc(stream->frame_size);
+ bufb = emalloc(stream->frame_size);
for (f = 0; f < stream->frames >> 1; f++) {
- pa = f * frame_size + stream->headlen;
- pb = (fm - f) * frame_size + stream->headlen;
+ pa = f * stream->frame_size + stream->headlen;
+ pb = (fm - f) * stream->frame_size + stream->headlen;
- epread_frame(stream, bufa, pa, frame_size);
- epread_frame(stream, bufb, pb, frame_size);
+ epread_frame(stream, bufa, pa);
+ epread_frame(stream, bufb, pb);
- epwrite_frame(stream, bufa, pb, frame_size);
- epwrite_frame(stream, bufb, pa, frame_size);
+ epwrite_frame(stream, bufa, pb);
+ epwrite_frame(stream, bufb, pa);
}
free(bufa);
@@ -78,7 +75,6 @@ int
main(int argc, char *argv[])
{
struct stream stream;
- size_t frame_size;
int inplace = 0;
ARGBEGIN {
@@ -99,17 +95,15 @@ main(int argc, char *argv[])
fprint_stream_head(stdout, &stream);
efflush(stdout, "<stdout>");
}
- echeck_frame_size(stream.width, stream.height, stream.pixel_size, 0, stream.file);
- frame_size = stream.width * stream.height * stream.pixel_size;
- if (stream.frames > (size_t)SSIZE_MAX / frame_size ||
- stream.frames * frame_size > (size_t)SSIZE_MAX - stream.headlen)
+ echeck_dimensions(&stream, WIDTH | HEIGHT, NULL);
+ if (stream.frames * stream.frame_size > (size_t)SSIZE_MAX - stream.headlen)
eprintf("%s: video is too large\n", stream.file);
#if defined(POSIX_FADV_RANDOM)
posix_fadvise(stream.fd, 0, 0, POSIX_FADV_RANDOM);
#endif
- (inplace ? in_place : to_stdout)(&stream, frame_size);
+ (inplace ? in_place : to_stdout)(&stream);
close(stream.fd);
return 0;
}