apply clang-format

after:
253c001 Port dering experiment from aom
7208145 Adding 8x16/16x8/32x16/16x32 transforms

Change-Id: Id93e0d7b72a128701d8dec35fc2fac473944d0c1
This commit is contained in:
clang-format
2016-08-18 15:10:22 -07:00
committed by James Zern
parent 0996fc6be3
commit 21a0c2c9d7
20 changed files with 2308 additions and 2391 deletions

View File

@@ -34,8 +34,9 @@ using libvpx_test::ACMRandom;
TEST(Daala, TestDIVUuptoMAX) { TEST(Daala, TestDIVUuptoMAX) {
for (int d = 1; d <= OD_DIVU_DMAX; d++) { for (int d = 1; d <= OD_DIVU_DMAX; d++) {
for (uint32_t x = 1; x <= 1000000; x++) { for (uint32_t x = 1; x <= 1000000; x++) {
GTEST_ASSERT_EQ(x/d, OD_DIVU_SMALL(x, d)) << "x=" << x << " d=" << d << GTEST_ASSERT_EQ(x / d, OD_DIVU_SMALL(x, d))
" x/d=" << (x/d) << " != " << OD_DIVU_SMALL(x, d); << "x=" << x << " d=" << d << " x/d=" << (x / d)
<< " != " << OD_DIVU_SMALL(x, d);
} }
} }
} }
@@ -45,8 +46,9 @@ TEST(Daala, TestDIVUrandI31) {
for (int d = 1; d < OD_DIVU_DMAX; d++) { for (int d = 1; d < OD_DIVU_DMAX; d++) {
for (int i = 0; i < 1000000; i++) { for (int i = 0; i < 1000000; i++) {
uint32_t x = rnd.Rand31(); uint32_t x = rnd.Rand31();
GTEST_ASSERT_EQ(x/d, OD_DIVU_SMALL(x, d)) << "x=" << x << " d=" << d << GTEST_ASSERT_EQ(x / d, OD_DIVU_SMALL(x, d))
" x/d=" << (x/d) << " != " << OD_DIVU_SMALL(x, d); << "x=" << x << " d=" << d << " x/d=" << (x / d)
<< " != " << OD_DIVU_SMALL(x, d);
} }
} }
} }

View File

@@ -18,7 +18,6 @@
#include "vp10/common/reconinter.h" #include "vp10/common/reconinter.h"
#include "vp10/common/od_dering.h" #include "vp10/common/od_dering.h"
int compute_level_from_index(int global_level, int gi) { int compute_level_from_index(int global_level, int gi) {
static const int dering_gains[DERING_REFINEMENT_LEVELS] = { 0, 11, 16, 22 }; static const int dering_gains[DERING_REFINEMENT_LEVELS] = { 0, 11, 16, 22 };
int level; int level;
@@ -38,8 +37,8 @@ int sb_all_skip(const VP10_COMMON *const cm, int mi_row, int mi_col) {
for (r = 0; r < maxr; r++) { for (r = 0; r < maxr; r++) {
for (c = 0; c < maxc; c++) { for (c = 0; c < maxc; c++) {
skip = skip && skip = skip &&
cm->mi_grid_visible[(mi_row + r)*cm->mi_stride + mi_col + c]-> cm->mi_grid_visible[(mi_row + r) * cm->mi_stride + mi_col + c]
mbmi.skip; ->mbmi.skip;
} }
} }
return skip; return skip;
@@ -73,9 +72,8 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
for (c = 0; c < bsize[pli] * cm->mi_cols; ++c) { for (c = 0; c < bsize[pli] * cm->mi_cols; ++c) {
#if CONFIG_VPX_HIGHBITDEPTH #if CONFIG_VPX_HIGHBITDEPTH
if (cm->use_highbitdepth) { if (cm->use_highbitdepth) {
src[pli][r * stride + c] = src[pli][r * stride + c] = CONVERT_TO_SHORTPTR(
CONVERT_TO_SHORTPTR(xd->plane[pli].dst.buf) xd->plane[pli].dst.buf)[r * xd->plane[pli].dst.stride + c];
[r * xd->plane[pli].dst.stride + c];
} else { } else {
#endif #endif
src[pli][r * stride + c] = src[pli][r * stride + c] =
@@ -106,19 +104,19 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
level = compute_level_from_index( level = compute_level_from_index(
global_level, global_level,
cm->mi_grid_visible[MI_BLOCK_SIZE * sbr * cm->mi_stride + cm->mi_grid_visible[MI_BLOCK_SIZE * sbr * cm->mi_stride +
MI_BLOCK_SIZE*sbc]->mbmi.dering_gain); MI_BLOCK_SIZE * sbc]
->mbmi.dering_gain);
#else #else
level = global_level; level = global_level;
#endif #endif
/* FIXME: This is a temporary hack that uses more conservative /* FIXME: This is a temporary hack that uses more conservative
deringing for chroma. */ deringing for chroma. */
if (pli) level = (level * 5 + 4) >> 3; if (pli) level = (level * 5 + 4) >> 3;
if (sb_all_skip(cm, sbr*MI_BLOCK_SIZE, sbc*MI_BLOCK_SIZE)) level = 0; if (sb_all_skip(cm, sbr * MI_BLOCK_SIZE, sbc * MI_BLOCK_SIZE))
level = 0;
threshold = level << coeff_shift; threshold = level << coeff_shift;
od_dering( od_dering(
&OD_DERING_VTBL_C, &OD_DERING_VTBL_C, dst, MI_BLOCK_SIZE * bsize[pli],
dst,
MI_BLOCK_SIZE*bsize[pli],
&src[pli][sbr * stride * bsize[pli] * MI_BLOCK_SIZE + &src[pli][sbr * stride * bsize[pli] * MI_BLOCK_SIZE +
sbc * bsize[pli] * MI_BLOCK_SIZE], sbc * bsize[pli] * MI_BLOCK_SIZE],
stride, nhb, nvb, sbc, sbr, nhsb, nvsb, dec[pli], dir, pli, stride, nhb, nvb, sbc, sbr, nhsb, nvsb, dec[pli], dir, pli,
@@ -129,12 +127,14 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
#if CONFIG_VPX_HIGHBITDEPTH #if CONFIG_VPX_HIGHBITDEPTH
if (cm->use_highbitdepth) { if (cm->use_highbitdepth) {
CONVERT_TO_SHORTPTR(xd->plane[pli].dst.buf) CONVERT_TO_SHORTPTR(xd->plane[pli].dst.buf)
[xd->plane[pli].dst.stride*(bsize[pli]*MI_BLOCK_SIZE*sbr + r) [xd->plane[pli].dst.stride *
+ sbc*bsize[pli]*MI_BLOCK_SIZE + c] = (bsize[pli] * MI_BLOCK_SIZE * sbr + r) +
sbc * bsize[pli] * MI_BLOCK_SIZE + c] =
dst[r * MI_BLOCK_SIZE * bsize[pli] + c]; dst[r * MI_BLOCK_SIZE * bsize[pli] + c];
} else { } else {
#endif #endif
xd->plane[pli].dst.buf[xd->plane[pli].dst.stride* xd->plane[pli]
.dst.buf[xd->plane[pli].dst.stride *
(bsize[pli] * MI_BLOCK_SIZE * sbr + r) + (bsize[pli] * MI_BLOCK_SIZE * sbr + r) +
sbc * bsize[pli] * MI_BLOCK_SIZE + c] = sbc * bsize[pli] * MI_BLOCK_SIZE + c] =
dst[r * MI_BLOCK_SIZE * bsize[pli] + c]; dst[r * MI_BLOCK_SIZE * bsize[pli] + c];

View File

@@ -24,8 +24,7 @@ void vp10_dering_frame(YV12_BUFFER_CONFIG *frame, VP10_COMMON *cm,
MACROBLOCKD *xd, int global_level); MACROBLOCKD *xd, int global_level);
int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref, int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
VP10_COMMON *cm, VP10_COMMON *cm, MACROBLOCKD *xd);
MACROBLOCKD *xd);
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"

View File

@@ -59,12 +59,9 @@ const uint16_t band_count_table[TX_SIZES_ALL][8] = {
{ 1, 2, 3, 4, 3, 16 - 13, 0 }, { 1, 2, 3, 4, 11, 64 - 21, 0 }, { 1, 2, 3, 4, 3, 16 - 13, 0 }, { 1, 2, 3, 4, 11, 64 - 21, 0 },
{ 1, 2, 3, 4, 11, 256 - 21, 0 }, { 1, 2, 3, 4, 11, 1024 - 21, 0 }, { 1, 2, 3, 4, 11, 256 - 21, 0 }, { 1, 2, 3, 4, 11, 1024 - 21, 0 },
#if CONFIG_EXT_TX #if CONFIG_EXT_TX
{ 1, 2, 3, 4, 8, 32 - 18, 0 }, { 1, 2, 3, 4, 8, 32 - 18, 0 }, { 1, 2, 3, 4, 8, 32 - 18, 0 },
{ 1, 2, 3, 4, 8, 32 - 18, 0 }, { 1, 2, 3, 4, 11, 128 - 21, 0 }, { 1, 2, 3, 4, 11, 128 - 21, 0 },
{ 1, 2, 3, 4, 11, 128 - 21, 0 }, { 1, 2, 3, 4, 11, 512 - 21, 0 }, { 1, 2, 3, 4, 11, 512 - 21, 0 },
{ 1, 2, 3, 4, 11, 128 - 21, 0 },
{ 1, 2, 3, 4, 11, 512 - 21, 0 },
{ 1, 2, 3, 4, 11, 512 - 21, 0 },
#endif // CONFIG_EXT_TX #endif // CONFIG_EXT_TX
}; };
@@ -72,12 +69,9 @@ const uint16_t band_cum_count_table[TX_SIZES_ALL][8] = {
{ 0, 1, 3, 6, 10, 13, 16, 0 }, { 0, 1, 3, 6, 10, 21, 64, 0 }, { 0, 1, 3, 6, 10, 13, 16, 0 }, { 0, 1, 3, 6, 10, 21, 64, 0 },
{ 0, 1, 3, 6, 10, 21, 256, 0 }, { 0, 1, 3, 6, 10, 21, 1024, 0 }, { 0, 1, 3, 6, 10, 21, 256, 0 }, { 0, 1, 3, 6, 10, 21, 1024, 0 },
#if CONFIG_EXT_TX #if CONFIG_EXT_TX
{ 0, 1, 3, 6, 10, 18, 32, 0 }, { 0, 1, 3, 6, 10, 18, 32, 0 }, { 0, 1, 3, 6, 10, 18, 32, 0 },
{ 0, 1, 3, 6, 10, 18, 32, 0 }, { 0, 1, 3, 6, 10, 21, 128, 0 }, { 0, 1, 3, 6, 10, 21, 128, 0 },
{ 0, 1, 3, 6, 10, 21, 128, 0 }, { 0, 1, 3, 6, 10, 21, 512, 0 }, { 0, 1, 3, 6, 10, 21, 512, 0 },
{ 0, 1, 3, 6, 10, 21, 128, 0 },
{ 0, 1, 3, 6, 10, 21, 512, 0 },
{ 0, 1, 3, 6, 10, 21, 512, 0 },
#endif // CONFIG_EXT_TX #endif // CONFIG_EXT_TX
}; };

View File

@@ -168,8 +168,7 @@ static INLINE const uint8_t *get_band_translate(TX_SIZE tx_size) {
switch (tx_size) { switch (tx_size) {
case TX_4X4: return vp10_coefband_trans_4x4; case TX_4X4: return vp10_coefband_trans_4x4;
#if CONFIG_EXT_TX #if CONFIG_EXT_TX
case TX_4X8: case TX_4X8: return vp10_coefband_trans_4x8_8x4;
return vp10_coefband_trans_4x8_8x4;
#endif // CONFIG_EXT_TX #endif // CONFIG_EXT_TX
default: return vp10_coefband_trans_8x8plus; default: return vp10_coefband_trans_8x8plus;
} }

View File

@@ -647,8 +647,8 @@ void vp10_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest, int stride,
} }
} }
void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int tx_type) { int tx_type) {
static const transform_2d IHT_8x16[] = { static const transform_2d IHT_8x16[] = {
{ idct16_c, idct8_c }, // DCT_DCT { idct16_c, idct8_c }, // DCT_DCT
{ iadst16_c, idct8_c }, // ADST_DCT { iadst16_c, idct8_c }, // ADST_DCT
@@ -700,8 +700,8 @@ void vp10_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest,
} }
} }
void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int tx_type) { int tx_type) {
static const transform_2d IHT_16x8[] = { static const transform_2d IHT_16x8[] = {
{ idct8_c, idct16_c }, // DCT_DCT { idct8_c, idct16_c }, // DCT_DCT
{ iadst8_c, idct16_c }, // ADST_DCT { iadst8_c, idct16_c }, // ADST_DCT
@@ -753,8 +753,8 @@ void vp10_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest,
} }
} }
void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int tx_type) { int tx_type) {
static const transform_2d IHT_16x32[] = { static const transform_2d IHT_16x32[] = {
{ idct32_c, idct16_c }, // DCT_DCT { idct32_c, idct16_c }, // DCT_DCT
{ ihalfright32_c, idct16_c }, // ADST_DCT { ihalfright32_c, idct16_c }, // ADST_DCT
@@ -806,8 +806,8 @@ void vp10_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest,
} }
} }
void vp10_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, void vp10_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int tx_type) { int tx_type) {
static const transform_2d IHT_32x16[] = { static const transform_2d IHT_32x16[] = {
{ idct16_c, idct32_c }, // DCT_DCT { idct16_c, idct32_c }, // DCT_DCT
{ iadst16_c, idct32_c }, // ADST_DCT { iadst16_c, idct32_c }, // ADST_DCT
@@ -1140,38 +1140,38 @@ void vp10_inv_txfm_add_4x4(const tran_low_t *input, uint8_t *dest, int stride,
} }
#if CONFIG_EXT_TX #if CONFIG_EXT_TX
void vp10_inv_txfm_add_4x8(const tran_low_t *input, uint8_t *dest, void vp10_inv_txfm_add_4x8(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int eob, TX_TYPE tx_type) { int eob, TX_TYPE tx_type) {
(void)eob; (void)eob;
vp10_iht4x8_32_add(input, dest, stride, tx_type); vp10_iht4x8_32_add(input, dest, stride, tx_type);
} }
void vp10_inv_txfm_add_8x4(const tran_low_t *input, uint8_t *dest, void vp10_inv_txfm_add_8x4(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int eob, TX_TYPE tx_type) { int eob, TX_TYPE tx_type) {
(void)eob; (void)eob;
vp10_iht8x4_32_add(input, dest, stride, tx_type); vp10_iht8x4_32_add(input, dest, stride, tx_type);
} }
void vp10_inv_txfm_add_8x16(const tran_low_t *input, uint8_t *dest, void vp10_inv_txfm_add_8x16(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int eob, TX_TYPE tx_type) { int eob, TX_TYPE tx_type) {
(void)eob; (void)eob;
vp10_iht8x16_128_add(input, dest, stride, tx_type); vp10_iht8x16_128_add(input, dest, stride, tx_type);
} }
void vp10_inv_txfm_add_16x8(const tran_low_t *input, uint8_t *dest, void vp10_inv_txfm_add_16x8(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int eob, TX_TYPE tx_type) { int eob, TX_TYPE tx_type) {
(void)eob; (void)eob;
vp10_iht16x8_128_add(input, dest, stride, tx_type); vp10_iht16x8_128_add(input, dest, stride, tx_type);
} }
void vp10_inv_txfm_add_16x32(const tran_low_t *input, uint8_t *dest, void vp10_inv_txfm_add_16x32(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int eob, TX_TYPE tx_type) { int eob, TX_TYPE tx_type) {
(void)eob; (void)eob;
vp10_iht16x32_512_add(input, dest, stride, tx_type); vp10_iht16x32_512_add(input, dest, stride, tx_type);
} }
void vp10_inv_txfm_add_32x16(const tran_low_t *input, uint8_t *dest, void vp10_inv_txfm_add_32x16(const tran_low_t *input, uint8_t *dest, int stride,
int stride, int eob, TX_TYPE tx_type) { int eob, TX_TYPE tx_type) {
(void)eob; (void)eob;
vp10_iht32x16_512_add(input, dest, stride, tx_type); vp10_iht32x16_512_add(input, dest, stride, tx_type);
} }
@@ -1364,8 +1364,8 @@ void vp10_highbd_iht4x8_32_add_c(const tran_low_t *input, uint8_t *dest8,
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
HIGH_IHT_4x8[tx_type].rows(input, outtmp, bd); HIGH_IHT_4x8[tx_type].rows(input, outtmp, bd);
for (j = 0; j < n; ++j) { for (j = 0; j < n; ++j) {
out[j][i] = HIGHBD_WRAPLOW( out[j][i] =
highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd); HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
} }
input += n; input += n;
} }
@@ -1422,8 +1422,8 @@ void vp10_highbd_iht8x4_32_add_c(const tran_low_t *input, uint8_t *dest8,
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
HIGH_IHT_8x4[tx_type].rows(input, outtmp, bd); HIGH_IHT_8x4[tx_type].rows(input, outtmp, bd);
for (j = 0; j < n2; ++j) { for (j = 0; j < n2; ++j) {
out[j][i] = HIGHBD_WRAPLOW( out[j][i] =
highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd); HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
} }
input += n2; input += n2;
} }
@@ -1480,8 +1480,8 @@ void vp10_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest8,
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
HIGH_IHT_8x16[tx_type].rows(input, outtmp, bd); HIGH_IHT_8x16[tx_type].rows(input, outtmp, bd);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
out[j][i] = HIGHBD_WRAPLOW( out[j][i] =
highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd); HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
input += n; input += n;
} }
@@ -1497,8 +1497,8 @@ void vp10_highbd_iht8x16_128_add_c(const tran_low_t *input, uint8_t *dest8,
for (j = 0; j < n; ++j) { for (j = 0; j < n; ++j) {
int d = i * stride + j; int d = i * stride + j;
int s = j * outstride + i; int s = j * outstride + i;
dest[d] = highbd_clip_pixel_add(dest[d], dest[d] =
ROUND_POWER_OF_TWO(outp[s], 6), bd); highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
} }
} }
} }
@@ -1537,8 +1537,8 @@ void vp10_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest8,
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
HIGH_IHT_16x8[tx_type].rows(input, outtmp, bd); HIGH_IHT_16x8[tx_type].rows(input, outtmp, bd);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j)
out[j][i] = HIGHBD_WRAPLOW( out[j][i] =
highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd); HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
input += n2; input += n2;
} }
@@ -1554,8 +1554,8 @@ void vp10_highbd_iht16x8_128_add_c(const tran_low_t *input, uint8_t *dest8,
for (j = 0; j < n2; ++j) { for (j = 0; j < n2; ++j) {
int d = i * stride + j; int d = i * stride + j;
int s = j * outstride + i; int s = j * outstride + i;
dest[d] = highbd_clip_pixel_add(dest[d], dest[d] =
ROUND_POWER_OF_TWO(outp[s], 6), bd); highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
} }
} }
} }
@@ -1594,8 +1594,8 @@ void vp10_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest8,
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
HIGH_IHT_16x32[tx_type].rows(input, outtmp, bd); HIGH_IHT_16x32[tx_type].rows(input, outtmp, bd);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
out[j][i] = HIGHBD_WRAPLOW( out[j][i] =
highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd); HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
input += n; input += n;
} }
@@ -1611,8 +1611,8 @@ void vp10_highbd_iht16x32_512_add_c(const tran_low_t *input, uint8_t *dest8,
for (j = 0; j < n; ++j) { for (j = 0; j < n; ++j) {
int d = i * stride + j; int d = i * stride + j;
int s = j * outstride + i; int s = j * outstride + i;
dest[d] = highbd_clip_pixel_add(dest[d], dest[d] =
ROUND_POWER_OF_TWO(outp[s], 6), bd); highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
} }
} }
} }
@@ -1651,8 +1651,8 @@ void vp10_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest8,
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
HIGH_IHT_32x16[tx_type].rows(input, outtmp, bd); HIGH_IHT_32x16[tx_type].rows(input, outtmp, bd);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j)
out[j][i] = HIGHBD_WRAPLOW( out[j][i] =
highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd); HIGHBD_WRAPLOW(highbd_dct_const_round_shift(outtmp[j] * Sqrt2), bd);
input += n2; input += n2;
} }
@@ -1668,8 +1668,8 @@ void vp10_highbd_iht32x16_512_add_c(const tran_low_t *input, uint8_t *dest8,
for (j = 0; j < n2; ++j) { for (j = 0; j < n2; ++j) {
int d = i * stride + j; int d = i * stride + j;
int s = j * outstride + i; int s = j * outstride + i;
dest[d] = highbd_clip_pixel_add(dest[d], dest[d] =
ROUND_POWER_OF_TWO(outp[s], 6), bd); highbd_clip_pixel_add(dest[d], ROUND_POWER_OF_TWO(outp[s], 6), bd);
} }
} }
} }

View File

@@ -37,8 +37,10 @@ const od_dering_opt_vtbl OD_DERING_VTBL_C = {
/* Generated from gen_filter_tables.c. */ /* Generated from gen_filter_tables.c. */
const int OD_DIRECTION_OFFSETS_TABLE[8][3] = { const int OD_DIRECTION_OFFSETS_TABLE[8][3] = {
{-1*OD_FILT_BSTRIDE + 1, -2*OD_FILT_BSTRIDE + 2, -3*OD_FILT_BSTRIDE + 3 }, { -1 * OD_FILT_BSTRIDE + 1, -2 * OD_FILT_BSTRIDE + 2,
{ 0*OD_FILT_BSTRIDE + 1, -1*OD_FILT_BSTRIDE + 2, -1*OD_FILT_BSTRIDE + 3 }, -3 * OD_FILT_BSTRIDE + 3 },
{ 0 * OD_FILT_BSTRIDE + 1, -1 * OD_FILT_BSTRIDE + 2,
-1 * OD_FILT_BSTRIDE + 3 },
{ 0 * OD_FILT_BSTRIDE + 1, 0 * OD_FILT_BSTRIDE + 2, 0 * OD_FILT_BSTRIDE + 3 }, { 0 * OD_FILT_BSTRIDE + 1, 0 * OD_FILT_BSTRIDE + 2, 0 * OD_FILT_BSTRIDE + 3 },
{ 0 * OD_FILT_BSTRIDE + 1, 1 * OD_FILT_BSTRIDE + 2, 1 * OD_FILT_BSTRIDE + 3 }, { 0 * OD_FILT_BSTRIDE + 1, 1 * OD_FILT_BSTRIDE + 2, 1 * OD_FILT_BSTRIDE + 3 },
{ 1 * OD_FILT_BSTRIDE + 1, 2 * OD_FILT_BSTRIDE + 2, 3 * OD_FILT_BSTRIDE + 3 }, { 1 * OD_FILT_BSTRIDE + 1, 2 * OD_FILT_BSTRIDE + 2, 3 * OD_FILT_BSTRIDE + 3 },
@@ -47,9 +49,8 @@ const int OD_DIRECTION_OFFSETS_TABLE[8][3] = {
{ 1 * OD_FILT_BSTRIDE + 0, 2 * OD_FILT_BSTRIDE - 1, 3 * OD_FILT_BSTRIDE - 1 }, { 1 * OD_FILT_BSTRIDE + 0, 2 * OD_FILT_BSTRIDE - 1, 3 * OD_FILT_BSTRIDE - 1 },
}; };
const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS] = { const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS] = { 0, 0.5, 0.707,
0, 0.5, 0.707, 1, 1.41, 2 1, 1.41, 2 };
};
/* Detect direction. 0 means 45-degree up-right, 2 is horizontal, and so on. /* Detect direction. 0 means 45-degree up-right, 2 is horizontal, and so on.
The search minimizes the weighted variance along all the lines in a The search minimizes the weighted variance along all the lines in a
@@ -93,10 +94,12 @@ static int od_dir_find8(const od_dering_in *img, int stride, int32_t *var,
cost[2] *= div_table[8]; cost[2] *= div_table[8];
cost[6] *= div_table[8]; cost[6] *= div_table[8];
for (i = 0; i < 7; i++) { for (i = 0; i < 7; i++) {
cost[0] += (partial[0][i]*partial[0][i] cost[0] += (partial[0][i] * partial[0][i] +
+ partial[0][14 - i]*partial[0][14 - i])*div_table[i + 1]; partial[0][14 - i] * partial[0][14 - i]) *
cost[4] += (partial[4][i]*partial[4][i] div_table[i + 1];
+ partial[4][14 - i]*partial[4][14 - i])*div_table[i + 1]; cost[4] += (partial[4][i] * partial[4][i] +
partial[4][14 - i] * partial[4][14 - i]) *
div_table[i + 1];
} }
cost[0] += partial[0][7] * partial[0][7] * div_table[8]; cost[0] += partial[0][7] * partial[0][7] * div_table[8];
cost[4] += partial[4][7] * partial[4][7] * div_table[8]; cost[4] += partial[4][7] * partial[4][7] * div_table[8];
@@ -107,8 +110,9 @@ static int od_dir_find8(const od_dering_in *img, int stride, int32_t *var,
} }
cost[i] *= div_table[8]; cost[i] *= div_table[8];
for (j = 0; j < 4 - 1; j++) { for (j = 0; j < 4 - 1; j++) {
cost[i] += (partial[i][j]*partial[i][j] cost[i] += (partial[i][j] * partial[i][j] +
+ partial[i][10 - j]*partial[i][10 - j])*div_table[2*j + 2]; partial[i][10 - j] * partial[i][10 - j]) *
div_table[2 * j + 2];
} }
} }
for (i = 0; i < 8; i++) { for (i = 0; i < 8; i++) {
@@ -127,8 +131,8 @@ static int od_dir_find8(const od_dering_in *img, int stride, int32_t *var,
} }
#define OD_DERING_VERY_LARGE (30000) #define OD_DERING_VERY_LARGE (30000)
#define OD_DERING_INBUF_SIZE ((OD_BSIZE_MAX + 2*OD_FILT_BORDER)*\ #define OD_DERING_INBUF_SIZE \
(OD_BSIZE_MAX + 2*OD_FILT_BORDER)) ((OD_BSIZE_MAX + 2 * OD_FILT_BORDER) * (OD_BSIZE_MAX + 2 * OD_FILT_BORDER))
/* Smooth in the direction detected. */ /* Smooth in the direction detected. */
void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in, void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in,
@@ -147,10 +151,10 @@ void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in,
for (k = 0; k < 3; k++) { for (k = 0; k < 3; k++) {
int16_t p0; int16_t p0;
int16_t p1; int16_t p1;
p0 = in[i*OD_FILT_BSTRIDE + j + OD_DIRECTION_OFFSETS_TABLE[dir][k]] p0 = in[i * OD_FILT_BSTRIDE + j + OD_DIRECTION_OFFSETS_TABLE[dir][k]] -
- xx; xx;
p1 = in[i*OD_FILT_BSTRIDE + j - OD_DIRECTION_OFFSETS_TABLE[dir][k]] p1 = in[i * OD_FILT_BSTRIDE + j - OD_DIRECTION_OFFSETS_TABLE[dir][k]] -
- xx; xx;
if (abs(p0) < threshold) sum += taps[k] * p0; if (abs(p0) < threshold) sum += taps[k] * p0;
if (abs(p1) < threshold) sum += taps[k] * p1; if (abs(p1) < threshold) sum += taps[k] * p1;
} }
@@ -161,23 +165,28 @@ void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in,
} }
void od_filter_dering_direction_4x4_c(int16_t *y, int ystride, void od_filter_dering_direction_4x4_c(int16_t *y, int ystride,
const int16_t *in, int threshold, int dir) { const int16_t *in, int threshold,
int dir) {
od_filter_dering_direction_c(y, ystride, in, 2, threshold, dir); od_filter_dering_direction_c(y, ystride, in, 2, threshold, dir);
} }
void od_filter_dering_direction_8x8_c(int16_t *y, int ystride, void od_filter_dering_direction_8x8_c(int16_t *y, int ystride,
const int16_t *in, int threshold, int dir) { const int16_t *in, int threshold,
int dir) {
od_filter_dering_direction_c(y, ystride, in, 3, threshold, dir); od_filter_dering_direction_c(y, ystride, in, 3, threshold, dir);
} }
/* Smooth in the direction orthogonal to what was detected. */ /* Smooth in the direction orthogonal to what was detected. */
void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in, void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
const od_dering_in *x, int xstride, int ln, int threshold, int dir) { const od_dering_in *x, int xstride, int ln,
int threshold, int dir) {
int i; int i;
int j; int j;
int offset; int offset;
if (dir > 0 && dir < 4) offset = OD_FILT_BSTRIDE; if (dir > 0 && dir < 4)
else offset = 1; offset = OD_FILT_BSTRIDE;
else
offset = 1;
for (i = 0; i < 1 << ln; i++) { for (i = 0; i < 1 << ln; i++) {
for (j = 0; j < 1 << ln; j++) { for (j = 0; j < 1 << ln; j++) {
int16_t athresh; int16_t athresh;
@@ -192,8 +201,9 @@ void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
to be a little bit more aggressive on pure horizontal/vertical to be a little bit more aggressive on pure horizontal/vertical
since the ringing there tends to be directional, so it doesn't since the ringing there tends to be directional, so it doesn't
get removed by the directional filtering. */ get removed by the directional filtering. */
athresh = OD_MINI(threshold, threshold/3 athresh = OD_MINI(
+ abs(in[i*OD_FILT_BSTRIDE + j] - x[i*xstride + j])); threshold, threshold / 3 +
abs(in[i * OD_FILT_BSTRIDE + j] - x[i * xstride + j]));
yy = in[i * OD_FILT_BSTRIDE + j]; yy = in[i * OD_FILT_BSTRIDE + j];
sum = 0; sum = 0;
p = in[i * OD_FILT_BSTRIDE + j + offset] - yy; p = in[i * OD_FILT_BSTRIDE + j + offset] - yy;
@@ -210,14 +220,14 @@ void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
} }
void od_filter_dering_orthogonal_4x4_c(int16_t *y, int ystride, void od_filter_dering_orthogonal_4x4_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold, const int16_t *in, const od_dering_in *x,
int dir) { int xstride, int threshold, int dir) {
od_filter_dering_orthogonal_c(y, ystride, in, x, xstride, 2, threshold, dir); od_filter_dering_orthogonal_c(y, ystride, in, x, xstride, 2, threshold, dir);
} }
void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride, void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold, const int16_t *in, const od_dering_in *x,
int dir) { int xstride, int threshold, int dir) {
od_filter_dering_orthogonal_c(y, ystride, in, x, xstride, 3, threshold, dir); od_filter_dering_orthogonal_c(y, ystride, in, x, xstride, 3, threshold, dir);
} }
@@ -225,9 +235,8 @@ void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride,
to [-.5, 3]. The table is computed as: to [-.5, 3]. The table is computed as:
round(256*min(3, max(.5, 1.08*(sqrt(2)*2.^([0:17]+8)/256/256).^.16))) */ round(256*min(3, max(.5, 1.08*(sqrt(2)*2.^([0:17]+8)/256/256).^.16))) */
static const int16_t OD_THRESH_TABLE_Q8[18] = { static const int16_t OD_THRESH_TABLE_Q8[18] = {
128, 134, 150, 168, 188, 210, 234, 262, 128, 134, 150, 168, 188, 210, 234, 262, 292,
292, 327, 365, 408, 455, 509, 569, 635, 327, 365, 408, 455, 509, 569, 635, 710, 768,
710, 768,
}; };
/* Compute deringing filter threshold for each 8x8 block based on the /* Compute deringing filter threshold for each 8x8 block based on the
@@ -237,7 +246,8 @@ static const int16_t OD_THRESH_TABLE_Q8[18] = {
contrast edge, or a non-directional texture, so we want to be careful not contrast edge, or a non-directional texture, so we want to be careful not
to blur. */ to blur. */
static void od_compute_thresh(int thresh[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], static void od_compute_thresh(int thresh[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
int threshold, int32_t var[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int threshold,
int32_t var[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
int nhb, int nvb) { int nhb, int nvb) {
int bx; int bx;
int by; int by;
@@ -252,10 +262,11 @@ static void od_compute_thresh(int thresh[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS],
} }
void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride, void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
const od_dering_in *x, int xstride, int nhb, int nvb, int sbx, int sby, const od_dering_in *x, int xstride, int nhb, int nvb, int sbx,
int nhsb, int nvsb, int xdec, int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int sby, int nhsb, int nvsb, int xdec,
int pli, unsigned char *bskip, int skip_stride, int threshold, int overlap, int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int pli,
int coeff_shift) { unsigned char *bskip, int skip_stride, int threshold,
int overlap, int coeff_shift) {
int i; int i;
int j; int j;
int bx; int bx;
@@ -271,10 +282,10 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
are outside the frame. We could change the filter instead, but it would are outside the frame. We could change the filter instead, but it would
add special cases for any future vectorization. */ add special cases for any future vectorization. */
for (i = 0; i < OD_DERING_INBUF_SIZE; i++) inbuf[i] = OD_DERING_VERY_LARGE; for (i = 0; i < OD_DERING_INBUF_SIZE; i++) inbuf[i] = OD_DERING_VERY_LARGE;
for (i = -OD_FILT_BORDER*(sby != 0); i < (nvb << bsize) for (i = -OD_FILT_BORDER * (sby != 0);
+ OD_FILT_BORDER*(sby != nvsb - 1); i++) { i < (nvb << bsize) + OD_FILT_BORDER * (sby != nvsb - 1); i++) {
for (j = -OD_FILT_BORDER*(sbx != 0); j < (nhb << bsize) for (j = -OD_FILT_BORDER * (sbx != 0);
+ OD_FILT_BORDER*(sbx != nhsb - 1); j++) { j < (nhb << bsize) + OD_FILT_BORDER * (sbx != nhsb - 1); j++) {
in[i * OD_FILT_BSTRIDE + j] = x[i * xstride + j]; in[i * OD_FILT_BSTRIDE + j] = x[i * xstride + j];
} }
} }
@@ -286,8 +297,7 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
} }
} }
od_compute_thresh(thresh, threshold, var, nhb, nvb); od_compute_thresh(thresh, threshold, var, nhb, nvb);
} } else {
else {
for (by = 0; by < nvb; by++) { for (by = 0; by < nvb; by++) {
for (bx = 0; bx < nhb; bx++) { for (bx = 0; bx < nhb; bx++) {
thresh[by][bx] = threshold; thresh[by][bx] = threshold;
@@ -316,8 +326,8 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
times. */ times. */
for (i = ystart; i < yend; i++) { for (i = ystart; i < yend; i++) {
for (j = xstart; j < xend; j++) { for (j = xstart; j < xend; j++) {
skip = skip && bskip[((by << 1 >> xdec) + i)*skip_stride skip = skip && bskip[((by << 1 >> xdec) + i) * skip_stride +
+ (bx << 1 >> xdec) + j]; (bx << 1 >> xdec) + j];
} }
} }
#else #else
@@ -331,8 +341,8 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
for (bx = 0; bx < nhb; bx++) { for (bx = 0; bx < nhb; bx++) {
(vtbl->filter_dering_direction[bsize - OD_LOG_BSIZE0])( (vtbl->filter_dering_direction[bsize - OD_LOG_BSIZE0])(
&y[(by * ystride << bsize) + (bx << bsize)], ystride, &y[(by * ystride << bsize) + (bx << bsize)], ystride,
&in[(by*OD_FILT_BSTRIDE << bsize) + (bx << bsize)], &in[(by * OD_FILT_BSTRIDE << bsize) + (bx << bsize)], thresh[by][bx],
thresh[by][bx], dir[by][bx]); dir[by][bx]);
} }
} }
for (i = 0; i < nvb << bsize; i++) { for (i = 0; i < nvb << bsize; i++) {
@@ -345,8 +355,8 @@ void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
(vtbl->filter_dering_orthogonal[bsize - OD_LOG_BSIZE0])( (vtbl->filter_dering_orthogonal[bsize - OD_LOG_BSIZE0])(
&y[(by * ystride << bsize) + (bx << bsize)], ystride, &y[(by * ystride << bsize) + (bx << bsize)], ystride,
&in[(by * OD_FILT_BSTRIDE << bsize) + (bx << bsize)], &in[(by * OD_FILT_BSTRIDE << bsize) + (bx << bsize)],
&x[(by*xstride << bsize) + (bx << bsize)], xstride, &x[(by * xstride << bsize) + (bx << bsize)], xstride, thresh[by][bx],
thresh[by][bx], dir[by][bx]); dir[by][bx]);
} }
} }
} }

View File

@@ -48,9 +48,12 @@ extern const double OD_DERING_GAIN_TABLE[OD_DERING_LEVELS];
extern const int OD_DIRECTION_OFFSETS_TABLE[8][3]; extern const int OD_DIRECTION_OFFSETS_TABLE[8][3];
typedef void (*od_filter_dering_direction_func)(int16_t *y, int ystride, typedef void (*od_filter_dering_direction_func)(int16_t *y, int ystride,
const int16_t *in, int threshold, int dir); const int16_t *in,
int threshold, int dir);
typedef void (*od_filter_dering_orthogonal_func)(int16_t *y, int ystride, typedef void (*od_filter_dering_orthogonal_func)(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold, const int16_t *in,
const od_dering_in *x,
int xstride, int threshold,
int dir); int dir);
struct od_dering_opt_vtbl { struct od_dering_opt_vtbl {
@@ -59,28 +62,31 @@ struct od_dering_opt_vtbl {
}; };
typedef struct od_dering_opt_vtbl od_dering_opt_vtbl; typedef struct od_dering_opt_vtbl od_dering_opt_vtbl;
void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride, void od_dering(const od_dering_opt_vtbl *vtbl, int16_t *y, int ystride,
const od_dering_in *x, int xstride, int nvb, int nhb, int sbx, int sby, const od_dering_in *x, int xstride, int nvb, int nhb, int sbx,
int nhsb, int nvsb, int xdec, int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int sby, int nhsb, int nvsb, int xdec,
int pli, unsigned char *bskip, int skip_stride, int threshold, int overlap, int dir[OD_DERING_NBLOCKS][OD_DERING_NBLOCKS], int pli,
int coeff_shift); unsigned char *bskip, int skip_stride, int threshold,
int overlap, int coeff_shift);
void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in, void od_filter_dering_direction_c(int16_t *y, int ystride, const int16_t *in,
int ln, int threshold, int dir); int ln, int threshold, int dir);
void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in, void od_filter_dering_orthogonal_c(int16_t *y, int ystride, const int16_t *in,
const od_dering_in *x, int xstride, int ln, int threshold, int dir); const od_dering_in *x, int xstride, int ln,
int threshold, int dir);
extern const od_dering_opt_vtbl OD_DERING_VTBL_C; extern const od_dering_opt_vtbl OD_DERING_VTBL_C;
void od_filter_dering_direction_4x4_c(int16_t *y, int ystride, void od_filter_dering_direction_4x4_c(int16_t *y, int ystride,
const int16_t *in, int threshold, int dir); const int16_t *in, int threshold,
int dir);
void od_filter_dering_direction_8x8_c(int16_t *y, int ystride, void od_filter_dering_direction_8x8_c(int16_t *y, int ystride,
const int16_t *in, int threshold, int dir); const int16_t *in, int threshold,
int dir);
void od_filter_dering_orthogonal_4x4_c(int16_t *y, int ystride, void od_filter_dering_orthogonal_4x4_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold, const int16_t *in, const od_dering_in *x,
int dir); int xstride, int threshold, int dir);
void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride, void od_filter_dering_orthogonal_8x8_c(int16_t *y, int ystride,
const int16_t *in, const od_dering_in *x, int xstride, int threshold, const int16_t *in, const od_dering_in *x,
int dir); int xstride, int threshold, int dir);
#endif #endif

View File

@@ -37,346 +37,516 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/
year=2005 year=2005
}*/ }*/
uint32_t OD_DIVU_SMALL_CONSTS[OD_DIVU_DMAX][2] = { uint32_t OD_DIVU_SMALL_CONSTS[OD_DIVU_DMAX][2] = {
{0xFFFFFFFF, 0xFFFFFFFF}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xAAAAAAAB, 0}, { 0xFFFFFFFF, 0xFFFFFFFF }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xFFFFFFFF, 0xFFFFFFFF}, {0xCCCCCCCD, 0}, {0xAAAAAAAB, 0}, { 0xAAAAAAAB, 0 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0x92492492, 0x92492492}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xE38E38E4, 0}, { 0xCCCCCCCD, 0 }, { 0xAAAAAAAB, 0 },
{0xCCCCCCCD, 0}, {0xBA2E8BA3, 0}, {0xAAAAAAAB, 0}, { 0x92492492, 0x92492492 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0x9D89D89E, 0}, {0x92492492, 0x92492492}, {0x88888889, 0}, { 0xE38E38E4, 0 }, { 0xCCCCCCCD, 0 },
{0xFFFFFFFF, 0xFFFFFFFF}, {0xF0F0F0F1, 0}, {0xE38E38E4, 0}, { 0xBA2E8BA3, 0 }, { 0xAAAAAAAB, 0 },
{0xD79435E5, 0xD79435E5}, {0xCCCCCCCD, 0}, {0xC30C30C3, 0xC30C30C3}, { 0x9D89D89E, 0 }, { 0x92492492, 0x92492492 },
{0xBA2E8BA3, 0}, {0xB21642C9, 0}, {0xAAAAAAAB, 0}, { 0x88888889, 0 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xA3D70A3E, 0}, {0x9D89D89E, 0}, {0x97B425ED, 0x97B425ED}, { 0xF0F0F0F1, 0 }, { 0xE38E38E4, 0 },
{0x92492492, 0x92492492}, {0x8D3DCB09, 0}, {0x88888889, 0}, { 0xD79435E5, 0xD79435E5 }, { 0xCCCCCCCD, 0 },
{0x84210842, 0x84210842}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xF83E0F84, 0}, { 0xC30C30C3, 0xC30C30C3 }, { 0xBA2E8BA3, 0 },
{0xF0F0F0F1, 0}, {0xEA0EA0EA, 0xEA0EA0EA}, {0xE38E38E4, 0}, { 0xB21642C9, 0 }, { 0xAAAAAAAB, 0 },
{0xDD67C8A6, 0xDD67C8A6}, {0xD79435E5, 0xD79435E5}, {0xD20D20D2, 0xD20D20D2}, { 0xA3D70A3E, 0 }, { 0x9D89D89E, 0 },
{0xCCCCCCCD, 0}, {0xC7CE0C7D, 0}, {0xC30C30C3, 0xC30C30C3}, { 0x97B425ED, 0x97B425ED }, { 0x92492492, 0x92492492 },
{0xBE82FA0C, 0}, {0xBA2E8BA3, 0}, {0xB60B60B6, 0xB60B60B6}, { 0x8D3DCB09, 0 }, { 0x88888889, 0 },
{0xB21642C9, 0}, {0xAE4C415D, 0}, {0xAAAAAAAB, 0}, { 0x84210842, 0x84210842 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xA72F053A, 0}, {0xA3D70A3E, 0}, {0xA0A0A0A1, 0}, { 0xF83E0F84, 0 }, { 0xF0F0F0F1, 0 },
{0x9D89D89E, 0}, {0x9A90E7D9, 0x9A90E7D9}, {0x97B425ED, 0x97B425ED}, { 0xEA0EA0EA, 0xEA0EA0EA }, { 0xE38E38E4, 0 },
{0x94F2094F, 0x94F2094F}, {0x92492492, 0x92492492}, {0x8FB823EE, 0x8FB823EE}, { 0xDD67C8A6, 0xDD67C8A6 }, { 0xD79435E5, 0xD79435E5 },
{0x8D3DCB09, 0}, {0x8AD8F2FC, 0}, {0x88888889, 0}, { 0xD20D20D2, 0xD20D20D2 }, { 0xCCCCCCCD, 0 },
{0x864B8A7E, 0}, {0x84210842, 0x84210842}, {0x82082082, 0x82082082}, { 0xC7CE0C7D, 0 }, { 0xC30C30C3, 0xC30C30C3 },
{0xFFFFFFFF, 0xFFFFFFFF}, {0xFC0FC0FD, 0}, {0xF83E0F84, 0}, { 0xBE82FA0C, 0 }, { 0xBA2E8BA3, 0 },
{0xF4898D60, 0}, {0xF0F0F0F1, 0}, {0xED7303B6, 0}, { 0xB60B60B6, 0xB60B60B6 }, { 0xB21642C9, 0 },
{0xEA0EA0EA, 0xEA0EA0EA}, {0xE6C2B449, 0}, {0xE38E38E4, 0}, { 0xAE4C415D, 0 }, { 0xAAAAAAAB, 0 },
{0xE070381C, 0xE070381C}, {0xDD67C8A6, 0xDD67C8A6}, {0xDA740DA8, 0}, { 0xA72F053A, 0 }, { 0xA3D70A3E, 0 },
{0xD79435E5, 0xD79435E5}, {0xD4C77B04, 0}, {0xD20D20D2, 0xD20D20D2}, { 0xA0A0A0A1, 0 }, { 0x9D89D89E, 0 },
{0xCF6474A9, 0}, {0xCCCCCCCD, 0}, {0xCA4587E7, 0}, { 0x9A90E7D9, 0x9A90E7D9 }, { 0x97B425ED, 0x97B425ED },
{0xC7CE0C7D, 0}, {0xC565C87C, 0}, {0xC30C30C3, 0xC30C30C3}, { 0x94F2094F, 0x94F2094F }, { 0x92492492, 0x92492492 },
{0xC0C0C0C1, 0}, {0xBE82FA0C, 0}, {0xBC52640C, 0}, { 0x8FB823EE, 0x8FB823EE }, { 0x8D3DCB09, 0 },
{0xBA2E8BA3, 0}, {0xB81702E1, 0}, {0xB60B60B6, 0xB60B60B6}, { 0x8AD8F2FC, 0 }, { 0x88888889, 0 },
{0xB40B40B4, 0xB40B40B4}, {0xB21642C9, 0}, {0xB02C0B03, 0}, { 0x864B8A7E, 0 }, { 0x84210842, 0x84210842 },
{0xAE4C415D, 0}, {0xAC769184, 0xAC769184}, {0xAAAAAAAB, 0}, { 0x82082082, 0x82082082 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xA8E83F57, 0xA8E83F57}, {0xA72F053A, 0}, {0xA57EB503, 0}, { 0xFC0FC0FD, 0 }, { 0xF83E0F84, 0 },
{0xA3D70A3E, 0}, {0xA237C32B, 0xA237C32B}, {0xA0A0A0A1, 0}, { 0xF4898D60, 0 }, { 0xF0F0F0F1, 0 },
{0x9F1165E7, 0x9F1165E7}, {0x9D89D89E, 0}, {0x9C09C09C, 0x9C09C09C}, { 0xED7303B6, 0 }, { 0xEA0EA0EA, 0xEA0EA0EA },
{0x9A90E7D9, 0x9A90E7D9}, {0x991F1A51, 0x991F1A51}, {0x97B425ED, 0x97B425ED}, { 0xE6C2B449, 0 }, { 0xE38E38E4, 0 },
{0x964FDA6C, 0x964FDA6C}, {0x94F2094F, 0x94F2094F}, {0x939A85C4, 0x939A85C4}, { 0xE070381C, 0xE070381C }, { 0xDD67C8A6, 0xDD67C8A6 },
{0x92492492, 0x92492492}, {0x90FDBC09, 0x90FDBC09}, {0x8FB823EE, 0x8FB823EE}, { 0xDA740DA8, 0 }, { 0xD79435E5, 0xD79435E5 },
{0x8E78356D, 0x8E78356D}, {0x8D3DCB09, 0}, {0x8C08C08C, 0x8C08C08C}, { 0xD4C77B04, 0 }, { 0xD20D20D2, 0xD20D20D2 },
{0x8AD8F2FC, 0}, {0x89AE408A, 0}, {0x88888889, 0}, { 0xCF6474A9, 0 }, { 0xCCCCCCCD, 0 },
{0x8767AB5F, 0x8767AB5F}, {0x864B8A7E, 0}, {0x85340853, 0x85340853}, { 0xCA4587E7, 0 }, { 0xC7CE0C7D, 0 },
{0x84210842, 0x84210842}, {0x83126E98, 0}, {0x82082082, 0x82082082}, { 0xC565C87C, 0 }, { 0xC30C30C3, 0xC30C30C3 },
{0x81020408, 0x81020408}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xFE03F810, 0}, { 0xC0C0C0C1, 0 }, { 0xBE82FA0C, 0 },
{0xFC0FC0FD, 0}, {0xFA232CF3, 0}, {0xF83E0F84, 0}, { 0xBC52640C, 0 }, { 0xBA2E8BA3, 0 },
{0xF6603D99, 0}, {0xF4898D60, 0}, {0xF2B9D649, 0}, { 0xB81702E1, 0 }, { 0xB60B60B6, 0xB60B60B6 },
{0xF0F0F0F1, 0}, {0xEF2EB720, 0}, {0xED7303B6, 0}, { 0xB40B40B4, 0xB40B40B4 }, { 0xB21642C9, 0 },
{0xEBBDB2A6, 0}, {0xEA0EA0EA, 0xEA0EA0EA}, {0xE865AC7C, 0}, { 0xB02C0B03, 0 }, { 0xAE4C415D, 0 },
{0xE6C2B449, 0}, {0xE525982B, 0}, {0xE38E38E4, 0}, { 0xAC769184, 0xAC769184 }, { 0xAAAAAAAB, 0 },
{0xE1FC780F, 0}, {0xE070381C, 0xE070381C}, {0xDEE95C4D, 0}, { 0xA8E83F57, 0xA8E83F57 }, { 0xA72F053A, 0 },
{0xDD67C8A6, 0xDD67C8A6}, {0xDBEB61EF, 0}, {0xDA740DA8, 0}, { 0xA57EB503, 0 }, { 0xA3D70A3E, 0 },
{0xD901B204, 0}, {0xD79435E5, 0xD79435E5}, {0xD62B80D7, 0}, { 0xA237C32B, 0xA237C32B }, { 0xA0A0A0A1, 0 },
{0xD4C77B04, 0}, {0xD3680D37, 0}, {0xD20D20D2, 0xD20D20D2}, { 0x9F1165E7, 0x9F1165E7 }, { 0x9D89D89E, 0 },
{0xD0B69FCC, 0}, {0xCF6474A9, 0}, {0xCE168A77, 0xCE168A77}, { 0x9C09C09C, 0x9C09C09C }, { 0x9A90E7D9, 0x9A90E7D9 },
{0xCCCCCCCD, 0}, {0xCB8727C1, 0}, {0xCA4587E7, 0}, { 0x991F1A51, 0x991F1A51 }, { 0x97B425ED, 0x97B425ED },
{0xC907DA4F, 0}, {0xC7CE0C7D, 0}, {0xC6980C6A, 0}, { 0x964FDA6C, 0x964FDA6C }, { 0x94F2094F, 0x94F2094F },
{0xC565C87C, 0}, {0xC4372F86, 0}, {0xC30C30C3, 0xC30C30C3}, { 0x939A85C4, 0x939A85C4 }, { 0x92492492, 0x92492492 },
{0xC1E4BBD6, 0}, {0xC0C0C0C1, 0}, {0xBFA02FE8, 0xBFA02FE8}, { 0x90FDBC09, 0x90FDBC09 }, { 0x8FB823EE, 0x8FB823EE },
{0xBE82FA0C, 0}, {0xBD691047, 0xBD691047}, {0xBC52640C, 0}, { 0x8E78356D, 0x8E78356D }, { 0x8D3DCB09, 0 },
{0xBB3EE722, 0}, {0xBA2E8BA3, 0}, {0xB92143FA, 0xB92143FA}, { 0x8C08C08C, 0x8C08C08C }, { 0x8AD8F2FC, 0 },
{0xB81702E1, 0}, {0xB70FBB5A, 0xB70FBB5A}, {0xB60B60B6, 0xB60B60B6}, { 0x89AE408A, 0 }, { 0x88888889, 0 },
{0xB509E68B, 0}, {0xB40B40B4, 0xB40B40B4}, {0xB30F6353, 0}, { 0x8767AB5F, 0x8767AB5F }, { 0x864B8A7E, 0 },
{0xB21642C9, 0}, {0xB11FD3B8, 0xB11FD3B8}, {0xB02C0B03, 0}, { 0x85340853, 0x85340853 }, { 0x84210842, 0x84210842 },
{0xAF3ADDC7, 0}, {0xAE4C415D, 0}, {0xAD602B58, 0xAD602B58}, { 0x83126E98, 0 }, { 0x82082082, 0x82082082 },
{0xAC769184, 0xAC769184}, {0xAB8F69E3, 0}, {0xAAAAAAAB, 0}, { 0x81020408, 0x81020408 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xA9C84A48, 0}, {0xA8E83F57, 0xA8E83F57}, {0xA80A80A8, 0xA80A80A8}, { 0xFE03F810, 0 }, { 0xFC0FC0FD, 0 },
{0xA72F053A, 0}, {0xA655C439, 0xA655C439}, {0xA57EB503, 0}, { 0xFA232CF3, 0 }, { 0xF83E0F84, 0 },
{0xA4A9CF1E, 0}, {0xA3D70A3E, 0}, {0xA3065E40, 0}, { 0xF6603D99, 0 }, { 0xF4898D60, 0 },
{0xA237C32B, 0xA237C32B}, {0xA16B312F, 0}, {0xA0A0A0A1, 0}, { 0xF2B9D649, 0 }, { 0xF0F0F0F1, 0 },
{0x9FD809FE, 0}, {0x9F1165E7, 0x9F1165E7}, {0x9E4CAD24, 0}, { 0xEF2EB720, 0 }, { 0xED7303B6, 0 },
{0x9D89D89E, 0}, {0x9CC8E161, 0}, {0x9C09C09C, 0x9C09C09C}, { 0xEBBDB2A6, 0 }, { 0xEA0EA0EA, 0xEA0EA0EA },
{0x9B4C6F9F, 0}, {0x9A90E7D9, 0x9A90E7D9}, {0x99D722DB, 0}, { 0xE865AC7C, 0 }, { 0xE6C2B449, 0 },
{0x991F1A51, 0x991F1A51}, {0x9868C80A, 0}, {0x97B425ED, 0x97B425ED}, { 0xE525982B, 0 }, { 0xE38E38E4, 0 },
{0x97012E02, 0x97012E02}, {0x964FDA6C, 0x964FDA6C}, {0x95A02568, 0x95A02568}, { 0xE1FC780F, 0 }, { 0xE070381C, 0xE070381C },
{0x94F2094F, 0x94F2094F}, {0x94458094, 0x94458094}, {0x939A85C4, 0x939A85C4}, { 0xDEE95C4D, 0 }, { 0xDD67C8A6, 0xDD67C8A6 },
{0x92F11384, 0x92F11384}, {0x92492492, 0x92492492}, {0x91A2B3C5, 0}, { 0xDBEB61EF, 0 }, { 0xDA740DA8, 0 },
{0x90FDBC09, 0x90FDBC09}, {0x905A3863, 0x905A3863}, {0x8FB823EE, 0x8FB823EE}, { 0xD901B204, 0 }, { 0xD79435E5, 0xD79435E5 },
{0x8F1779DA, 0}, {0x8E78356D, 0x8E78356D}, {0x8DDA5202, 0x8DDA5202}, { 0xD62B80D7, 0 }, { 0xD4C77B04, 0 },
{0x8D3DCB09, 0}, {0x8CA29C04, 0x8CA29C04}, {0x8C08C08C, 0x8C08C08C}, { 0xD3680D37, 0 }, { 0xD20D20D2, 0xD20D20D2 },
{0x8B70344A, 0x8B70344A}, {0x8AD8F2FC, 0}, {0x8A42F870, 0x8A42F870}, { 0xD0B69FCC, 0 }, { 0xCF6474A9, 0 },
{0x89AE408A, 0}, {0x891AC73B, 0}, {0x88888889, 0}, { 0xCE168A77, 0xCE168A77 }, { 0xCCCCCCCD, 0 },
{0x87F78088, 0}, {0x8767AB5F, 0x8767AB5F}, {0x86D90545, 0}, { 0xCB8727C1, 0 }, { 0xCA4587E7, 0 },
{0x864B8A7E, 0}, {0x85BF3761, 0x85BF3761}, {0x85340853, 0x85340853}, { 0xC907DA4F, 0 }, { 0xC7CE0C7D, 0 },
{0x84A9F9C8, 0x84A9F9C8}, {0x84210842, 0x84210842}, {0x83993052, 0x83993052}, { 0xC6980C6A, 0 }, { 0xC565C87C, 0 },
{0x83126E98, 0}, {0x828CBFBF, 0}, {0x82082082, 0x82082082}, { 0xC4372F86, 0 }, { 0xC30C30C3, 0xC30C30C3 },
{0x81848DA9, 0}, {0x81020408, 0x81020408}, {0x80808081, 0}, { 0xC1E4BBD6, 0 }, { 0xC0C0C0C1, 0 },
{0xFFFFFFFF, 0xFFFFFFFF}, {0xFF00FF01, 0}, {0xFE03F810, 0}, { 0xBFA02FE8, 0xBFA02FE8 }, { 0xBE82FA0C, 0 },
{0xFD08E551, 0}, {0xFC0FC0FD, 0}, {0xFB188566, 0}, { 0xBD691047, 0xBD691047 }, { 0xBC52640C, 0 },
{0xFA232CF3, 0}, {0xF92FB222, 0}, {0xF83E0F84, 0}, { 0xBB3EE722, 0 }, { 0xBA2E8BA3, 0 },
{0xF74E3FC3, 0}, {0xF6603D99, 0}, {0xF57403D6, 0}, { 0xB92143FA, 0xB92143FA }, { 0xB81702E1, 0 },
{0xF4898D60, 0}, {0xF3A0D52D, 0}, {0xF2B9D649, 0}, { 0xB70FBB5A, 0xB70FBB5A }, { 0xB60B60B6, 0xB60B60B6 },
{0xF1D48BCF, 0}, {0xF0F0F0F1, 0}, {0xF00F00F0, 0xF00F00F0}, { 0xB509E68B, 0 }, { 0xB40B40B4, 0xB40B40B4 },
{0xEF2EB720, 0}, {0xEE500EE5, 0xEE500EE5}, {0xED7303B6, 0}, { 0xB30F6353, 0 }, { 0xB21642C9, 0 },
{0xEC979119, 0}, {0xEBBDB2A6, 0}, {0xEAE56404, 0}, { 0xB11FD3B8, 0xB11FD3B8 }, { 0xB02C0B03, 0 },
{0xEA0EA0EA, 0xEA0EA0EA}, {0xE9396520, 0}, {0xE865AC7C, 0}, { 0xAF3ADDC7, 0 }, { 0xAE4C415D, 0 },
{0xE79372E3, 0}, {0xE6C2B449, 0}, {0xE5F36CB0, 0xE5F36CB0}, { 0xAD602B58, 0xAD602B58 }, { 0xAC769184, 0xAC769184 },
{0xE525982B, 0}, {0xE45932D8, 0}, {0xE38E38E4, 0}, { 0xAB8F69E3, 0 }, { 0xAAAAAAAB, 0 },
{0xE2C4A689, 0}, {0xE1FC780F, 0}, {0xE135A9CA, 0}, { 0xA9C84A48, 0 }, { 0xA8E83F57, 0xA8E83F57 },
{0xE070381C, 0xE070381C}, {0xDFAC1F75, 0}, {0xDEE95C4D, 0}, { 0xA80A80A8, 0xA80A80A8 }, { 0xA72F053A, 0 },
{0xDE27EB2D, 0}, {0xDD67C8A6, 0xDD67C8A6}, {0xDCA8F159, 0}, { 0xA655C439, 0xA655C439 }, { 0xA57EB503, 0 },
{0xDBEB61EF, 0}, {0xDB2F171E, 0}, {0xDA740DA8, 0}, { 0xA4A9CF1E, 0 }, { 0xA3D70A3E, 0 },
{0xD9BA4257, 0}, {0xD901B204, 0}, {0xD84A598F, 0}, { 0xA3065E40, 0 }, { 0xA237C32B, 0xA237C32B },
{0xD79435E5, 0xD79435E5}, {0xD6DF43FD, 0}, {0xD62B80D7, 0}, { 0xA16B312F, 0 }, { 0xA0A0A0A1, 0 },
{0xD578E97D, 0}, {0xD4C77B04, 0}, {0xD417328A, 0}, { 0x9FD809FE, 0 }, { 0x9F1165E7, 0x9F1165E7 },
{0xD3680D37, 0}, {0xD2BA083C, 0}, {0xD20D20D2, 0xD20D20D2}, { 0x9E4CAD24, 0 }, { 0x9D89D89E, 0 },
{0xD161543E, 0xD161543E}, {0xD0B69FCC, 0}, {0xD00D00D0, 0xD00D00D0}, { 0x9CC8E161, 0 }, { 0x9C09C09C, 0x9C09C09C },
{0xCF6474A9, 0}, {0xCEBCF8BC, 0}, {0xCE168A77, 0xCE168A77}, { 0x9B4C6F9F, 0 }, { 0x9A90E7D9, 0x9A90E7D9 },
{0xCD712753, 0}, {0xCCCCCCCD, 0}, {0xCC29786D, 0}, { 0x99D722DB, 0 }, { 0x991F1A51, 0x991F1A51 },
{0xCB8727C1, 0}, {0xCAE5D85F, 0xCAE5D85F}, {0xCA4587E7, 0}, { 0x9868C80A, 0 }, { 0x97B425ED, 0x97B425ED },
{0xC9A633FD, 0}, {0xC907DA4F, 0}, {0xC86A7890, 0xC86A7890}, { 0x97012E02, 0x97012E02 }, { 0x964FDA6C, 0x964FDA6C },
{0xC7CE0C7D, 0}, {0xC73293D8, 0}, {0xC6980C6A, 0}, { 0x95A02568, 0x95A02568 }, { 0x94F2094F, 0x94F2094F },
{0xC5FE7403, 0xC5FE7403}, {0xC565C87C, 0}, {0xC4CE07B0, 0xC4CE07B0}, { 0x94458094, 0x94458094 }, { 0x939A85C4, 0x939A85C4 },
{0xC4372F86, 0}, {0xC3A13DE6, 0xC3A13DE6}, {0xC30C30C3, 0xC30C30C3}, { 0x92F11384, 0x92F11384 }, { 0x92492492, 0x92492492 },
{0xC2780614, 0}, {0xC1E4BBD6, 0}, {0xC152500C, 0xC152500C}, { 0x91A2B3C5, 0 }, { 0x90FDBC09, 0x90FDBC09 },
{0xC0C0C0C1, 0}, {0xC0300C03, 0xC0300C03}, {0xBFA02FE8, 0xBFA02FE8}, { 0x905A3863, 0x905A3863 }, { 0x8FB823EE, 0x8FB823EE },
{0xBF112A8B, 0}, {0xBE82FA0C, 0}, {0xBDF59C92, 0}, { 0x8F1779DA, 0 }, { 0x8E78356D, 0x8E78356D },
{0xBD691047, 0xBD691047}, {0xBCDD535E, 0}, {0xBC52640C, 0}, { 0x8DDA5202, 0x8DDA5202 }, { 0x8D3DCB09, 0 },
{0xBBC8408D, 0}, {0xBB3EE722, 0}, {0xBAB65610, 0xBAB65610}, { 0x8CA29C04, 0x8CA29C04 }, { 0x8C08C08C, 0x8C08C08C },
{0xBA2E8BA3, 0}, {0xB9A7862A, 0xB9A7862A}, {0xB92143FA, 0xB92143FA}, { 0x8B70344A, 0x8B70344A }, { 0x8AD8F2FC, 0 },
{0xB89BC36D, 0}, {0xB81702E1, 0}, {0xB79300B8, 0}, { 0x8A42F870, 0x8A42F870 }, { 0x89AE408A, 0 },
{0xB70FBB5A, 0xB70FBB5A}, {0xB68D3134, 0xB68D3134}, {0xB60B60B6, 0xB60B60B6}, { 0x891AC73B, 0 }, { 0x88888889, 0 },
{0xB58A4855, 0xB58A4855}, {0xB509E68B, 0}, {0xB48A39D4, 0xB48A39D4}, { 0x87F78088, 0 }, { 0x8767AB5F, 0x8767AB5F },
{0xB40B40B4, 0xB40B40B4}, {0xB38CF9B0, 0xB38CF9B0}, {0xB30F6353, 0}, { 0x86D90545, 0 }, { 0x864B8A7E, 0 },
{0xB2927C2A, 0}, {0xB21642C9, 0}, {0xB19AB5C5, 0}, { 0x85BF3761, 0x85BF3761 }, { 0x85340853, 0x85340853 },
{0xB11FD3B8, 0xB11FD3B8}, {0xB0A59B42, 0}, {0xB02C0B03, 0}, { 0x84A9F9C8, 0x84A9F9C8 }, { 0x84210842, 0x84210842 },
{0xAFB321A1, 0xAFB321A1}, {0xAF3ADDC7, 0}, {0xAEC33E20, 0}, { 0x83993052, 0x83993052 }, { 0x83126E98, 0 },
{0xAE4C415D, 0}, {0xADD5E632, 0xADD5E632}, {0xAD602B58, 0xAD602B58}, { 0x828CBFBF, 0 }, { 0x82082082, 0x82082082 },
{0xACEB0F89, 0xACEB0F89}, {0xAC769184, 0xAC769184}, {0xAC02B00B, 0}, { 0x81848DA9, 0 }, { 0x81020408, 0x81020408 },
{0xAB8F69E3, 0}, {0xAB1CBDD4, 0}, {0xAAAAAAAB, 0}, { 0x80808081, 0 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xAA392F36, 0}, {0xA9C84A48, 0}, {0xA957FAB5, 0xA957FAB5}, { 0xFF00FF01, 0 }, { 0xFE03F810, 0 },
{0xA8E83F57, 0xA8E83F57}, {0xA8791709, 0}, {0xA80A80A8, 0xA80A80A8}, { 0xFD08E551, 0 }, { 0xFC0FC0FD, 0 },
{0xA79C7B17, 0}, {0xA72F053A, 0}, {0xA6C21DF7, 0}, { 0xFB188566, 0 }, { 0xFA232CF3, 0 },
{0xA655C439, 0xA655C439}, {0xA5E9F6ED, 0xA5E9F6ED}, {0xA57EB503, 0}, { 0xF92FB222, 0 }, { 0xF83E0F84, 0 },
{0xA513FD6C, 0}, {0xA4A9CF1E, 0}, {0xA4402910, 0xA4402910}, { 0xF74E3FC3, 0 }, { 0xF6603D99, 0 },
{0xA3D70A3E, 0}, {0xA36E71A3, 0}, {0xA3065E40, 0}, { 0xF57403D6, 0 }, { 0xF4898D60, 0 },
{0xA29ECF16, 0xA29ECF16}, {0xA237C32B, 0xA237C32B}, {0xA1D13986, 0}, { 0xF3A0D52D, 0 }, { 0xF2B9D649, 0 },
{0xA16B312F, 0}, {0xA105A933, 0}, {0xA0A0A0A1, 0}, { 0xF1D48BCF, 0 }, { 0xF0F0F0F1, 0 },
{0xA03C1689, 0}, {0x9FD809FE, 0}, {0x9F747A15, 0x9F747A15}, { 0xF00F00F0, 0xF00F00F0 }, { 0xEF2EB720, 0 },
{0x9F1165E7, 0x9F1165E7}, {0x9EAECC8D, 0x9EAECC8D}, {0x9E4CAD24, 0}, { 0xEE500EE5, 0xEE500EE5 }, { 0xED7303B6, 0 },
{0x9DEB06C9, 0x9DEB06C9}, {0x9D89D89E, 0}, {0x9D2921C4, 0}, { 0xEC979119, 0 }, { 0xEBBDB2A6, 0 },
{0x9CC8E161, 0}, {0x9C69169B, 0x9C69169B}, {0x9C09C09C, 0x9C09C09C}, { 0xEAE56404, 0 }, { 0xEA0EA0EA, 0xEA0EA0EA },
{0x9BAADE8E, 0x9BAADE8E}, {0x9B4C6F9F, 0}, {0x9AEE72FD, 0}, { 0xE9396520, 0 }, { 0xE865AC7C, 0 },
{0x9A90E7D9, 0x9A90E7D9}, {0x9A33CD67, 0x9A33CD67}, {0x99D722DB, 0}, { 0xE79372E3, 0 }, { 0xE6C2B449, 0 },
{0x997AE76B, 0x997AE76B}, {0x991F1A51, 0x991F1A51}, {0x98C3BAC7, 0x98C3BAC7}, { 0xE5F36CB0, 0xE5F36CB0 }, { 0xE525982B, 0 },
{0x9868C80A, 0}, {0x980E4156, 0x980E4156}, {0x97B425ED, 0x97B425ED}, { 0xE45932D8, 0 }, { 0xE38E38E4, 0 },
{0x975A7510, 0}, {0x97012E02, 0x97012E02}, {0x96A8500A, 0}, { 0xE2C4A689, 0 }, { 0xE1FC780F, 0 },
{0x964FDA6C, 0x964FDA6C}, {0x95F7CC73, 0}, {0x95A02568, 0x95A02568}, { 0xE135A9CA, 0 }, { 0xE070381C, 0xE070381C },
{0x9548E498, 0}, {0x94F2094F, 0x94F2094F}, {0x949B92DE, 0}, { 0xDFAC1F75, 0 }, { 0xDEE95C4D, 0 },
{0x94458094, 0x94458094}, {0x93EFD1C5, 0x93EFD1C5}, {0x939A85C4, 0x939A85C4}, { 0xDE27EB2D, 0 }, { 0xDD67C8A6, 0xDD67C8A6 },
{0x93459BE7, 0}, {0x92F11384, 0x92F11384}, {0x929CEBF5, 0}, { 0xDCA8F159, 0 }, { 0xDBEB61EF, 0 },
{0x92492492, 0x92492492}, {0x91F5BCB9, 0}, {0x91A2B3C5, 0}, { 0xDB2F171E, 0 }, { 0xDA740DA8, 0 },
{0x91500915, 0x91500915}, {0x90FDBC09, 0x90FDBC09}, {0x90ABCC02, 0x90ABCC02}, { 0xD9BA4257, 0 }, { 0xD901B204, 0 },
{0x905A3863, 0x905A3863}, {0x90090090, 0x90090090}, {0x8FB823EE, 0x8FB823EE}, { 0xD84A598F, 0 }, { 0xD79435E5, 0xD79435E5 },
{0x8F67A1E4, 0}, {0x8F1779DA, 0}, {0x8EC7AB3A, 0}, { 0xD6DF43FD, 0 }, { 0xD62B80D7, 0 },
{0x8E78356D, 0x8E78356D}, {0x8E2917E1, 0}, {0x8DDA5202, 0x8DDA5202}, { 0xD578E97D, 0 }, { 0xD4C77B04, 0 },
{0x8D8BE340, 0}, {0x8D3DCB09, 0}, {0x8CF008CF, 0x8CF008CF}, { 0xD417328A, 0 }, { 0xD3680D37, 0 },
{0x8CA29C04, 0x8CA29C04}, {0x8C55841D, 0}, {0x8C08C08C, 0x8C08C08C}, { 0xD2BA083C, 0 }, { 0xD20D20D2, 0xD20D20D2 },
{0x8BBC50C9, 0}, {0x8B70344A, 0x8B70344A}, {0x8B246A88, 0}, { 0xD161543E, 0xD161543E }, { 0xD0B69FCC, 0 },
{0x8AD8F2FC, 0}, {0x8A8DCD20, 0}, {0x8A42F870, 0x8A42F870}, { 0xD00D00D0, 0xD00D00D0 }, { 0xCF6474A9, 0 },
{0x89F8746A, 0}, {0x89AE408A, 0}, {0x89645C4F, 0x89645C4F}, { 0xCEBCF8BC, 0 }, { 0xCE168A77, 0xCE168A77 },
{0x891AC73B, 0}, {0x88D180CD, 0x88D180CD}, {0x88888889, 0}, { 0xCD712753, 0 }, { 0xCCCCCCCD, 0 },
{0x883FDDF0, 0x883FDDF0}, {0x87F78088, 0}, {0x87AF6FD6, 0}, { 0xCC29786D, 0 }, { 0xCB8727C1, 0 },
{0x8767AB5F, 0x8767AB5F}, {0x872032AC, 0x872032AC}, {0x86D90545, 0}, { 0xCAE5D85F, 0xCAE5D85F }, { 0xCA4587E7, 0 },
{0x869222B2, 0}, {0x864B8A7E, 0}, {0x86053C34, 0x86053C34}, { 0xC9A633FD, 0 }, { 0xC907DA4F, 0 },
{0x85BF3761, 0x85BF3761}, {0x85797B91, 0x85797B91}, {0x85340853, 0x85340853}, { 0xC86A7890, 0xC86A7890 }, { 0xC7CE0C7D, 0 },
{0x84EEDD36, 0}, {0x84A9F9C8, 0x84A9F9C8}, {0x84655D9C, 0}, { 0xC73293D8, 0 }, { 0xC6980C6A, 0 },
{0x84210842, 0x84210842}, {0x83DCF94E, 0}, {0x83993052, 0x83993052}, { 0xC5FE7403, 0xC5FE7403 }, { 0xC565C87C, 0 },
{0x8355ACE4, 0}, {0x83126E98, 0}, {0x82CF7504, 0}, { 0xC4CE07B0, 0xC4CE07B0 }, { 0xC4372F86, 0 },
{0x828CBFBF, 0}, {0x824A4E61, 0}, {0x82082082, 0x82082082}, { 0xC3A13DE6, 0xC3A13DE6 }, { 0xC30C30C3, 0xC30C30C3 },
{0x81C635BC, 0x81C635BC}, {0x81848DA9, 0}, {0x814327E4, 0}, { 0xC2780614, 0 }, { 0xC1E4BBD6, 0 },
{0x81020408, 0x81020408}, {0x80C121B3, 0}, {0x80808081, 0}, { 0xC152500C, 0xC152500C }, { 0xC0C0C0C1, 0 },
{0x80402010, 0x80402010}, {0xFFFFFFFF, 0xFFFFFFFF}, {0xFF803FE1, 0}, { 0xC0300C03, 0xC0300C03 }, { 0xBFA02FE8, 0xBFA02FE8 },
{0xFF00FF01, 0}, {0xFE823CA6, 0}, {0xFE03F810, 0}, { 0xBF112A8B, 0 }, { 0xBE82FA0C, 0 },
{0xFD863087, 0}, {0xFD08E551, 0}, {0xFC8C15B5, 0}, { 0xBDF59C92, 0 }, { 0xBD691047, 0xBD691047 },
{0xFC0FC0FD, 0}, {0xFB93E673, 0}, {0xFB188566, 0}, { 0xBCDD535E, 0 }, { 0xBC52640C, 0 },
{0xFA9D9D20, 0}, {0xFA232CF3, 0}, {0xF9A9342D, 0}, { 0xBBC8408D, 0 }, { 0xBB3EE722, 0 },
{0xF92FB222, 0}, {0xF8B6A622, 0xF8B6A622}, {0xF83E0F84, 0}, { 0xBAB65610, 0xBAB65610 }, { 0xBA2E8BA3, 0 },
{0xF7C5ED9D, 0}, {0xF74E3FC3, 0}, {0xF6D7054E, 0}, { 0xB9A7862A, 0xB9A7862A }, { 0xB92143FA, 0xB92143FA },
{0xF6603D99, 0}, {0xF5E9E7FD, 0}, {0xF57403D6, 0}, { 0xB89BC36D, 0 }, { 0xB81702E1, 0 },
{0xF4FE9083, 0}, {0xF4898D60, 0}, {0xF414F9CE, 0}, { 0xB79300B8, 0 }, { 0xB70FBB5A, 0xB70FBB5A },
{0xF3A0D52D, 0}, {0xF32D1EE0, 0}, {0xF2B9D649, 0}, { 0xB68D3134, 0xB68D3134 }, { 0xB60B60B6, 0xB60B60B6 },
{0xF246FACC, 0}, {0xF1D48BCF, 0}, {0xF16288B9, 0}, { 0xB58A4855, 0xB58A4855 }, { 0xB509E68B, 0 },
{0xF0F0F0F1, 0}, {0xF07FC3E0, 0xF07FC3E0}, {0xF00F00F0, 0xF00F00F0}, { 0xB48A39D4, 0xB48A39D4 }, { 0xB40B40B4, 0xB40B40B4 },
{0xEF9EA78C, 0}, {0xEF2EB720, 0}, {0xEEBF2F19, 0}, { 0xB38CF9B0, 0xB38CF9B0 }, { 0xB30F6353, 0 },
{0xEE500EE5, 0xEE500EE5}, {0xEDE155F4, 0}, {0xED7303B6, 0}, { 0xB2927C2A, 0 }, { 0xB21642C9, 0 },
{0xED05179C, 0xED05179C}, {0xEC979119, 0}, {0xEC2A6FA0, 0xEC2A6FA0}, { 0xB19AB5C5, 0 }, { 0xB11FD3B8, 0xB11FD3B8 },
{0xEBBDB2A6, 0}, {0xEB5159A0, 0}, {0xEAE56404, 0}, { 0xB0A59B42, 0 }, { 0xB02C0B03, 0 },
{0xEA79D14A, 0}, {0xEA0EA0EA, 0xEA0EA0EA}, {0xE9A3D25E, 0xE9A3D25E}, { 0xAFB321A1, 0xAFB321A1 }, { 0xAF3ADDC7, 0 },
{0xE9396520, 0}, {0xE8CF58AB, 0}, {0xE865AC7C, 0}, { 0xAEC33E20, 0 }, { 0xAE4C415D, 0 },
{0xE7FC600F, 0}, {0xE79372E3, 0}, {0xE72AE476, 0}, { 0xADD5E632, 0xADD5E632 }, { 0xAD602B58, 0xAD602B58 },
{0xE6C2B449, 0}, {0xE65AE1DC, 0}, {0xE5F36CB0, 0xE5F36CB0}, { 0xACEB0F89, 0xACEB0F89 }, { 0xAC769184, 0xAC769184 },
{0xE58C544A, 0}, {0xE525982B, 0}, {0xE4BF37D9, 0}, { 0xAC02B00B, 0 }, { 0xAB8F69E3, 0 },
{0xE45932D8, 0}, {0xE3F388AF, 0}, {0xE38E38E4, 0}, { 0xAB1CBDD4, 0 }, { 0xAAAAAAAB, 0 },
{0xE32942FF, 0}, {0xE2C4A689, 0}, {0xE260630B, 0}, { 0xAA392F36, 0 }, { 0xA9C84A48, 0 },
{0xE1FC780F, 0}, {0xE198E520, 0}, {0xE135A9CA, 0}, { 0xA957FAB5, 0xA957FAB5 }, { 0xA8E83F57, 0xA8E83F57 },
{0xE0D2C59A, 0}, {0xE070381C, 0xE070381C}, {0xE00E00E0, 0xE00E00E0}, { 0xA8791709, 0 }, { 0xA80A80A8, 0xA80A80A8 },
{0xDFAC1F75, 0}, {0xDF4A9369, 0}, {0xDEE95C4D, 0}, { 0xA79C7B17, 0 }, { 0xA72F053A, 0 },
{0xDE8879B3, 0}, {0xDE27EB2D, 0}, {0xDDC7B04D, 0}, { 0xA6C21DF7, 0 }, { 0xA655C439, 0xA655C439 },
{0xDD67C8A6, 0xDD67C8A6}, {0xDD0833CE, 0}, {0xDCA8F159, 0}, { 0xA5E9F6ED, 0xA5E9F6ED }, { 0xA57EB503, 0 },
{0xDC4A00DD, 0}, {0xDBEB61EF, 0}, {0xDB8D1428, 0}, { 0xA513FD6C, 0 }, { 0xA4A9CF1E, 0 },
{0xDB2F171E, 0}, {0xDAD16A6B, 0}, {0xDA740DA8, 0}, { 0xA4402910, 0xA4402910 }, { 0xA3D70A3E, 0 },
{0xDA17006D, 0xDA17006D}, {0xD9BA4257, 0}, {0xD95DD300, 0}, { 0xA36E71A3, 0 }, { 0xA3065E40, 0 },
{0xD901B204, 0}, {0xD8A5DEFF, 0}, {0xD84A598F, 0}, { 0xA29ECF16, 0xA29ECF16 }, { 0xA237C32B, 0xA237C32B },
{0xD7EF2152, 0}, {0xD79435E5, 0xD79435E5}, {0xD73996E9, 0}, { 0xA1D13986, 0 }, { 0xA16B312F, 0 },
{0xD6DF43FD, 0}, {0xD6853CC1, 0}, {0xD62B80D7, 0}, { 0xA105A933, 0 }, { 0xA0A0A0A1, 0 },
{0xD5D20FDF, 0}, {0xD578E97D, 0}, {0xD5200D52, 0xD5200D52}, { 0xA03C1689, 0 }, { 0x9FD809FE, 0 },
{0xD4C77B04, 0}, {0xD46F3235, 0}, {0xD417328A, 0}, { 0x9F747A15, 0x9F747A15 }, { 0x9F1165E7, 0x9F1165E7 },
{0xD3BF7BA9, 0}, {0xD3680D37, 0}, {0xD310E6DB, 0}, { 0x9EAECC8D, 0x9EAECC8D }, { 0x9E4CAD24, 0 },
{0xD2BA083C, 0}, {0xD2637101, 0}, {0xD20D20D2, 0xD20D20D2}, { 0x9DEB06C9, 0x9DEB06C9 }, { 0x9D89D89E, 0 },
{0xD1B71759, 0}, {0xD161543E, 0xD161543E}, {0xD10BD72C, 0}, { 0x9D2921C4, 0 }, { 0x9CC8E161, 0 },
{0xD0B69FCC, 0}, {0xD061ADCA, 0}, {0xD00D00D0, 0xD00D00D0}, { 0x9C69169B, 0x9C69169B }, { 0x9C09C09C, 0x9C09C09C },
{0xCFB8988C, 0}, {0xCF6474A9, 0}, {0xCF1094D4, 0}, { 0x9BAADE8E, 0x9BAADE8E }, { 0x9B4C6F9F, 0 },
{0xCEBCF8BC, 0}, {0xCE69A00D, 0}, {0xCE168A77, 0xCE168A77}, { 0x9AEE72FD, 0 }, { 0x9A90E7D9, 0x9A90E7D9 },
{0xCDC3B7A9, 0xCDC3B7A9}, {0xCD712753, 0}, {0xCD1ED924, 0}, { 0x9A33CD67, 0x9A33CD67 }, { 0x99D722DB, 0 },
{0xCCCCCCCD, 0}, {0xCC7B0200, 0}, {0xCC29786D, 0}, { 0x997AE76B, 0x997AE76B }, { 0x991F1A51, 0x991F1A51 },
{0xCBD82FC7, 0}, {0xCB8727C1, 0}, {0xCB36600D, 0}, { 0x98C3BAC7, 0x98C3BAC7 }, { 0x9868C80A, 0 },
{0xCAE5D85F, 0xCAE5D85F}, {0xCA95906C, 0}, {0xCA4587E7, 0}, { 0x980E4156, 0x980E4156 }, { 0x97B425ED, 0x97B425ED },
{0xC9F5BE86, 0}, {0xC9A633FD, 0}, {0xC956E803, 0xC956E803}, { 0x975A7510, 0 }, { 0x97012E02, 0x97012E02 },
{0xC907DA4F, 0}, {0xC8B90A96, 0}, {0xC86A7890, 0xC86A7890}, { 0x96A8500A, 0 }, { 0x964FDA6C, 0x964FDA6C },
{0xC81C23F5, 0xC81C23F5}, {0xC7CE0C7D, 0}, {0xC78031E0, 0xC78031E0}, { 0x95F7CC73, 0 }, { 0x95A02568, 0x95A02568 },
{0xC73293D8, 0}, {0xC6E5321D, 0}, {0xC6980C6A, 0}, { 0x9548E498, 0 }, { 0x94F2094F, 0x94F2094F },
{0xC64B2278, 0xC64B2278}, {0xC5FE7403, 0xC5FE7403}, {0xC5B200C6, 0}, { 0x949B92DE, 0 }, { 0x94458094, 0x94458094 },
{0xC565C87C, 0}, {0xC519CAE0, 0xC519CAE0}, {0xC4CE07B0, 0xC4CE07B0}, { 0x93EFD1C5, 0x93EFD1C5 }, { 0x939A85C4, 0x939A85C4 },
{0xC4827EA8, 0xC4827EA8}, {0xC4372F86, 0}, {0xC3EC1A06, 0}, { 0x93459BE7, 0 }, { 0x92F11384, 0x92F11384 },
{0xC3A13DE6, 0xC3A13DE6}, {0xC3569AE6, 0}, {0xC30C30C3, 0xC30C30C3}, { 0x929CEBF5, 0 }, { 0x92492492, 0x92492492 },
{0xC2C1FF3E, 0}, {0xC2780614, 0}, {0xC22E4507, 0}, { 0x91F5BCB9, 0 }, { 0x91A2B3C5, 0 },
{0xC1E4BBD6, 0}, {0xC19B6A42, 0}, {0xC152500C, 0xC152500C}, { 0x91500915, 0x91500915 }, { 0x90FDBC09, 0x90FDBC09 },
{0xC1096CF6, 0}, {0xC0C0C0C1, 0}, {0xC0784B2F, 0}, { 0x90ABCC02, 0x90ABCC02 }, { 0x905A3863, 0x905A3863 },
{0xC0300C03, 0xC0300C03}, {0xBFE80300, 0}, {0xBFA02FE8, 0xBFA02FE8}, { 0x90090090, 0x90090090 }, { 0x8FB823EE, 0x8FB823EE },
{0xBF589280, 0}, {0xBF112A8B, 0}, {0xBEC9F7CE, 0}, { 0x8F67A1E4, 0 }, { 0x8F1779DA, 0 },
{0xBE82FA0C, 0}, {0xBE3C310C, 0}, {0xBDF59C92, 0}, { 0x8EC7AB3A, 0 }, { 0x8E78356D, 0x8E78356D },
{0xBDAF3C64, 0}, {0xBD691047, 0xBD691047}, {0xBD231803, 0}, { 0x8E2917E1, 0 }, { 0x8DDA5202, 0x8DDA5202 },
{0xBCDD535E, 0}, {0xBC97C21E, 0xBC97C21E}, {0xBC52640C, 0}, { 0x8D8BE340, 0 }, { 0x8D3DCB09, 0 },
{0xBC0D38EE, 0xBC0D38EE}, {0xBBC8408D, 0}, {0xBB837AB1, 0}, { 0x8CF008CF, 0x8CF008CF }, { 0x8CA29C04, 0x8CA29C04 },
{0xBB3EE722, 0}, {0xBAFA85A9, 0xBAFA85A9}, {0xBAB65610, 0xBAB65610}, { 0x8C55841D, 0 }, { 0x8C08C08C, 0x8C08C08C },
{0xBA725820, 0xBA725820}, {0xBA2E8BA3, 0}, {0xB9EAF063, 0}, { 0x8BBC50C9, 0 }, { 0x8B70344A, 0x8B70344A },
{0xB9A7862A, 0xB9A7862A}, {0xB9644CC4, 0}, {0xB92143FA, 0xB92143FA}, { 0x8B246A88, 0 }, { 0x8AD8F2FC, 0 },
{0xB8DE6B9A, 0}, {0xB89BC36D, 0}, {0xB8594B41, 0}, { 0x8A8DCD20, 0 }, { 0x8A42F870, 0x8A42F870 },
{0xB81702E1, 0}, {0xB7D4EA19, 0xB7D4EA19}, {0xB79300B8, 0}, { 0x89F8746A, 0 }, { 0x89AE408A, 0 },
{0xB7514689, 0}, {0xB70FBB5A, 0xB70FBB5A}, {0xB6CE5EF9, 0xB6CE5EF9}, { 0x89645C4F, 0x89645C4F }, { 0x891AC73B, 0 },
{0xB68D3134, 0xB68D3134}, {0xB64C31D9, 0}, {0xB60B60B6, 0xB60B60B6}, { 0x88D180CD, 0x88D180CD }, { 0x88888889, 0 },
{0xB5CABD9B, 0}, {0xB58A4855, 0xB58A4855}, {0xB54A00B5, 0xB54A00B5}, { 0x883FDDF0, 0x883FDDF0 }, { 0x87F78088, 0 },
{0xB509E68B, 0}, {0xB4C9F9A5, 0}, {0xB48A39D4, 0xB48A39D4}, { 0x87AF6FD6, 0 }, { 0x8767AB5F, 0x8767AB5F },
{0xB44AA6E9, 0xB44AA6E9}, {0xB40B40B4, 0xB40B40B4}, {0xB3CC0706, 0}, { 0x872032AC, 0x872032AC }, { 0x86D90545, 0 },
{0xB38CF9B0, 0xB38CF9B0}, {0xB34E1884, 0}, {0xB30F6353, 0}, { 0x869222B2, 0 }, { 0x864B8A7E, 0 },
{0xB2D0D9EF, 0}, {0xB2927C2A, 0}, {0xB25449D7, 0}, { 0x86053C34, 0x86053C34 }, { 0x85BF3761, 0x85BF3761 },
{0xB21642C9, 0}, {0xB1D866D1, 0xB1D866D1}, {0xB19AB5C5, 0}, { 0x85797B91, 0x85797B91 }, { 0x85340853, 0x85340853 },
{0xB15D2F76, 0}, {0xB11FD3B8, 0xB11FD3B8}, {0xB0E2A260, 0xB0E2A260}, { 0x84EEDD36, 0 }, { 0x84A9F9C8, 0x84A9F9C8 },
{0xB0A59B42, 0}, {0xB068BE31, 0}, {0xB02C0B03, 0}, { 0x84655D9C, 0 }, { 0x84210842, 0x84210842 },
{0xAFEF818C, 0}, {0xAFB321A1, 0xAFB321A1}, {0xAF76EB19, 0}, { 0x83DCF94E, 0 }, { 0x83993052, 0x83993052 },
{0xAF3ADDC7, 0}, {0xAEFEF982, 0}, {0xAEC33E20, 0}, { 0x8355ACE4, 0 }, { 0x83126E98, 0 },
{0xAE87AB76, 0xAE87AB76}, {0xAE4C415D, 0}, {0xAE10FFA9, 0}, { 0x82CF7504, 0 }, { 0x828CBFBF, 0 },
{0xADD5E632, 0xADD5E632}, {0xAD9AF4D0, 0}, {0xAD602B58, 0xAD602B58}, { 0x824A4E61, 0 }, { 0x82082082, 0x82082082 },
{0xAD2589A4, 0}, {0xACEB0F89, 0xACEB0F89}, {0xACB0BCE1, 0xACB0BCE1}, { 0x81C635BC, 0x81C635BC }, { 0x81848DA9, 0 },
{0xAC769184, 0xAC769184}, {0xAC3C8D4A, 0}, {0xAC02B00B, 0}, { 0x814327E4, 0 }, { 0x81020408, 0x81020408 },
{0xABC8F9A0, 0xABC8F9A0}, {0xAB8F69E3, 0}, {0xAB5600AC, 0}, { 0x80C121B3, 0 }, { 0x80808081, 0 },
{0xAB1CBDD4, 0}, {0xAAE3A136, 0}, {0xAAAAAAAB, 0}, { 0x80402010, 0x80402010 }, { 0xFFFFFFFF, 0xFFFFFFFF },
{0xAA71DA0D, 0}, {0xAA392F36, 0}, {0xAA00AA01, 0}, { 0xFF803FE1, 0 }, { 0xFF00FF01, 0 },
{0xA9C84A48, 0}, {0xA9900FE6, 0}, {0xA957FAB5, 0xA957FAB5}, { 0xFE823CA6, 0 }, { 0xFE03F810, 0 },
{0xA9200A92, 0xA9200A92}, {0xA8E83F57, 0xA8E83F57}, {0xA8B098E0, 0xA8B098E0}, { 0xFD863087, 0 }, { 0xFD08E551, 0 },
{0xA8791709, 0}, {0xA841B9AD, 0}, {0xA80A80A8, 0xA80A80A8}, { 0xFC8C15B5, 0 }, { 0xFC0FC0FD, 0 },
{0xA7D36BD8, 0}, {0xA79C7B17, 0}, {0xA765AE44, 0}, { 0xFB93E673, 0 }, { 0xFB188566, 0 },
{0xA72F053A, 0}, {0xA6F87FD6, 0xA6F87FD6}, {0xA6C21DF7, 0}, { 0xFA9D9D20, 0 }, { 0xFA232CF3, 0 },
{0xA68BDF79, 0}, {0xA655C439, 0xA655C439}, {0xA61FCC16, 0xA61FCC16}, { 0xF9A9342D, 0 }, { 0xF92FB222, 0 },
{0xA5E9F6ED, 0xA5E9F6ED}, {0xA5B4449D, 0}, {0xA57EB503, 0}, { 0xF8B6A622, 0xF8B6A622 }, { 0xF83E0F84, 0 },
{0xA54947FE, 0}, {0xA513FD6C, 0}, {0xA4DED52C, 0xA4DED52C}, { 0xF7C5ED9D, 0 }, { 0xF74E3FC3, 0 },
{0xA4A9CF1E, 0}, {0xA474EB1F, 0xA474EB1F}, {0xA4402910, 0xA4402910}, { 0xF6D7054E, 0 }, { 0xF6603D99, 0 },
{0xA40B88D0, 0}, {0xA3D70A3E, 0}, {0xA3A2AD39, 0xA3A2AD39}, { 0xF5E9E7FD, 0 }, { 0xF57403D6, 0 },
{0xA36E71A3, 0}, {0xA33A575A, 0xA33A575A}, {0xA3065E40, 0}, { 0xF4FE9083, 0 }, { 0xF4898D60, 0 },
{0xA2D28634, 0}, {0xA29ECF16, 0xA29ECF16}, {0xA26B38C9, 0}, { 0xF414F9CE, 0 }, { 0xF3A0D52D, 0 },
{0xA237C32B, 0xA237C32B}, {0xA2046E1F, 0xA2046E1F}, {0xA1D13986, 0}, { 0xF32D1EE0, 0 }, { 0xF2B9D649, 0 },
{0xA19E2540, 0}, {0xA16B312F, 0}, {0xA1385D35, 0}, { 0xF246FACC, 0 }, { 0xF1D48BCF, 0 },
{0xA105A933, 0}, {0xA0D3150C, 0}, {0xA0A0A0A1, 0}, { 0xF16288B9, 0 }, { 0xF0F0F0F1, 0 },
{0xA06E4BD4, 0xA06E4BD4}, {0xA03C1689, 0}, {0xA00A00A0, 0xA00A00A0}, { 0xF07FC3E0, 0xF07FC3E0 }, { 0xF00F00F0, 0xF00F00F0 },
{0x9FD809FE, 0}, {0x9FA63284, 0}, {0x9F747A15, 0x9F747A15}, { 0xEF9EA78C, 0 }, { 0xEF2EB720, 0 },
{0x9F42E095, 0x9F42E095}, {0x9F1165E7, 0x9F1165E7}, {0x9EE009EE, 0x9EE009EE}, { 0xEEBF2F19, 0 }, { 0xEE500EE5, 0xEE500EE5 },
{0x9EAECC8D, 0x9EAECC8D}, {0x9E7DADA9, 0}, {0x9E4CAD24, 0}, { 0xEDE155F4, 0 }, { 0xED7303B6, 0 },
{0x9E1BCAE3, 0}, {0x9DEB06C9, 0x9DEB06C9}, {0x9DBA60BB, 0x9DBA60BB}, { 0xED05179C, 0xED05179C }, { 0xEC979119, 0 },
{0x9D89D89E, 0}, {0x9D596E54, 0x9D596E54}, {0x9D2921C4, 0}, { 0xEC2A6FA0, 0xEC2A6FA0 }, { 0xEBBDB2A6, 0 },
{0x9CF8F2D1, 0x9CF8F2D1}, {0x9CC8E161, 0}, {0x9C98ED58, 0}, { 0xEB5159A0, 0 }, { 0xEAE56404, 0 },
{0x9C69169B, 0x9C69169B}, {0x9C395D10, 0x9C395D10}, {0x9C09C09C, 0x9C09C09C}, { 0xEA79D14A, 0 }, { 0xEA0EA0EA, 0xEA0EA0EA },
{0x9BDA4124, 0x9BDA4124}, {0x9BAADE8E, 0x9BAADE8E}, {0x9B7B98C0, 0}, { 0xE9A3D25E, 0xE9A3D25E }, { 0xE9396520, 0 },
{0x9B4C6F9F, 0}, {0x9B1D6311, 0x9B1D6311}, {0x9AEE72FD, 0}, { 0xE8CF58AB, 0 }, { 0xE865AC7C, 0 },
{0x9ABF9F48, 0x9ABF9F48}, {0x9A90E7D9, 0x9A90E7D9}, {0x9A624C97, 0}, { 0xE7FC600F, 0 }, { 0xE79372E3, 0 },
{0x9A33CD67, 0x9A33CD67}, {0x9A056A31, 0}, {0x99D722DB, 0}, { 0xE72AE476, 0 }, { 0xE6C2B449, 0 },
{0x99A8F74C, 0}, {0x997AE76B, 0x997AE76B}, {0x994CF320, 0x994CF320}, { 0xE65AE1DC, 0 }, { 0xE5F36CB0, 0xE5F36CB0 },
{0x991F1A51, 0x991F1A51}, {0x98F15CE7, 0}, {0x98C3BAC7, 0x98C3BAC7}, { 0xE58C544A, 0 }, { 0xE525982B, 0 },
{0x989633DB, 0x989633DB}, {0x9868C80A, 0}, {0x983B773B, 0}, { 0xE4BF37D9, 0 }, { 0xE45932D8, 0 },
{0x980E4156, 0x980E4156}, {0x97E12644, 0x97E12644}, {0x97B425ED, 0x97B425ED}, { 0xE3F388AF, 0 }, { 0xE38E38E4, 0 },
{0x97874039, 0}, {0x975A7510, 0}, {0x972DC45B, 0}, { 0xE32942FF, 0 }, { 0xE2C4A689, 0 },
{0x97012E02, 0x97012E02}, {0x96D4B1EF, 0}, {0x96A8500A, 0}, { 0xE260630B, 0 }, { 0xE1FC780F, 0 },
{0x967C083B, 0}, {0x964FDA6C, 0x964FDA6C}, {0x9623C686, 0x9623C686}, { 0xE198E520, 0 }, { 0xE135A9CA, 0 },
{0x95F7CC73, 0}, {0x95CBEC1B, 0}, {0x95A02568, 0x95A02568}, { 0xE0D2C59A, 0 }, { 0xE070381C, 0xE070381C },
{0x95747844, 0}, {0x9548E498, 0}, {0x951D6A4E, 0}, { 0xE00E00E0, 0xE00E00E0 }, { 0xDFAC1F75, 0 },
{0x94F2094F, 0x94F2094F}, {0x94C6C187, 0}, {0x949B92DE, 0}, { 0xDF4A9369, 0 }, { 0xDEE95C4D, 0 },
{0x94707D3F, 0}, {0x94458094, 0x94458094}, {0x941A9CC8, 0x941A9CC8}, { 0xDE8879B3, 0 }, { 0xDE27EB2D, 0 },
{0x93EFD1C5, 0x93EFD1C5}, {0x93C51F76, 0}, {0x939A85C4, 0x939A85C4}, { 0xDDC7B04D, 0 }, { 0xDD67C8A6, 0xDD67C8A6 },
{0x9370049C, 0}, {0x93459BE7, 0}, {0x931B4B91, 0}, { 0xDD0833CE, 0 }, { 0xDCA8F159, 0 },
{0x92F11384, 0x92F11384}, {0x92C6F3AC, 0x92C6F3AC}, {0x929CEBF5, 0}, { 0xDC4A00DD, 0 }, { 0xDBEB61EF, 0 },
{0x9272FC48, 0x9272FC48}, {0x92492492, 0x92492492}, {0x921F64BF, 0}, { 0xDB8D1428, 0 }, { 0xDB2F171E, 0 },
{0x91F5BCB9, 0}, {0x91CC2C6C, 0x91CC2C6C}, {0x91A2B3C5, 0}, { 0xDAD16A6B, 0 }, { 0xDA740DA8, 0 },
{0x917952AF, 0}, {0x91500915, 0x91500915}, {0x9126D6E5, 0}, { 0xDA17006D, 0xDA17006D }, { 0xD9BA4257, 0 },
{0x90FDBC09, 0x90FDBC09}, {0x90D4B86F, 0}, {0x90ABCC02, 0x90ABCC02}, { 0xD95DD300, 0 }, { 0xD901B204, 0 },
{0x9082F6B0, 0}, {0x905A3863, 0x905A3863}, {0x9031910A, 0}, { 0xD8A5DEFF, 0 }, { 0xD84A598F, 0 },
{0x90090090, 0x90090090}, {0x8FE086E3, 0}, {0x8FB823EE, 0x8FB823EE}, { 0xD7EF2152, 0 }, { 0xD79435E5, 0xD79435E5 },
{0x8F8FD7A0, 0}, {0x8F67A1E4, 0}, {0x8F3F82A8, 0x8F3F82A8}, { 0xD73996E9, 0 }, { 0xD6DF43FD, 0 },
{0x8F1779DA, 0}, {0x8EEF8766, 0}, {0x8EC7AB3A, 0}, { 0xD6853CC1, 0 }, { 0xD62B80D7, 0 },
{0x8E9FE542, 0x8E9FE542}, {0x8E78356D, 0x8E78356D}, {0x8E509BA8, 0x8E509BA8}, { 0xD5D20FDF, 0 }, { 0xD578E97D, 0 },
{0x8E2917E1, 0}, {0x8E01AA05, 0}, {0x8DDA5202, 0x8DDA5202}, { 0xD5200D52, 0xD5200D52 }, { 0xD4C77B04, 0 },
{0x8DB30FC6, 0x8DB30FC6}, {0x8D8BE340, 0}, {0x8D64CC5C, 0}, { 0xD46F3235, 0 }, { 0xD417328A, 0 },
{0x8D3DCB09, 0}, {0x8D16DF35, 0x8D16DF35}, {0x8CF008CF, 0x8CF008CF}, { 0xD3BF7BA9, 0 }, { 0xD3680D37, 0 },
{0x8CC947C5, 0}, {0x8CA29C04, 0x8CA29C04}, {0x8C7C057D, 0}, { 0xD310E6DB, 0 }, { 0xD2BA083C, 0 },
{0x8C55841D, 0}, {0x8C2F17D2, 0x8C2F17D2}, {0x8C08C08C, 0x8C08C08C}, { 0xD2637101, 0 }, { 0xD20D20D2, 0xD20D20D2 },
{0x8BE27E39, 0x8BE27E39}, {0x8BBC50C9, 0}, {0x8B963829, 0x8B963829}, { 0xD1B71759, 0 }, { 0xD161543E, 0xD161543E },
{0x8B70344A, 0x8B70344A}, {0x8B4A451A, 0}, {0x8B246A88, 0}, { 0xD10BD72C, 0 }, { 0xD0B69FCC, 0 },
{0x8AFEA483, 0x8AFEA483}, {0x8AD8F2FC, 0}, {0x8AB355E0, 0x8AB355E0}, { 0xD061ADCA, 0 }, { 0xD00D00D0, 0xD00D00D0 },
{0x8A8DCD20, 0}, {0x8A6858AB, 0}, {0x8A42F870, 0x8A42F870}, { 0xCFB8988C, 0 }, { 0xCF6474A9, 0 },
{0x8A1DAC60, 0x8A1DAC60}, {0x89F8746A, 0}, {0x89D3507D, 0}, { 0xCF1094D4, 0 }, { 0xCEBCF8BC, 0 },
{0x89AE408A, 0}, {0x89894480, 0}, {0x89645C4F, 0x89645C4F}, { 0xCE69A00D, 0 }, { 0xCE168A77, 0xCE168A77 },
{0x893F87E8, 0x893F87E8}, {0x891AC73B, 0}, {0x88F61A37, 0x88F61A37}, { 0xCDC3B7A9, 0xCDC3B7A9 }, { 0xCD712753, 0 },
{0x88D180CD, 0x88D180CD}, {0x88ACFAEE, 0}, {0x88888889, 0}, { 0xCD1ED924, 0 }, { 0xCCCCCCCD, 0 },
{0x8864298F, 0}, {0x883FDDF0, 0x883FDDF0}, {0x881BA59E, 0}, { 0xCC7B0200, 0 }, { 0xCC29786D, 0 },
{0x87F78088, 0}, {0x87D36EA0, 0}, {0x87AF6FD6, 0}, { 0xCBD82FC7, 0 }, { 0xCB8727C1, 0 },
{0x878B841B, 0}, {0x8767AB5F, 0x8767AB5F}, {0x8743E595, 0}, { 0xCB36600D, 0 }, { 0xCAE5D85F, 0xCAE5D85F },
{0x872032AC, 0x872032AC}, {0x86FC9296, 0x86FC9296}, {0x86D90545, 0}, { 0xCA95906C, 0 }, { 0xCA4587E7, 0 },
{0x86B58AA8, 0}, {0x869222B2, 0}, {0x866ECD53, 0x866ECD53}, { 0xC9F5BE86, 0 }, { 0xC9A633FD, 0 },
{0x864B8A7E, 0}, {0x86285A23, 0x86285A23}, {0x86053C34, 0x86053C34}, { 0xC956E803, 0xC956E803 }, { 0xC907DA4F, 0 },
{0x85E230A3, 0x85E230A3}, {0x85BF3761, 0x85BF3761}, {0x859C5060, 0x859C5060}, { 0xC8B90A96, 0 }, { 0xC86A7890, 0xC86A7890 },
{0x85797B91, 0x85797B91}, {0x8556B8E7, 0x8556B8E7}, {0x85340853, 0x85340853}, { 0xC81C23F5, 0xC81C23F5 }, { 0xC7CE0C7D, 0 },
{0x851169C7, 0x851169C7}, {0x84EEDD36, 0}, {0x84CC6290, 0}, { 0xC78031E0, 0xC78031E0 }, { 0xC73293D8, 0 },
{0x84A9F9C8, 0x84A9F9C8}, {0x8487A2D1, 0}, {0x84655D9C, 0}, { 0xC6E5321D, 0 }, { 0xC6980C6A, 0 },
{0x84432A1B, 0x84432A1B}, {0x84210842, 0x84210842}, {0x83FEF802, 0x83FEF802}, { 0xC64B2278, 0xC64B2278 }, { 0xC5FE7403, 0xC5FE7403 },
{0x83DCF94E, 0}, {0x83BB0C18, 0}, {0x83993052, 0x83993052}, { 0xC5B200C6, 0 }, { 0xC565C87C, 0 },
{0x837765F0, 0x837765F0}, {0x8355ACE4, 0}, {0x83340520, 0x83340520}, { 0xC519CAE0, 0xC519CAE0 }, { 0xC4CE07B0, 0xC4CE07B0 },
{0x83126E98, 0}, {0x82F0E93D, 0x82F0E93D}, {0x82CF7504, 0}, { 0xC4827EA8, 0xC4827EA8 }, { 0xC4372F86, 0 },
{0x82AE11DE, 0}, {0x828CBFBF, 0}, {0x826B7E99, 0x826B7E99}, { 0xC3EC1A06, 0 }, { 0xC3A13DE6, 0xC3A13DE6 },
{0x824A4E61, 0}, {0x82292F08, 0}, {0x82082082, 0x82082082}, { 0xC3569AE6, 0 }, { 0xC30C30C3, 0xC30C30C3 },
{0x81E722C2, 0x81E722C2}, {0x81C635BC, 0x81C635BC}, {0x81A55963, 0}, { 0xC2C1FF3E, 0 }, { 0xC2780614, 0 },
{0x81848DA9, 0}, {0x8163D283, 0}, {0x814327E4, 0}, { 0xC22E4507, 0 }, { 0xC1E4BBD6, 0 },
{0x81228DBF, 0}, {0x81020408, 0x81020408}, {0x80E18AB3, 0}, { 0xC19B6A42, 0 }, { 0xC152500C, 0xC152500C },
{0x80C121B3, 0}, {0x80A0C8FB, 0x80A0C8FB}, {0x80808081, 0}, { 0xC1096CF6, 0 }, { 0xC0C0C0C1, 0 },
{0x80604836, 0x80604836}, {0x80402010, 0x80402010}, {0x80200802, 0x80200802}, { 0xC0784B2F, 0 }, { 0xC0300C03, 0xC0300C03 },
{0xFFFFFFFF, 0xFFFFFFFF} { 0xBFE80300, 0 }, { 0xBFA02FE8, 0xBFA02FE8 },
{ 0xBF589280, 0 }, { 0xBF112A8B, 0 },
{ 0xBEC9F7CE, 0 }, { 0xBE82FA0C, 0 },
{ 0xBE3C310C, 0 }, { 0xBDF59C92, 0 },
{ 0xBDAF3C64, 0 }, { 0xBD691047, 0xBD691047 },
{ 0xBD231803, 0 }, { 0xBCDD535E, 0 },
{ 0xBC97C21E, 0xBC97C21E }, { 0xBC52640C, 0 },
{ 0xBC0D38EE, 0xBC0D38EE }, { 0xBBC8408D, 0 },
{ 0xBB837AB1, 0 }, { 0xBB3EE722, 0 },
{ 0xBAFA85A9, 0xBAFA85A9 }, { 0xBAB65610, 0xBAB65610 },
{ 0xBA725820, 0xBA725820 }, { 0xBA2E8BA3, 0 },
{ 0xB9EAF063, 0 }, { 0xB9A7862A, 0xB9A7862A },
{ 0xB9644CC4, 0 }, { 0xB92143FA, 0xB92143FA },
{ 0xB8DE6B9A, 0 }, { 0xB89BC36D, 0 },
{ 0xB8594B41, 0 }, { 0xB81702E1, 0 },
{ 0xB7D4EA19, 0xB7D4EA19 }, { 0xB79300B8, 0 },
{ 0xB7514689, 0 }, { 0xB70FBB5A, 0xB70FBB5A },
{ 0xB6CE5EF9, 0xB6CE5EF9 }, { 0xB68D3134, 0xB68D3134 },
{ 0xB64C31D9, 0 }, { 0xB60B60B6, 0xB60B60B6 },
{ 0xB5CABD9B, 0 }, { 0xB58A4855, 0xB58A4855 },
{ 0xB54A00B5, 0xB54A00B5 }, { 0xB509E68B, 0 },
{ 0xB4C9F9A5, 0 }, { 0xB48A39D4, 0xB48A39D4 },
{ 0xB44AA6E9, 0xB44AA6E9 }, { 0xB40B40B4, 0xB40B40B4 },
{ 0xB3CC0706, 0 }, { 0xB38CF9B0, 0xB38CF9B0 },
{ 0xB34E1884, 0 }, { 0xB30F6353, 0 },
{ 0xB2D0D9EF, 0 }, { 0xB2927C2A, 0 },
{ 0xB25449D7, 0 }, { 0xB21642C9, 0 },
{ 0xB1D866D1, 0xB1D866D1 }, { 0xB19AB5C5, 0 },
{ 0xB15D2F76, 0 }, { 0xB11FD3B8, 0xB11FD3B8 },
{ 0xB0E2A260, 0xB0E2A260 }, { 0xB0A59B42, 0 },
{ 0xB068BE31, 0 }, { 0xB02C0B03, 0 },
{ 0xAFEF818C, 0 }, { 0xAFB321A1, 0xAFB321A1 },
{ 0xAF76EB19, 0 }, { 0xAF3ADDC7, 0 },
{ 0xAEFEF982, 0 }, { 0xAEC33E20, 0 },
{ 0xAE87AB76, 0xAE87AB76 }, { 0xAE4C415D, 0 },
{ 0xAE10FFA9, 0 }, { 0xADD5E632, 0xADD5E632 },
{ 0xAD9AF4D0, 0 }, { 0xAD602B58, 0xAD602B58 },
{ 0xAD2589A4, 0 }, { 0xACEB0F89, 0xACEB0F89 },
{ 0xACB0BCE1, 0xACB0BCE1 }, { 0xAC769184, 0xAC769184 },
{ 0xAC3C8D4A, 0 }, { 0xAC02B00B, 0 },
{ 0xABC8F9A0, 0xABC8F9A0 }, { 0xAB8F69E3, 0 },
{ 0xAB5600AC, 0 }, { 0xAB1CBDD4, 0 },
{ 0xAAE3A136, 0 }, { 0xAAAAAAAB, 0 },
{ 0xAA71DA0D, 0 }, { 0xAA392F36, 0 },
{ 0xAA00AA01, 0 }, { 0xA9C84A48, 0 },
{ 0xA9900FE6, 0 }, { 0xA957FAB5, 0xA957FAB5 },
{ 0xA9200A92, 0xA9200A92 }, { 0xA8E83F57, 0xA8E83F57 },
{ 0xA8B098E0, 0xA8B098E0 }, { 0xA8791709, 0 },
{ 0xA841B9AD, 0 }, { 0xA80A80A8, 0xA80A80A8 },
{ 0xA7D36BD8, 0 }, { 0xA79C7B17, 0 },
{ 0xA765AE44, 0 }, { 0xA72F053A, 0 },
{ 0xA6F87FD6, 0xA6F87FD6 }, { 0xA6C21DF7, 0 },
{ 0xA68BDF79, 0 }, { 0xA655C439, 0xA655C439 },
{ 0xA61FCC16, 0xA61FCC16 }, { 0xA5E9F6ED, 0xA5E9F6ED },
{ 0xA5B4449D, 0 }, { 0xA57EB503, 0 },
{ 0xA54947FE, 0 }, { 0xA513FD6C, 0 },
{ 0xA4DED52C, 0xA4DED52C }, { 0xA4A9CF1E, 0 },
{ 0xA474EB1F, 0xA474EB1F }, { 0xA4402910, 0xA4402910 },
{ 0xA40B88D0, 0 }, { 0xA3D70A3E, 0 },
{ 0xA3A2AD39, 0xA3A2AD39 }, { 0xA36E71A3, 0 },
{ 0xA33A575A, 0xA33A575A }, { 0xA3065E40, 0 },
{ 0xA2D28634, 0 }, { 0xA29ECF16, 0xA29ECF16 },
{ 0xA26B38C9, 0 }, { 0xA237C32B, 0xA237C32B },
{ 0xA2046E1F, 0xA2046E1F }, { 0xA1D13986, 0 },
{ 0xA19E2540, 0 }, { 0xA16B312F, 0 },
{ 0xA1385D35, 0 }, { 0xA105A933, 0 },
{ 0xA0D3150C, 0 }, { 0xA0A0A0A1, 0 },
{ 0xA06E4BD4, 0xA06E4BD4 }, { 0xA03C1689, 0 },
{ 0xA00A00A0, 0xA00A00A0 }, { 0x9FD809FE, 0 },
{ 0x9FA63284, 0 }, { 0x9F747A15, 0x9F747A15 },
{ 0x9F42E095, 0x9F42E095 }, { 0x9F1165E7, 0x9F1165E7 },
{ 0x9EE009EE, 0x9EE009EE }, { 0x9EAECC8D, 0x9EAECC8D },
{ 0x9E7DADA9, 0 }, { 0x9E4CAD24, 0 },
{ 0x9E1BCAE3, 0 }, { 0x9DEB06C9, 0x9DEB06C9 },
{ 0x9DBA60BB, 0x9DBA60BB }, { 0x9D89D89E, 0 },
{ 0x9D596E54, 0x9D596E54 }, { 0x9D2921C4, 0 },
{ 0x9CF8F2D1, 0x9CF8F2D1 }, { 0x9CC8E161, 0 },
{ 0x9C98ED58, 0 }, { 0x9C69169B, 0x9C69169B },
{ 0x9C395D10, 0x9C395D10 }, { 0x9C09C09C, 0x9C09C09C },
{ 0x9BDA4124, 0x9BDA4124 }, { 0x9BAADE8E, 0x9BAADE8E },
{ 0x9B7B98C0, 0 }, { 0x9B4C6F9F, 0 },
{ 0x9B1D6311, 0x9B1D6311 }, { 0x9AEE72FD, 0 },
{ 0x9ABF9F48, 0x9ABF9F48 }, { 0x9A90E7D9, 0x9A90E7D9 },
{ 0x9A624C97, 0 }, { 0x9A33CD67, 0x9A33CD67 },
{ 0x9A056A31, 0 }, { 0x99D722DB, 0 },
{ 0x99A8F74C, 0 }, { 0x997AE76B, 0x997AE76B },
{ 0x994CF320, 0x994CF320 }, { 0x991F1A51, 0x991F1A51 },
{ 0x98F15CE7, 0 }, { 0x98C3BAC7, 0x98C3BAC7 },
{ 0x989633DB, 0x989633DB }, { 0x9868C80A, 0 },
{ 0x983B773B, 0 }, { 0x980E4156, 0x980E4156 },
{ 0x97E12644, 0x97E12644 }, { 0x97B425ED, 0x97B425ED },
{ 0x97874039, 0 }, { 0x975A7510, 0 },
{ 0x972DC45B, 0 }, { 0x97012E02, 0x97012E02 },
{ 0x96D4B1EF, 0 }, { 0x96A8500A, 0 },
{ 0x967C083B, 0 }, { 0x964FDA6C, 0x964FDA6C },
{ 0x9623C686, 0x9623C686 }, { 0x95F7CC73, 0 },
{ 0x95CBEC1B, 0 }, { 0x95A02568, 0x95A02568 },
{ 0x95747844, 0 }, { 0x9548E498, 0 },
{ 0x951D6A4E, 0 }, { 0x94F2094F, 0x94F2094F },
{ 0x94C6C187, 0 }, { 0x949B92DE, 0 },
{ 0x94707D3F, 0 }, { 0x94458094, 0x94458094 },
{ 0x941A9CC8, 0x941A9CC8 }, { 0x93EFD1C5, 0x93EFD1C5 },
{ 0x93C51F76, 0 }, { 0x939A85C4, 0x939A85C4 },
{ 0x9370049C, 0 }, { 0x93459BE7, 0 },
{ 0x931B4B91, 0 }, { 0x92F11384, 0x92F11384 },
{ 0x92C6F3AC, 0x92C6F3AC }, { 0x929CEBF5, 0 },
{ 0x9272FC48, 0x9272FC48 }, { 0x92492492, 0x92492492 },
{ 0x921F64BF, 0 }, { 0x91F5BCB9, 0 },
{ 0x91CC2C6C, 0x91CC2C6C }, { 0x91A2B3C5, 0 },
{ 0x917952AF, 0 }, { 0x91500915, 0x91500915 },
{ 0x9126D6E5, 0 }, { 0x90FDBC09, 0x90FDBC09 },
{ 0x90D4B86F, 0 }, { 0x90ABCC02, 0x90ABCC02 },
{ 0x9082F6B0, 0 }, { 0x905A3863, 0x905A3863 },
{ 0x9031910A, 0 }, { 0x90090090, 0x90090090 },
{ 0x8FE086E3, 0 }, { 0x8FB823EE, 0x8FB823EE },
{ 0x8F8FD7A0, 0 }, { 0x8F67A1E4, 0 },
{ 0x8F3F82A8, 0x8F3F82A8 }, { 0x8F1779DA, 0 },
{ 0x8EEF8766, 0 }, { 0x8EC7AB3A, 0 },
{ 0x8E9FE542, 0x8E9FE542 }, { 0x8E78356D, 0x8E78356D },
{ 0x8E509BA8, 0x8E509BA8 }, { 0x8E2917E1, 0 },
{ 0x8E01AA05, 0 }, { 0x8DDA5202, 0x8DDA5202 },
{ 0x8DB30FC6, 0x8DB30FC6 }, { 0x8D8BE340, 0 },
{ 0x8D64CC5C, 0 }, { 0x8D3DCB09, 0 },
{ 0x8D16DF35, 0x8D16DF35 }, { 0x8CF008CF, 0x8CF008CF },
{ 0x8CC947C5, 0 }, { 0x8CA29C04, 0x8CA29C04 },
{ 0x8C7C057D, 0 }, { 0x8C55841D, 0 },
{ 0x8C2F17D2, 0x8C2F17D2 }, { 0x8C08C08C, 0x8C08C08C },
{ 0x8BE27E39, 0x8BE27E39 }, { 0x8BBC50C9, 0 },
{ 0x8B963829, 0x8B963829 }, { 0x8B70344A, 0x8B70344A },
{ 0x8B4A451A, 0 }, { 0x8B246A88, 0 },
{ 0x8AFEA483, 0x8AFEA483 }, { 0x8AD8F2FC, 0 },
{ 0x8AB355E0, 0x8AB355E0 }, { 0x8A8DCD20, 0 },
{ 0x8A6858AB, 0 }, { 0x8A42F870, 0x8A42F870 },
{ 0x8A1DAC60, 0x8A1DAC60 }, { 0x89F8746A, 0 },
{ 0x89D3507D, 0 }, { 0x89AE408A, 0 },
{ 0x89894480, 0 }, { 0x89645C4F, 0x89645C4F },
{ 0x893F87E8, 0x893F87E8 }, { 0x891AC73B, 0 },
{ 0x88F61A37, 0x88F61A37 }, { 0x88D180CD, 0x88D180CD },
{ 0x88ACFAEE, 0 }, { 0x88888889, 0 },
{ 0x8864298F, 0 }, { 0x883FDDF0, 0x883FDDF0 },
{ 0x881BA59E, 0 }, { 0x87F78088, 0 },
{ 0x87D36EA0, 0 }, { 0x87AF6FD6, 0 },
{ 0x878B841B, 0 }, { 0x8767AB5F, 0x8767AB5F },
{ 0x8743E595, 0 }, { 0x872032AC, 0x872032AC },
{ 0x86FC9296, 0x86FC9296 }, { 0x86D90545, 0 },
{ 0x86B58AA8, 0 }, { 0x869222B2, 0 },
{ 0x866ECD53, 0x866ECD53 }, { 0x864B8A7E, 0 },
{ 0x86285A23, 0x86285A23 }, { 0x86053C34, 0x86053C34 },
{ 0x85E230A3, 0x85E230A3 }, { 0x85BF3761, 0x85BF3761 },
{ 0x859C5060, 0x859C5060 }, { 0x85797B91, 0x85797B91 },
{ 0x8556B8E7, 0x8556B8E7 }, { 0x85340853, 0x85340853 },
{ 0x851169C7, 0x851169C7 }, { 0x84EEDD36, 0 },
{ 0x84CC6290, 0 }, { 0x84A9F9C8, 0x84A9F9C8 },
{ 0x8487A2D1, 0 }, { 0x84655D9C, 0 },
{ 0x84432A1B, 0x84432A1B }, { 0x84210842, 0x84210842 },
{ 0x83FEF802, 0x83FEF802 }, { 0x83DCF94E, 0 },
{ 0x83BB0C18, 0 }, { 0x83993052, 0x83993052 },
{ 0x837765F0, 0x837765F0 }, { 0x8355ACE4, 0 },
{ 0x83340520, 0x83340520 }, { 0x83126E98, 0 },
{ 0x82F0E93D, 0x82F0E93D }, { 0x82CF7504, 0 },
{ 0x82AE11DE, 0 }, { 0x828CBFBF, 0 },
{ 0x826B7E99, 0x826B7E99 }, { 0x824A4E61, 0 },
{ 0x82292F08, 0 }, { 0x82082082, 0x82082082 },
{ 0x81E722C2, 0x81E722C2 }, { 0x81C635BC, 0x81C635BC },
{ 0x81A55963, 0 }, { 0x81848DA9, 0 },
{ 0x8163D283, 0 }, { 0x814327E4, 0 },
{ 0x81228DBF, 0 }, { 0x81020408, 0x81020408 },
{ 0x80E18AB3, 0 }, { 0x80C121B3, 0 },
{ 0x80A0C8FB, 0x80A0C8FB }, { 0x80808081, 0 },
{ 0x80604836, 0x80604836 }, { 0x80402010, 0x80402010 },
{ 0x80200802, 0x80200802 }, { 0xFFFFFFFF, 0xFFFFFFFF }
}; };

View File

@@ -25,8 +25,9 @@ extern uint32_t OD_DIVU_SMALL_CONSTS[OD_DIVU_DMAX][2];
/*Translate unsigned division by small divisors into multiplications.*/ /*Translate unsigned division by small divisors into multiplications.*/
#define OD_DIVU_SMALL(_x, _d) \ #define OD_DIVU_SMALL(_x, _d) \
((uint32_t)((OD_DIVU_SMALL_CONSTS[(_d)-1][0]* \ ((uint32_t)((OD_DIVU_SMALL_CONSTS[(_d)-1][0] * (uint64_t)(_x) + \
(uint64_t)(_x)+OD_DIVU_SMALL_CONSTS[(_d)-1][1])>>32)>> \ OD_DIVU_SMALL_CONSTS[(_d)-1][1]) >> \
32) >> \
(OD_ILOG(_d) - 1)) (OD_ILOG(_d) - 1))
#define OD_DIVU(_x, _d) \ #define OD_DIVU(_x, _d) \

File diff suppressed because it is too large Load Diff

View File

@@ -1786,7 +1786,8 @@ static void decode_partition(VP10Decoder *const pbi, MACROBLOCKD *const xd,
cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain = cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain =
vpx_read_literal(r, DERING_REFINEMENT_BITS); vpx_read_literal(r, DERING_REFINEMENT_BITS);
} else { } else {
cm->mi_grid_visible[mi_row*cm->mi_stride + mi_col]->mbmi.dering_gain = 0; cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain =
0;
} }
} }
#endif // DERGING_REFINEMENT #endif // DERGING_REFINEMENT

View File

@@ -1883,7 +1883,8 @@ static void write_modes_sb(VP10_COMP *const cpi, const TileInfo *const tile,
if (bsize == BLOCK_64X64 && cm->dering_level != 0 && if (bsize == BLOCK_64X64 && cm->dering_level != 0 &&
!sb_all_skip(cm, mi_row, mi_col)) { !sb_all_skip(cm, mi_row, mi_col)) {
vpx_write_literal( vpx_write_literal(
w, cm->mi_grid_visible[mi_row*cm->mi_stride + mi_col]->mbmi.dering_gain, w,
cm->mi_grid_visible[mi_row * cm->mi_stride + mi_col]->mbmi.dering_gain,
DERING_REFINEMENT_BITS); DERING_REFINEMENT_BITS);
} }
#endif #endif

View File

@@ -1376,11 +1376,10 @@ void vp10_fht4x8_c(const int16_t *input, tran_low_t *output, int stride,
// Columns // Columns
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j)
temp_in[j] = (tran_low_t)fdct_round_shift( temp_in[j] =
input[j * stride + i] * 8 * Sqrt2); (tran_low_t)fdct_round_shift(input[j * stride + i] * 8 * Sqrt2);
ht.cols(temp_in, temp_out); ht.cols(temp_in, temp_out);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j) out[j * n + i] = temp_out[j];
out[j * n + i] = temp_out[j];
} }
// Rows // Rows
@@ -1406,11 +1405,10 @@ void vp10_fht8x4_c(const int16_t *input, tran_low_t *output, int stride,
// Columns // Columns
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
temp_in[j] = (tran_low_t)fdct_round_shift( temp_in[j] =
input[j * stride + i] * 8 * Sqrt2); (tran_low_t)fdct_round_shift(input[j * stride + i] * 8 * Sqrt2);
ht.cols(temp_in, temp_out); ht.cols(temp_in, temp_out);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j) out[j * n2 + i] = temp_out[j];
out[j * n2 + i] = temp_out[j];
} }
// Rows // Rows
@@ -1422,8 +1420,8 @@ void vp10_fht8x4_c(const int16_t *input, tran_low_t *output, int stride,
// Note: overall scale factor of transform is 8 times unitary // Note: overall scale factor of transform is 8 times unitary
} }
void vp10_fht8x16_c(const int16_t *input, tran_low_t *output, void vp10_fht8x16_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
const int n = 8; const int n = 8;
const int n2 = 16; const int n2 = 16;
tran_low_t out[16 * 8]; tran_low_t out[16 * 8];
@@ -1436,26 +1434,23 @@ void vp10_fht8x16_c(const int16_t *input, tran_low_t *output,
// Columns // Columns
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j)
temp_in[j] = (tran_low_t)fdct_round_shift( temp_in[j] =
input[j * stride + i] * 4 * Sqrt2); (tran_low_t)fdct_round_shift(input[j * stride + i] * 4 * Sqrt2);
ht.cols(temp_in, temp_out); ht.cols(temp_in, temp_out);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j) out[j * n + i] = temp_out[j];
out[j * n + i] = temp_out[j];
} }
// Rows // Rows
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j) temp_in[j] = out[j + i * n];
temp_in[j] = out[j + i * n];
ht.rows(temp_in, temp_out); ht.rows(temp_in, temp_out);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j) output[j + i * n] = (temp_out[j] + 1) >> 1;
output[j + i * n] = (temp_out[j] + 1) >> 1;
} }
// Note: overall scale factor of transform is 8 times unitary // Note: overall scale factor of transform is 8 times unitary
} }
void vp10_fht16x8_c(const int16_t *input, tran_low_t *output, void vp10_fht16x8_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
const int n = 8; const int n = 8;
const int n2 = 16; const int n2 = 16;
tran_low_t out[16 * 8]; tran_low_t out[16 * 8];
@@ -1468,26 +1463,23 @@ void vp10_fht16x8_c(const int16_t *input, tran_low_t *output,
// Columns // Columns
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
temp_in[j] = (tran_low_t)fdct_round_shift( temp_in[j] =
input[j * stride + i] * 4 * Sqrt2); (tran_low_t)fdct_round_shift(input[j * stride + i] * 4 * Sqrt2);
ht.cols(temp_in, temp_out); ht.cols(temp_in, temp_out);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j) out[j * n2 + i] = temp_out[j];
out[j * n2 + i] = temp_out[j];
} }
// Rows // Rows
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j) temp_in[j] = out[j + i * n2];
temp_in[j] = out[j + i * n2];
ht.rows(temp_in, temp_out); ht.rows(temp_in, temp_out);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j) output[j + i * n2] = (temp_out[j] + 1) >> 1;
output[j + i * n2] = (temp_out[j] + 1) >> 1;
} }
// Note: overall scale factor of transform is 8 times unitary // Note: overall scale factor of transform is 8 times unitary
} }
void vp10_fht16x32_c(const int16_t *input, tran_low_t *output, void vp10_fht16x32_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
const int n = 16; const int n = 16;
const int n2 = 32; const int n2 = 32;
tran_low_t out[32 * 16]; tran_low_t out[32 * 16];
@@ -1500,17 +1492,14 @@ void vp10_fht16x32_c(const int16_t *input, tran_low_t *output,
// Columns // Columns
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j)
temp_in[j] = (tran_low_t)fdct_round_shift( temp_in[j] = (tran_low_t)fdct_round_shift(input[j * stride + i] * Sqrt2);
input[j * stride + i] * Sqrt2);
ht.cols(temp_in, temp_out); ht.cols(temp_in, temp_out);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j) out[j * n + i] = temp_out[j];
out[j * n + i] = temp_out[j];
} }
// Rows // Rows
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j) temp_in[j] = out[j + i * n];
temp_in[j] = out[j + i * n];
ht.rows(temp_in, temp_out); ht.rows(temp_in, temp_out);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
output[j + i * n] = output[j + i * n] =
@@ -1519,8 +1508,8 @@ void vp10_fht16x32_c(const int16_t *input, tran_low_t *output,
// Note: overall scale factor of transform is 4 times unitary // Note: overall scale factor of transform is 4 times unitary
} }
void vp10_fht32x16_c(const int16_t *input, tran_low_t *output, void vp10_fht32x16_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
const int n = 16; const int n = 16;
const int n2 = 32; const int n2 = 32;
tran_low_t out[32 * 16]; tran_low_t out[32 * 16];
@@ -1533,17 +1522,14 @@ void vp10_fht32x16_c(const int16_t *input, tran_low_t *output,
// Columns // Columns
for (i = 0; i < n2; ++i) { for (i = 0; i < n2; ++i) {
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j)
temp_in[j] = (tran_low_t)fdct_round_shift( temp_in[j] = (tran_low_t)fdct_round_shift(input[j * stride + i] * Sqrt2);
input[j * stride + i] * Sqrt2);
ht.cols(temp_in, temp_out); ht.cols(temp_in, temp_out);
for (j = 0; j < n; ++j) for (j = 0; j < n; ++j) out[j * n2 + i] = temp_out[j];
out[j * n2 + i] = temp_out[j];
} }
// Rows // Rows
for (i = 0; i < n; ++i) { for (i = 0; i < n; ++i) {
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j) temp_in[j] = out[j + i * n2];
temp_in[j] = out[j + i * n2];
ht.rows(temp_in, temp_out); ht.rows(temp_in, temp_out);
for (j = 0; j < n2; ++j) for (j = 0; j < n2; ++j)
output[j + i * n2] = output[j + i * n2] =
@@ -1807,23 +1793,23 @@ void vp10_highbd_fht4x4_c(const int16_t *input, tran_low_t *output, int stride,
} }
#if CONFIG_EXT_TX #if CONFIG_EXT_TX
void vp10_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, void vp10_highbd_fht4x8_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
vp10_fht4x8_c(input, output, stride, tx_type); vp10_fht4x8_c(input, output, stride, tx_type);
} }
void vp10_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, void vp10_highbd_fht8x4_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
vp10_fht8x4_c(input, output, stride, tx_type); vp10_fht8x4_c(input, output, stride, tx_type);
} }
void vp10_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, void vp10_highbd_fht8x16_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
vp10_fht8x16_c(input, output, stride, tx_type); vp10_fht8x16_c(input, output, stride, tx_type);
} }
void vp10_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, void vp10_highbd_fht16x8_c(const int16_t *input, tran_low_t *output, int stride,
int stride, int tx_type) { int tx_type) {
vp10_fht16x8_c(input, output, stride, tx_type); vp10_fht16x8_c(input, output, stride, tx_type);
} }

View File

@@ -3349,8 +3349,8 @@ static void loopfilter_frame(VP10_COMP *cpi, VP10_COMMON *cm) {
if (is_lossless_requested(&cpi->oxcf)) { if (is_lossless_requested(&cpi->oxcf)) {
cm->dering_level = 0; cm->dering_level = 0;
} else { } else {
cm->dering_level = vp10_dering_search(cm->frame_to_show, cpi->Source, cm, cm->dering_level =
xd); vp10_dering_search(cm->frame_to_show, cpi->Source, cm, xd);
vp10_dering_frame(cm->frame_to_show, cm, xd, cm->dering_level); vp10_dering_frame(cm->frame_to_show, cm, xd, cm->dering_level);
} }
#endif // CONFIG_DERING #endif // CONFIG_DERING

View File

@@ -473,29 +473,26 @@ void highbd_fwd_txfm(const int16_t *src_diff, tran_low_t *coeff,
bd); bd);
break; break;
case TX_8X16: case TX_8X16:
highbd_fwd_txfm_8x16(src_diff, coeff, diff_stride, tx_type, highbd_fwd_txfm_8x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
fwd_txfm_opt, bd); bd);
break; break;
case TX_16X8: case TX_16X8:
highbd_fwd_txfm_16x8(src_diff, coeff, diff_stride, tx_type, highbd_fwd_txfm_16x8(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
fwd_txfm_opt, bd); bd);
break; break;
case TX_16X32: case TX_16X32:
highbd_fwd_txfm_16x32(src_diff, coeff, diff_stride, tx_type, highbd_fwd_txfm_16x32(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
fwd_txfm_opt, bd); bd);
break; break;
case TX_32X16: case TX_32X16:
highbd_fwd_txfm_32x16(src_diff, coeff, diff_stride, tx_type, highbd_fwd_txfm_32x16(src_diff, coeff, diff_stride, tx_type, fwd_txfm_opt,
fwd_txfm_opt, bd); bd);
break; break;
#endif // CONFIG_EXT_TX #endif // CONFIG_EXT_TX
case TX_4X4: case TX_4X4:
highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, tx_type, highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, tx_type, lossless, bd);
lossless, bd);
break;
default:
assert(0);
break; break;
default: assert(0); break;
} }
} }
#endif // CONFIG_VP9_HIGHBITDEPTH #endif // CONFIG_VP9_HIGHBITDEPTH

View File

@@ -33,8 +33,7 @@ static double compute_dist(int16_t *x, int xstride, int16_t *y, int ystride,
} }
int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref, int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
VP10_COMMON *cm, VP10_COMMON *cm, MACROBLOCKD *xd) {
MACROBLOCKD *xd) {
int r, c; int r, c;
int sbr, sbc; int sbr, sbc;
int nhsb, nvsb; int nhsb, nvsb;
@@ -67,9 +66,8 @@ int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
for (c = 0; c < bsize[0] * cm->mi_cols; ++c) { for (c = 0; c < bsize[0] * cm->mi_cols; ++c) {
#if CONFIG_VPX_HIGHBITDEPTH #if CONFIG_VPX_HIGHBITDEPTH
if (cm->use_highbitdepth) { if (cm->use_highbitdepth) {
src[r * stride + c] = src[r * stride + c] = CONVERT_TO_SHORTPTR(
CONVERT_TO_SHORTPTR(xd->plane[0].dst.buf) xd->plane[0].dst.buf)[r * xd->plane[0].dst.stride + c];
[r*xd->plane[0].dst.stride + c];
ref_coeff[r * stride + c] = ref_coeff[r * stride + c] =
CONVERT_TO_SHORTPTR(ref->y_buffer)[r * ref->y_stride + c]; CONVERT_TO_SHORTPTR(ref->y_buffer)[r * ref->y_stride + c];
} else { } else {
@@ -104,9 +102,7 @@ int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
int threshold; int threshold;
threshold = level << coeff_shift; threshold = level << coeff_shift;
od_dering( od_dering(
&OD_DERING_VTBL_C, &OD_DERING_VTBL_C, dst, MAX_MIB_SIZE * bsize[0],
dst,
MAX_MIB_SIZE*bsize[0],
&src[sbr * stride * bsize[0] * MAX_MIB_SIZE + &src[sbr * stride * bsize[0] * MAX_MIB_SIZE +
sbc * bsize[0] * MAX_MIB_SIZE], sbc * bsize[0] * MAX_MIB_SIZE],
cm->mi_cols * bsize[0], nhb, nvb, sbc, sbr, nhsb, nvsb, 0, dir, 0, cm->mi_cols * bsize[0], nhb, nvb, sbc, sbr, nhsb, nvsb, 0, dir, 0,
@@ -162,8 +158,9 @@ int vp10_dering_search(YV12_BUFFER_CONFIG *frame, const YV12_BUFFER_CONFIG *ref,
best_mse = mse[nhsb * sbr + sbc][level]; best_mse = mse[nhsb * sbr + sbc][level];
} }
} }
cm->mi_grid_visible[MAX_MIB_SIZE*sbr*cm->mi_stride + MAX_MIB_SIZE*sbc]-> cm->mi_grid_visible[MAX_MIB_SIZE * sbr * cm->mi_stride +
mbmi.dering_gain = best_gi; MAX_MIB_SIZE * sbc]
->mbmi.dering_gain = best_gi;
} }
} }
#else #else

View File

@@ -625,9 +625,7 @@ static void get_entropy_contexts_plane(
t_left[i] = !!*(const uint32_t *)&left[i]; t_left[i] = !!*(const uint32_t *)&left[i];
break; break;
#endif // CONFIG_EXT_TX #endif // CONFIG_EXT_TX
default: default: assert(0 && "Invalid transform size."); break;
assert(0 && "Invalid transform size.");
break;
} }
} }