diff options
Diffstat (limited to '')
| -rw-r--r-- | src/blind-matrix-shear.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/blind-matrix-shear.c b/src/blind-matrix-shear.c index 0a4310e..e6a7d2d 100644 --- a/src/blind-matrix-shear.c +++ b/src/blind-matrix-shear.c @@ -13,9 +13,9 @@ static int in_degrees = 0; pixel_t matrix[9];\ pixel_t buf[2];\ TYPE conv = in_degrees ? (TYPE)(M_PI / 180.) : 1;\ - int i;\ + size_t i;\ \ - for (i = 0; i < 4; i++) {\ + for (i = 0; i < stream->n_chan; i++) {\ matrix[0][i] = 1, matrix[1][i] = 0, matrix[2][i] = 0;\ matrix[3][i] = 0, matrix[4][i] = 1, matrix[5][i] = 0;\ matrix[6][i] = 0, matrix[7][i] = 0, matrix[8][i] = 1;\ @@ -23,19 +23,23 @@ static int in_degrees = 0; \ while (eread_frame(stream, buf)) {\ if (by_angle) {\ - for (i = !per_channel; i < (per_channel ? 4 : 2); i++) {\ + for (i = !per_channel; i < (per_channel ? stream->n_chan : 2); i++) {\ buf[0][i] = tan(buf[0][i] * conv);\ buf[1][i] = tan(buf[1][i] * conv);\ }\ }\ if (per_channel) {\ - for (i = 0; i < 4; i++) {\ + for (i = 0; i < stream->n_chan; i++) {\ matrix[1][i] = buf[0][i];\ matrix[3][i] = buf[1][i];\ }\ } else {\ - matrix[1][3] = matrix[1][2] = matrix[1][1] = matrix[1][0] = buf[0][1] * buf[0][3];\ - matrix[3][3] = matrix[3][2] = matrix[3][1] = matrix[3][0] = buf[1][1] * buf[1][3];\ + buf[0][1] *= buf[0][3];\ + buf[1][1] *= buf[1][3];\ + for (i = 0; i < stream->n_chan; i++) {\ + matrix[1][i] = buf[0][1];\ + matrix[3][i] = buf[1][1];\ + }\ }\ ewriteall(STDOUT_FILENO, matrix, sizeof(matrix), "<stdout>");\ }\ @@ -77,9 +81,9 @@ main(int argc, char *argv[]) fprint_stream_head(stdout, &stream); efflush(stdout, "<stdout>"); - if (!strcmp(stream.pixfmt, "xyza")) + if (stream.encoding == DOUBLE) process = process_lf; - else if (!strcmp(stream.pixfmt, "xyza f")) + else if (stream.encoding == FLOAT) process = process_f; else eprintf("pixel format %s is not supported, try xyza\n", stream.pixfmt); |
