From 0f3b0c170753f69bb7eab56b8d7818ea32b97afa Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 25 Feb 2026 21:56:05 +0100 Subject: Fix bug (incorrect update to histogram) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libquanta_vquantise_wu.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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; -- cgit v1.2.3-70-g09d2