X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=images%2Fsig-seg.c;h=082a1c8e5bcfc9dd02d832f677090431796a48ab;hb=25541ea3bb96e9f143f0e23f8ac5b432f2f6f47a;hp=cdcb71c8417ba147af293d0a1eb334fc644f66e1;hpb=c1afcf90949e5058a95e0e12a09b25a068d68b61;p=libucw.git diff --git a/images/sig-seg.c b/images/sig-seg.c index cdcb71c8..082a1c8e 100644 --- a/images/sig-seg.c +++ b/images/sig-seg.c @@ -9,9 +9,9 @@ #undef LOCAL_DEBUG -#include "sherlock/sherlock.h" -#include "lib/conf.h" -#include "lib/heap.h" +#include "ucw/lib.h" +#include "ucw/conf.h" +#include "ucw/heap.h" #include "images/images.h" #include "images/signature.h" #include "images/math.h" @@ -93,9 +93,7 @@ prequant_heap_cmp(struct image_sig_region *a, struct image_sig_region *b) #define ASORT_PREFIX(x) prequant_##x #define ASORT_KEY_TYPE uns -#define ASORT_ELT(i) val[i] -#define ASORT_EXTRA_ARGS , uns *val -#include "lib/arraysort.h" +#include "ucw/sorter/array-simple.h" static uns prequant(struct image_sig_block *blocks, uns blocks_count, struct image_sig_region *regions) @@ -163,7 +161,7 @@ prequant(struct image_sig_block *blocks, uns blocks_count, struct image_sig_regi block = region->blocks; for (uns i = 0; i < region->count; i++, block = block->next) val[i] = block->v[axis]; - prequant_sort(region->count, val); + prequant_sort(val, region->count); cval = 1; cnt[0] = 1; for (uns i = 1; i < region->count; i++) @@ -176,7 +174,7 @@ prequant(struct image_sig_block *blocks, uns blocks_count, struct image_sig_regi cval++; } } - + /* Select split value - to minimize error */ uns b1 = val[0] * cnt[0]; uns c1 = isqr(val[0]) * cnt[0]; @@ -195,14 +193,14 @@ prequant(struct image_sig_block *blocks, uns blocks_count, struct image_sig_regi c2 -= c0; i += cnt[k]; j -= cnt[k]; - u64 err = (u64)c1 - (u64)b1 * b1 / i + (u64)c2 - (u64)b2 * b2 / j; + u64 err = (u64)c1 - (u64)b1 * b1 / i + (u64)c2 - (u64)b2 * b2 / j; if (err < best_err) { best_err = err; split_val = val[k]; } } - DBG("split_val=%u best_err=%Lu b[axis]=%u c[axis]=%u", split_val, (long long)best_err, region->b[axis], region->c[axis]); + DBG("split_val=%u best_err=%llu b[axis]=%u c[axis]=%u", split_val, (long long)best_err, region->b[axis], region->c[axis]); /* Split region */ block = region->blocks;