Use aom_reader with laplace_decode_special(). Change the laplace_decode_special() function to take an aom_reader struct instead of an od_ec_dec struct. Rename laplace_decode_special() to aom_laplace_decode_special(). Change-Id: I137ae9a4df3fb0fd0b54dea09f787f70a7d287f5
diff --git a/av1/common/generic_code.h b/av1/common/generic_code.h index 11cf91c..ce932d6 100644 --- a/av1/common/generic_code.h +++ b/av1/common/generic_code.h
@@ -26,13 +26,13 @@ generic_decode_(r, model, max, ex_q16, integration, str) # define aom_decode_cdf_adapt_q15(r, cdf, n, count, rate, str) \ aom_decode_cdf_adapt_q15_(r, cdf, n, count, rate, str) -# define od_decode_cdf_adapt(ec, cdf, n, increment, str) od_decode_cdf_adapt_(ec, cdf, n, increment, str) +# define od_decode_cdf_adapt(enc, cdf, n, increment, str) od_decode_cdf_adapt_(enc, cdf, n, increment, str) #else # define generic_decode(r, model, max, ex_q16, integration, str) \ generic_decode_(r, model, max, ex_q16, integration) # define aom_decode_cdf_adapt_q15(r, cdf, n, count, rate, str) \ aom_decode_cdf_adapt_q15_(r, cdf, n, count, rate) -# define od_decode_cdf_adapt(ec, cdf, n, increment, str) od_decode_cdf_adapt_(ec, cdf, n, increment) +# define od_decode_cdf_adapt(enc, cdf, n, increment, str) od_decode_cdf_adapt_(enc, cdf, n, increment) #endif typedef struct {
diff --git a/av1/decoder/generic_decoder.c b/av1/decoder/generic_decoder.c index 917050e..bcd55ae 100644 --- a/av1/decoder/generic_decoder.c +++ b/av1/decoder/generic_decoder.c
@@ -122,11 +122,7 @@ OD_ASSERT(*ex_q16 < INT_MAX >> 1); e = ((2**ex_q16 >> 8) + (1 << shift >> 1)) >> shift; decay = OD_MAXI(2, OD_MINI(254, 256*e/(e + 256))); -#if CONFIG_DAALA_EC - xs += laplace_decode_special(&r->ec, decay, (max == -1) ? -1 : ms - 15, ACCT_STR); -#else -# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC." -#endif + xs += aom_laplace_decode_special(r, decay, (max == -1) ? -1 : ms - 15, ACCT_STR); } if (shift != 0) { int special;
diff --git a/av1/decoder/laplace_decoder.c b/av1/decoder/laplace_decoder.c index 139d9bd..2d9e368 100644 --- a/av1/decoder/laplace_decoder.c +++ b/av1/decoder/laplace_decoder.c
@@ -102,7 +102,8 @@ * * @retval decoded variable x */ -int od_laplace_decode_special_(od_ec_dec *dec, unsigned decay, int max OD_ACC_STR) { +int aom_laplace_decode_special_(aom_reader *r, unsigned decay, + int max OD_ACC_STR) { int pos; int shift; int xs; @@ -135,19 +136,27 @@ } if (ms > 0 && ms < 15) { /* Simple way of truncating the pdf when we have a bound. */ - sym = od_ec_decode_cdf_unscaled(dec, cdf, ms + 1); + sym = aom_read_cdf_unscaled(r, cdf, ms + 1, ACCT_STR); } - else sym = od_ec_decode_cdf_q15(dec, cdf, 16); + else sym = aom_read_cdf(r, cdf, 16, ACCT_STR); xs += sym; ms -= 15; } while (sym >= 15 && ms != 0); - if (shift) pos = (xs << shift) + od_ec_dec_bits(dec, shift, ACCT_STR); +#if CONFIG_DAALA_EC + if (shift) pos = (xs << shift) + od_ec_dec_bits(&r->ec, shift, ACCT_STR); else pos = xs; +#else +# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC." +#endif OD_ASSERT(pos >> shift <= max >> shift || max == -1); if (max != -1 && pos > max) { pos = max; - dec->error = 1; +#if CONFIG_DAALA_EC + r->ec.error = 1; +#else +# error "CONFIG_PVQ currently requires CONFIG_DAALA_EC." +#endif } OD_ASSERT(pos <= max || max == -1); return pos;
diff --git a/av1/decoder/pvq_decoder.h b/av1/decoder/pvq_decoder.h index fa61460..1bb0fb0 100644 --- a/av1/decoder/pvq_decoder.h +++ b/av1/decoder/pvq_decoder.h
@@ -13,6 +13,7 @@ #if !defined(_pvq_decoder_H) # define _pvq_decoder_H (1) +# include "aom_dsp/bitreader.h" # include "aom_dsp/entdec.h" # include "av1/common/pvq.h" # include "av1/decoder/decint.h" @@ -21,12 +22,13 @@ od_coeff *y, int n, int k, int level); #if OD_ACCOUNTING -# define laplace_decode_special(dec, decay, max, str) od_laplace_decode_special_(dec, decay, max, str) +# define aom_laplace_decode_special(r, decay, max, str) aom_laplace_decode_special_(r, decay, max, str) #else -# define laplace_decode_special(dec, decay, max, str) od_laplace_decode_special_(dec, decay, max) +# define aom_laplace_decode_special(r, decay, max, str) aom_laplace_decode_special_(r, decay, max) #endif -int od_laplace_decode_special_(od_ec_dec *dec, unsigned decay, int max OD_ACC_STR); +int aom_laplace_decode_special_(aom_reader *r, unsigned decay, + int max OD_ACC_STR); void od_pvq_decode(daala_dec_ctx *dec, od_coeff *ref, od_coeff *out, int q0, int pli, int bs, const od_val16 *beta, int robust, int is_keyframe,