diff options
| author | Mattias Andrée <maandree@kth.se> | 2017-07-14 22:00:38 +0200 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2017-07-14 22:00:38 +0200 |
| commit | aea3343ed3e0398721ced18a6e3ab72c9ebea850 (patch) | |
| tree | b8b77c16191ef8f72f6fcde0a47cec36e2aee7c3 | |
| parent | blind-matrix-{rotate,shear}: add -d (diff) | |
| download | blind-aea3343ed3e0398721ced18a6e3ab72c9ebea850.tar.gz blind-aea3343ed3e0398721ced18a6e3ab72c9ebea850.tar.bz2 blind-aea3343ed3e0398721ced18a6e3ab72c9ebea850.tar.xz | |
Fix ensend_{frames,rows,pixels}
Signed-off-by: Mattias Andrée <maandree@kth.se>
| -rw-r--r-- | TODO | 5 | ||||
| -rw-r--r-- | src/stream.c | 9 |
2 files changed, 6 insertions, 8 deletions
@@ -1,8 +1,3 @@ -HIGH PRIORITY: - blind-cat-rows and blind-cat-cols randomly produces incorrect results - - - blind-transform affine transformation by matrix multiplication, -t for tiling, -s for improve quality on downscaling (pixels' neighbours must not change). blind-primary-key replace a primary with transparency, -g for greyscaled images. diff --git a/src/stream.c b/src/stream.c index c21d269..1cfb372 100644 --- a/src/stream.c +++ b/src/stream.c @@ -282,12 +282,13 @@ ensend_frames(int status, struct stream *stream, int outfd, size_t frames, const for (ret = 0; ret < frames; ret++) { for (p = stream->pixel_size; p; p--) { for (h = stream->height; h; h--) { - for (w = stream->width; w; w -= n, stream->ptr -= n) { + for (w = stream->width; w; w -= n) { if (!stream->ptr && !enread_stream(status, stream, w)) goto done; n = MIN(stream->ptr, w); if (outfd >= 0) enwriteall(status, outfd, stream->buf, n, outfname); + memmove(stream->buf, stream->buf + n, stream->ptr -= n); } } } @@ -308,12 +309,13 @@ ensend_rows(int status, struct stream *stream, int outfd, size_t rows, const cha for (ret = 0; ret < rows; ret++) { for (p = stream->pixel_size; p; p--) { - for (w = stream->width; w; w -= n, stream->ptr -= n) { + for (w = stream->width; w; w -= n) { if (!stream->ptr && !enread_stream(status, stream, w)) goto done; n = MIN(stream->ptr, w); if (outfd >= 0) enwriteall(status, outfd, stream->buf, n, outfname); + memmove(stream->buf, stream->buf + n, stream->ptr -= n); } } } @@ -332,12 +334,13 @@ ensend_pixels(int status, struct stream *stream, int outfd, size_t pixels, const size_t p, n, ret; for (ret = 0; ret < pixels; ret++) { - for (p = stream->pixel_size; p; p -= n, stream->ptr -= n) { + for (p = stream->pixel_size; p; p -= n) { if (!stream->ptr && !enread_stream(status, stream, p)) goto done; n = MIN(stream->ptr, p); if (outfd >= 0) enwriteall(status, outfd, stream->buf, n, outfname); + memmove(stream->buf, stream->buf + n, stream->ptr -= n); } } |
