From e613841641a0955c04b248a0a5c665e383f93759 Mon Sep 17 00:00:00 2001 From: Mathis Rosenhauer Date: Mon, 10 Feb 2014 16:43:05 +0100 Subject: [PATCH] Fix encoding long fs + check. Only relevant for j=64 --- src/encode.c | 4 ++-- tests/check_long_fs.c | 20 ++++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/encode.c b/src/encode.c index bd1a90b..d53b6db 100644 --- a/src/encode.c +++ b/src/encode.c @@ -137,11 +137,11 @@ static inline void emitblock_fs(struct aec_stream *strm, int k, int ref) for (i = ref; i < strm->block_size; i++) { used += (state->block[i] >> k) + 1; - if (used > 63) { + while (used > 63) { copy64(state->cds, acc); state->cds += 8; acc = 0; - used &= 0x3f; + used -= 64; } acc |= 1ULL << (63 - used); } diff --git a/tests/check_long_fs.c b/tests/check_long_fs.c index 3a945e3..246c41c 100644 --- a/tests/check_long_fs.c +++ b/tests/check_long_fs.c @@ -5,24 +5,20 @@ #include "libaec.h" #include "check_aec.h" -#define BUF_SIZE (4 * 64 * 4) +#define BUF_SIZE (64 * 4) int check_long_fs(struct test_state *state) { - int status, size; - unsigned char *tmp; + int status, size, i, bs; size = state->bytes_per_sample; + bs = state->strm->block_size; - for (tmp = state->ubuf; - tmp < state->ubuf + state->buf_len; - tmp += 2 * size) { - state->out(tmp, state->xmin, size); - state->out(tmp + size, state->xmin + 2, size); + for (i = 0; i < bs / 2; i++) { + state->out(state->ubuf + size * i, state->xmin, size); + state->out(state->ubuf + bs * size / 2 + size * i, 65000, size); } - state->out(state->ubuf + (64 + 1) * size, state->xmax-1, size); - printf("Checking long fs ... "); status = state->codec(state); @@ -53,9 +49,9 @@ int main (void) strm.flags = AEC_DATA_PREPROCESS; state.strm = &strm; - strm.bits_per_sample = 32; + strm.bits_per_sample = 16; strm.block_size = 64; - strm.rsi = 64; + strm.rsi = 1; state.codec = encode_decode_large; update_state(&state); -- 2.7.4