aboutsummaryrefslogtreecommitdiffstats
path: root/libquanta_vquantise_wu.c
diff options
context:
space:
mode:
Diffstat (limited to 'libquanta_vquantise_wu.c')
-rw-r--r--libquanta_vquantise_wu.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/libquanta_vquantise_wu.c b/libquanta_vquantise_wu.c
index 3ddbe67..a303f78 100644
--- a/libquanta_vquantise_wu.c
+++ b/libquanta_vquantise_wu.c
@@ -69,6 +69,21 @@ compute_histogram(struct libquanta_image *image, struct histogram *histogram, st
v <<= channels[ch].colour_shift_up;
v += 1U;
index += v * channels[ch].subindex_multiplier;
+ }
+ for (ch = nchannels; ch--;) {
+ i = y * channels[ch].ch->image_row_size;
+ i += x * channels[ch].ch->image_cell_size;
+ p = &((const char *)channels[ch].ch->image)[i];
+ if (channels[ch].ch->bits_in <= 8)
+ v = *(const uint8_t *)p;
+ else if (channels[ch].ch->bits_in <= 16)
+ v = *(const uint16_t *)p;
+ else if (channels[ch].ch->bits_in <= 32)
+ v = *(const uint32_t *)p;
+ else if (channels[ch].ch->bits_in <= 64)
+ v = *(const uint64_t *)p;
+ else
+ abort();
libj2_j2u_add_ju(&channels[ch].histogram[index], v);
}
histogram[index].occurrences += 1U;
@@ -437,7 +452,7 @@ top_over_j2us_(const struct cube *cube, size_t channel, size_t position, const s
static void
top_over_j2us(const struct cube *cube, size_t channel, size_t position, const struct libj2_j2u *data,
- const struct channel_data *channels, size_t nchannels, struct libj2_j2u *result)
+ const struct channel_data *channels, size_t nchannels, struct libj2_j2u *result)
{
int use_addition = (int)(~nchannels & 1U);
result->high = 0;