Switch rANS to 15 bit precision, and adjust L_BASE.
This causes rANS to operate at the same precision as the Daala EC. aom/master stats: rans10uabs8lbase12 → rans15uabs8lbase15 objective-1-fast PSNR YCbCr: 0.01% 0.01% 0.01% PSNRHVS: 0.01% SSIM: 0.01% MSSSIM: 0.01% CIEDE2000: 0.01% subset1 PSNR YCbCr: -0.01% -0.00% -0.00% PSNRHVS: -0.01% SSIM: -0.01% MSSSIM: -0.01% CIEDE2000: -0.01% (cherry picked from aom/master commit ddbc2e2a68bfc997dc61fca5bcaac3a75245e965) Change-Id: I6ef0a4f6198784b3712a61af9f105d560a22eaea
This commit is contained in:
@@ -74,7 +74,8 @@ bool check_uabs(const PvVec &pv_vec, uint8_t *buf) {
|
||||
return ans_read_end(&d);
|
||||
}
|
||||
|
||||
const aom_cdf_prob spareto65[] = { 260, 188, 138, 102, 133, 122, 64, 15, 1, 1 };
|
||||
const aom_cdf_prob spareto65[] = { 8320, 6018, 4402, 3254, 4259,
|
||||
3919, 2057, 492, 45, 2 };
|
||||
|
||||
const int kRansSymbols =
|
||||
static_cast<int>(sizeof(spareto65) / sizeof(spareto65[0]));
|
||||
@@ -94,7 +95,8 @@ std::vector<int> ans_encode_build_vals(rans_sym *const tab, int iters) {
|
||||
std::vector<int> ret;
|
||||
libaom_test::ACMRandom gen(18543637);
|
||||
for (int i = 0; i < iters; ++i) {
|
||||
int sym = p_to_sym[gen.Rand8() * 4];
|
||||
int sym =
|
||||
p_to_sym[((gen.Rand8() << 8) + gen.Rand8()) & (RANS_PRECISION - 1)];
|
||||
ret.push_back(sym);
|
||||
}
|
||||
return ret;
|
||||
|
Reference in New Issue
Block a user