X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=images%2Fsig-init.c;h=3c76920fb36fc79d103b3b202270847332eb6389;hb=3bf8dcea45ce5f185788a798e576276831b6432d;hp=1332db15b0d248997c5a18ded1ffa4281f12f75c;hpb=d107850afa414b96c304b2a5a0c915f70f224dcc;p=libucw.git diff --git a/images/sig-init.c b/images/sig-init.c index 1332db15..3c76920f 100644 --- a/images/sig-init.c +++ b/images/sig-init.c @@ -9,19 +9,20 @@ #undef LOCAL_DEBUG -#include "sherlock/sherlock.h" -#include "lib/fastbuf.h" -#include "lib/conf.h" -#include "lib/math.h" -#include "images/math.h" -#include "images/images.h" -#include "images/color.h" -#include "images/signature.h" +#include +#include +#include +#include +#include +#include +#include +#include #include +#include int -image_sig_init(struct image_thread *thread, struct image_sig_data *data, struct image *image) +image_sig_init(struct image_context *ctx, struct image_sig_data *data, struct image *image) { ASSERT((image->flags & IMAGE_PIXEL_FORMAT) == COLOR_SPACE_RGB); data->image = image; @@ -33,7 +34,7 @@ image_sig_init(struct image_thread *thread, struct image_sig_data *data, struct data->blocks_count = data->cols * data->rows; if (data->blocks_count >= 0x10000) { - image_thread_err(thread, IMAGE_ERR_INVALID_DIMENSIONS, "Image too large for implemented signature algorithm."); + IMAGE_ERROR(ctx, IMAGE_ERROR_INVALID_DIMENSIONS, "Image too large for implemented signature algorithm."); return 0; } data->blocks = xmalloc(data->blocks_count * sizeof(struct image_sig_block)); @@ -103,14 +104,14 @@ image_sig_preprocess(struct image_sig_data *data) } for (; x < 4; x++) { - *tp = tp[-square_cols]; + *tp = tp[-(int)square_cols]; tp++; } } for (; y < 4; y++) for (x = 0; x < 4; x++) { - *tp = tp[-square_rows * 4]; + *tp = tp[-(int)square_rows * 4]; tp++; } block->area = square_cols * square_rows; @@ -187,7 +188,7 @@ image_sig_finish(struct image_sig_data *data, struct image_signature *sig) sig->flags = data->flags; if (!sig->len) return; - + /* For each region */ u64 w_total = 0; uns w_border = MIN(data->cols, data->rows) * image_sig_border_size; @@ -284,6 +285,10 @@ image_sig_finish(struct image_sig_data *data, struct image_signature *sig) sig->reg[0].wa = wa; sig->reg[0].wb = wb; + /* Store image dimensions */ + sig->cols = data->image->cols; + sig->rows = data->image->rows; + /* Dump regions features */ #ifdef LOCAL_DEBUG for (uns i = 0; i < sig->len; i++) @@ -302,10 +307,10 @@ image_sig_cleanup(struct image_sig_data *data) } int -compute_image_signature(struct image_thread *thread, struct image_signature *sig, struct image *image) +compute_image_signature(struct image_context *ctx, struct image_signature *sig, struct image *image) { struct image_sig_data data; - if (!image_sig_init(thread, &data, image)) + if (!image_sig_init(ctx, &data, image)) return 0; image_sig_preprocess(&data); if (data.valid)