Add a new experiment SMOOTH_HV. This experiment extends ALT_INTRA by adding two new modes: smooth horizontal and smooth vertical. Improvement on *intra frames* in BDRate (PSNR): =============================================== AWCY (high latency): -0.46% (Also, -1.0% or more on PSNR Cb,Cr and APSNR Cb,Cr). AWCY (low latency): -0.43% (Also, -0.88% to -0.94% on PSNR Cb,Cr and APSNR Cb,Cr). Google sets: lowres: -0.454 midres: -0.484 hdres: -0.525 Improvement on *video overall* in BDRate (PSNR): ================================================ AWCY (high latency): -0.15% Google sets: lowres: -0.085 midres: -0.079 Change-Id: I9f4e7c1b8ded1fe244c72838f336103ccc715d50
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl index b4ef0d9..4929de7 100755 --- a/aom_dsp/aom_dsp_rtcd_defs.pl +++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -49,6 +49,9 @@ @pred_names = qw/dc dc_top dc_left dc_128 v h d207e d63e d45e d117 d135 d153/; if (aom_config("CONFIG_ALT_INTRA") eq "yes") { push @pred_names, qw/paeth smooth/; + if (aom_config("CONFIG_SMOOTH_HV") eq "yes") { + push @pred_names, qw/smooth_v smooth_h/; + } } else { push @pred_names, 'tm'; }
diff --git a/aom_dsp/intrapred.c b/aom_dsp/intrapred.c index 1f0870b..08a73fc 100644 --- a/aom_dsp/intrapred.c +++ b/aom_dsp/intrapred.c
@@ -277,6 +277,70 @@ } } +#if CONFIG_SMOOTH_HV +static INLINE void smooth_v_predictor(uint8_t *dst, ptrdiff_t stride, int bs, + const uint8_t *above, + const uint8_t *left) { + const uint8_t below_pred = left[bs - 1]; // estimated by bottom-left pixel + const int arr_index = get_msb(bs) - 1; + assert(arr_index >= 0); + assert(arr_index < NUM_BLOCK_DIMS); + const uint8_t *const sm_weights = sm_weight_arrays[arr_index]; + // scale = 2^sm_weight_log2_scale + const int log2_scale = sm_weight_log2_scale; + const uint16_t scale = (1 << sm_weight_log2_scale); + sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst)); + + int r; + for (r = 0; r < bs; r++) { + int c; + for (c = 0; c < bs; ++c) { + const uint8_t pixels[] = { above[c], below_pred }; + const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] }; + uint32_t this_pred = 0; + assert(scale >= sm_weights[r]); + int i; + for (i = 0; i < 2; ++i) { + this_pred += weights[i] * pixels[i]; + } + dst[c] = clip_pixel(divide_round(this_pred, log2_scale)); + } + dst += stride; + } +} + +static INLINE void smooth_h_predictor(uint8_t *dst, ptrdiff_t stride, int bs, + const uint8_t *above, + const uint8_t *left) { + const uint8_t right_pred = above[bs - 1]; // estimated by top-right pixel + const int arr_index = get_msb(bs) - 1; + assert(arr_index >= 0); + assert(arr_index < NUM_BLOCK_DIMS); + const uint8_t *const sm_weights = sm_weight_arrays[arr_index]; + // scale = 2^sm_weight_log2_scale + const int log2_scale = sm_weight_log2_scale; + const uint16_t scale = (1 << sm_weight_log2_scale); + sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst)); + + int r; + for (r = 0; r < bs; r++) { + int c; + for (c = 0; c < bs; ++c) { + const uint8_t pixels[] = { left[r], right_pred }; + const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] }; + uint32_t this_pred = 0; + assert(scale >= sm_weights[c]); + int i; + for (i = 0; i < 2; ++i) { + this_pred += weights[i] * pixels[i]; + } + dst[c] = clip_pixel(divide_round(this_pred, log2_scale)); + } + dst += stride; + } +} +#endif // CONFIG_SMOOTH_HV + #else static INLINE void tm_predictor(uint8_t *dst, ptrdiff_t stride, int bs, @@ -770,6 +834,68 @@ } } +static INLINE void highbd_smooth_v_predictor(uint16_t *dst, ptrdiff_t stride, + int bs, const uint16_t *above, + const uint16_t *left, int bd) { + const uint16_t below_pred = left[bs - 1]; // estimated by bottom-left pixel + const int arr_index = get_msb(bs) - 1; + assert(arr_index >= 0); + assert(arr_index < NUM_BLOCK_DIMS); + const uint8_t *const sm_weights = sm_weight_arrays[arr_index]; + // scale = 2^sm_weight_log2_scale + const int log2_scale = sm_weight_log2_scale; + const uint16_t scale = (1 << sm_weight_log2_scale); + sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst)); + + int r; + for (r = 0; r < bs; r++) { + int c; + for (c = 0; c < bs; ++c) { + const uint16_t pixels[] = { above[c], below_pred }; + const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] }; + uint32_t this_pred = 0; + assert(scale >= sm_weights[r]); + int i; + for (i = 0; i < 2; ++i) { + this_pred += weights[i] * pixels[i]; + } + dst[c] = clip_pixel_highbd(divide_round(this_pred, log2_scale), bd); + } + dst += stride; + } +} + +static INLINE void highbd_smooth_h_predictor(uint16_t *dst, ptrdiff_t stride, + int bs, const uint16_t *above, + const uint16_t *left, int bd) { + const uint16_t right_pred = above[bs - 1]; // estimated by top-right pixel + const int arr_index = get_msb(bs) - 1; + assert(arr_index >= 0); + assert(arr_index < NUM_BLOCK_DIMS); + const uint8_t *const sm_weights = sm_weight_arrays[arr_index]; + // scale = 2^sm_weight_log2_scale + const int log2_scale = sm_weight_log2_scale; + const uint16_t scale = (1 << sm_weight_log2_scale); + sm_weights_sanity_checks(sm_weights, scale, log2_scale + sizeof(*dst)); + + int r; + for (r = 0; r < bs; r++) { + int c; + for (c = 0; c < bs; ++c) { + const uint16_t pixels[] = { left[r], right_pred }; + const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] }; + uint32_t this_pred = 0; + assert(scale >= sm_weights[c]); + int i; + for (i = 0; i < 2; ++i) { + this_pred += weights[i] * pixels[i]; + } + dst[c] = clip_pixel_highbd(divide_round(this_pred, log2_scale), bd); + } + dst += stride; + } +} + #else static INLINE void highbd_tm_predictor(uint16_t *dst, ptrdiff_t stride, int bs, const uint16_t *above, @@ -958,8 +1084,12 @@ intra_pred_allsizes(v) intra_pred_allsizes(h) #if CONFIG_ALT_INTRA -intra_pred_allsizes(paeth) intra_pred_allsizes(smooth) +#if CONFIG_SMOOTH_HV +intra_pred_allsizes(smooth_v) +intra_pred_allsizes(smooth_h) +#endif // CONFIG_SMOOTH_HV +intra_pred_allsizes(paeth) #else intra_pred_allsizes(tm) #endif // CONFIG_ALT_INTRA
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c index 5308717..da914cf 100644 --- a/av1/common/av1_loopfilter.c +++ b/av1/common/av1_loopfilter.c
@@ -267,7 +267,10 @@ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // INTRA_MODES #if CONFIG_ALT_INTRA 0, -#endif +#if CONFIG_SMOOTH_HV + 0, 0, +#endif // CONFIG_SMOOTH_HV +#endif // CONFIG_ALT_INTRA 1, 1, 0, 1, // INTER_MODES (ZEROMV == 0) #if CONFIG_EXT_INTER 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 // INTER_COMPOUND_MODES (ZERO_ZEROMV == 0)
diff --git a/av1/common/blockd.h b/av1/common/blockd.h index 72a488c..886fb9f 100644 --- a/av1/common/blockd.h +++ b/av1/common/blockd.h
@@ -703,6 +703,10 @@ ADST_DCT, // D63 #if CONFIG_ALT_INTRA ADST_ADST, // SMOOTH +#if CONFIG_SMOOTH_HV + ADST_DCT, // SMOOTH_V + DCT_ADST, // SMOOTH_H +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA ADST_ADST, // TM };
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index 980fa23..743b489 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -294,6 +294,258 @@ #endif // CONFIG_LV_MAP #if CONFIG_ALT_INTRA +#if CONFIG_SMOOTH_HV +const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = { + { + // above = dc + { 111, 28, 44, 99, 166, 154, 28, 28, 27, 45, 134, 109 }, // left = dc + { 82, 31, 102, 75, 117, 135, 33, 34, 21, 31, 134, 149 }, // left = v + { 40, 29, 14, 161, 235, 180, 14, 12, 34, 52, 128, 69 }, // left = h + { 98, 19, 36, 74, 137, 153, 49, 35, 25, 61, 137, 106 }, // left = d45 + { 59, 11, 25, 128, 47, 162, 29, 20, 53, 38, 143, 117 }, // left = d135 + { 86, 20, 51, 160, 39, 101, 69, 101, 112, 154, 158, 145 }, // left = d117 + { 49, 10, 17, 112, 98, 206, 16, 11, 104, 44, 138, 88 }, // left = d153 + { 64, 14, 22, 80, 170, 168, 19, 15, 26, 101, 137, 90 }, // left = d207 + { 84, 21, 31, 62, 110, 135, 40, 57, 22, 45, 143, 130 }, // left = d63 + { 58, 16, 31, 60, 154, 225, 17, 23, 19, 30, 138, 113 }, // left = smooth + { 51, 19, 46, 64, 148, 209, 18, 28, 17, 25, 137, + 149 }, // left = smooth_v + { 68, 15, 26, 61, 175, 233, 17, 17, 19, 29, 135, 76 }, // left = smooth_h + { 49, 61, 41, 113, 203, 158, 26, 26, 29, 55, 123, 99 }, // left = tm + }, + { + // above = v + { 31, 26, 135, 81, 100, 82, 13, 40, 14, 18, 131, 182 }, // left = dc + { 24, 27, 175, 53, 93, 85, 17, 40, 5, 14, 119, 195 }, // left = v + { 20, 34, 71, 97, 209, 133, 15, 24, 14, 28, 138, 129 }, // left = h + { 54, 19, 88, 55, 102, 103, 39, 45, 8, 44, 134, 167 }, // left = d45 + { 23, 16, 93, 101, 33, 119, 23, 41, 26, 22, 136, 168 }, // left = d135 + { 34, 17, 130, 149, 30, 72, 43, 129, 66, 100, 143, 192 }, // left = d117 + { 23, 17, 83, 85, 63, 158, 16, 30, 64, 28, 145, 146 }, // left = d153 + { 33, 17, 85, 60, 136, 115, 21, 32, 15, 59, 134, 155 }, // left = d207 + { 40, 20, 103, 53, 66, 84, 26, 72, 9, 29, 134, 177 }, // left = d63 + { 22, 18, 112, 41, 138, 192, 12, 30, 9, 16, 131, 178 }, // left = smooth + { 20, 20, 125, 39, 137, 179, 11, 28, 7, 12, 123, + 199 }, // left = smooth_v + { 26, 19, 111, 46, 160, 201, 13, 29, 8, 17, 132, + 156 }, // left = smooth_h + { 20, 35, 138, 62, 162, 107, 21, 36, 9, 24, 125, 181 }, // left = tm + }, + { + // above = h + { 89, 27, 21, 136, 218, 175, 20, 19, 35, 56, 134, 96 }, // left = dc + { 63, 37, 67, 117, 190, 160, 22, 29, 20, 45, 137, 137 }, // left = v + { 34, 23, 7, 177, 245, 207, 13, 9, 30, 73, 125, 63 }, // left = h + { 84, 29, 20, 83, 184, 182, 38, 25, 34, 86, 134, 106 }, // left = d45 + { 65, 19, 19, 119, 109, 177, 27, 19, 56, 56, 141, 103 }, // left = d135 + { 88, 25, 46, 152, 102, 130, 70, 61, 96, 157, 130, 102 }, // left = d117 + { 51, 11, 10, 108, 168, 216, 14, 9, 93, 58, 132, 79 }, // left = d153 + { 53, 15, 9, 103, 224, 192, 20, 13, 23, 122, 135, 80 }, // left = d207 + { 64, 30, 19, 90, 171, 176, 24, 44, 23, 56, 144, 121 }, // left = d63 + { 46, 20, 17, 94, 214, 234, 14, 15, 23, 38, 132, 98 }, // left = smooth + { 41, 27, 22, 102, 214, 229, 13, 17, 18, 35, 133, + 137 }, // left = smooth_v + { 52, 17, 14, 95, 224, 241, 14, 11, 24, 38, 133, 62 }, // left = smooth_h + { 35, 43, 21, 148, 234, 188, 22, 17, 27, 47, 133, 100 }, // left = tm + }, + { + // above = d45 + { 80, 14, 31, 74, 129, 146, 52, 50, 29, 50, 138, 110 }, // left = dc + { 59, 16, 84, 52, 106, 121, 63, 60, 20, 40, 143, 150 }, // left = v + { 41, 19, 16, 118, 216, 168, 36, 27, 24, 62, 136, 69 }, // left = h + { 86, 11, 11, 37, 168, 158, 113, 53, 8, 99, 140, 121 }, // left = d45 + { 49, 8, 24, 94, 49, 139, 48, 45, 40, 53, 134, 131 }, // left = d135 + { 58, 11, 36, 127, 45, 97, 90, 143, 91, 180, 153, 146 }, // left = d117 + { 39, 9, 14, 93, 97, 187, 32, 26, 66, 57, 134, 106 }, // left = d153 + { 75, 8, 26, 68, 135, 154, 51, 30, 17, 113, 144, 83 }, // left = d207 + { 77, 13, 18, 46, 146, 143, 81, 102, 18, 59, 142, 143 }, // left = d63 + { 49, 13, 31, 47, 142, 218, 46, 42, 19, 46, 146, 120 }, // left = smooth + { 46, 15, 35, 47, 132, 206, 47, 50, 18, 37, 143, + 147 }, // left = smooth_v + { 54, 11, 25, 54, 157, 229, 43, 34, 20, 44, 136, 99 }, // left = smooth_h + { 40, 26, 41, 72, 176, 145, 78, 51, 27, 59, 133, 121 }, // left = tm + }, + { + // above = d135 + { 57, 10, 21, 118, 61, 178, 16, 20, 65, 52, 145, 125 }, // left = dc + { 56, 15, 48, 107, 58, 153, 20, 32, 42, 35, 143, 162 }, // left = v + { 28, 19, 8, 132, 172, 184, 14, 14, 45, 55, 140, 79 }, // left = h + { 58, 13, 15, 73, 66, 177, 61, 24, 30, 72, 143, 122 }, // left = d45 + { 35, 5, 13, 150, 20, 187, 19, 21, 66, 38, 144, 130 }, // left = d135 + { 57, 9, 30, 173, 28, 133, 38, 71, 156, 140, 156, 173 }, // left = d117 + { 30, 6, 9, 121, 54, 207, 16, 20, 110, 62, 151, 94 }, // left = d153 + { 51, 9, 15, 88, 96, 188, 22, 18, 40, 95, 140, 98 }, // left = d207 + { 56, 12, 21, 82, 53, 140, 30, 37, 32, 47, 145, 149 }, // left = d63 + { 43, 12, 21, 83, 84, 222, 14, 23, 31, 35, 143, 127 }, // left = smooth + { 41, 12, 25, 81, 75, 210, 16, 29, 29, 29, 141, 154 }, // left = smooth_v + { 42, 11, 19, 81, 109, 226, 17, 20, 34, 36, 143, + 110 }, // left = smooth_h + { 36, 26, 27, 107, 132, 151, 24, 28, 38, 46, 140, 127 }, // left = tm + }, + { + // above = d117 + { 52, 15, 58, 191, 40, 95, 38, 78, 98, 140, 152, 175 }, // left = dc + { 50, 16, 85, 186, 28, 84, 41, 105, 65, 119, 158, 206 }, // left = v + { 30, 23, 30, 179, 122, 124, 38, 47, 68, 140, 161, 102 }, // left = h + { 75, 15, 47, 120, 49, 127, 63, 86, 54, 204, 175, 185 }, // left = d45 + { 36, 9, 37, 198, 15, 120, 56, 78, 104, 151, 155, 165 }, // left = d135 + { 38, 9, 54, 198, 12, 75, 47, 92, 71, 130, 170, 201 }, // left = d117 + { 31, 13, 33, 167, 46, 144, 32, 59, 124, 151, 162, 128 }, // left = d153 + { 47, 15, 43, 123, 70, 129, 49, 72, 48, 175, 163, 125 }, // left = d207 + { 61, 19, 62, 141, 35, 116, 55, 117, 51, 162, 150, 201 }, // left = d63 + { 22, 17, 34, 105, 41, 101, 20, 34, 26, 39, 146, 157 }, // left = smooth + { 19, 14, 37, 116, 33, 91, 23, 38, 17, 36, 137, 178 }, // left = smooth_v + { 25, 17, 35, 102, 59, 118, 23, 28, 30, 43, 147, + 148 }, // left = smooth_h + { 35, 24, 62, 164, 95, 103, 47, 94, 65, 115, 186, 128 }, // left = tm + }, + { + // above = d153 + { 75, 12, 17, 101, 150, 177, 14, 13, 101, 55, 141, 104 }, // left = dc + { 69, 19, 46, 91, 133, 167, 19, 22, 72, 41, 133, 143 }, // left = v + { 30, 12, 6, 132, 209, 214, 10, 8, 75, 78, 137, 70 }, // left = h + { 77, 16, 12, 85, 120, 203, 35, 17, 69, 66, 137, 96 }, // left = d45 + { 51, 8, 11, 119, 58, 178, 20, 17, 90, 51, 145, 92 }, // left = d135 + { 76, 8, 24, 144, 48, 128, 37, 46, 173, 153, 159, 111 }, // left = d117 + { 40, 6, 6, 87, 112, 213, 7, 7, 152, 54, 141, 84 }, // left = d153 + { 46, 6, 7, 78, 161, 195, 15, 11, 66, 97, 137, 83 }, // left = d207 + { 81, 17, 17, 82, 97, 187, 26, 34, 54, 60, 154, 128 }, // left = d63 + { 47, 10, 16, 74, 138, 233, 13, 17, 59, 42, 143, 106 }, // left = smooth + { 45, 12, 17, 76, 141, 227, 14, 16, 56, 43, 141, + 135 }, // left = smooth_v + { 55, 10, 13, 69, 162, 238, 11, 11, 59, 45, 133, 73 }, // left = smooth_h + { 44, 23, 19, 110, 176, 165, 16, 19, 68, 59, 131, 89 }, // left = tm + }, + { + // above = d207 + { 86, 15, 26, 87, 166, 178, 27, 25, 27, 75, 145, 108 }, // left = dc + { 71, 27, 62, 70, 126, 142, 29, 34, 17, 69, 141, 144 }, // left = v + { 48, 21, 11, 130, 231, 196, 24, 19, 27, 82, 133, 72 }, // left = h + { 82, 21, 14, 54, 128, 188, 55, 38, 19, 111, 148, 119 }, // left = d45 + { 57, 11, 17, 78, 83, 171, 43, 31, 37, 58, 143, 100 }, // left = d135 + { 76, 16, 44, 115, 77, 130, 78, 79, 82, 178, 132, 123 }, // left = d117 + { 50, 12, 11, 82, 133, 207, 27, 20, 67, 79, 138, 87 }, // left = d153 + { 77, 9, 13, 44, 174, 169, 26, 13, 9, 167, 135, 90 }, // left = d207 + { 70, 16, 18, 57, 117, 167, 43, 46, 17, 70, 150, 116 }, // left = d63 + { 56, 13, 18, 60, 170, 236, 24, 19, 18, 59, 139, 105 }, // left = smooth + { 50, 17, 26, 60, 165, 234, 24, 20, 15, 53, 134, + 136 }, // left = smooth_v + { 57, 11, 16, 62, 188, 239, 23, 15, 18, 57, 134, 79 }, // left = smooth_h + { 49, 31, 24, 78, 194, 184, 45, 27, 19, 81, 138, 102 }, // left = tm + }, + { + // above = d63 + { 53, 13, 46, 61, 109, 116, 40, 83, 19, 31, 141, 150 }, // left = dc + { 45, 14, 75, 40, 79, 102, 48, 118, 14, 23, 138, 174 }, // left = v + { 34, 14, 24, 98, 214, 128, 33, 54, 18, 51, 138, 103 }, // left = h + { 74, 11, 26, 37, 127, 154, 75, 89, 11, 61, 146, 125 }, // left = d45 + { 35, 9, 26, 68, 55, 128, 53, 74, 21, 33, 138, 132 }, // left = d135 + { 47, 9, 55, 108, 39, 105, 64, 193, 71, 127, 141, 193 }, // left = d117 + { 35, 9, 22, 66, 79, 172, 34, 64, 57, 44, 139, 112 }, // left = d153 + { 54, 7, 26, 48, 136, 139, 48, 60, 15, 82, 144, 116 }, // left = d207 + { 60, 9, 30, 25, 106, 127, 64, 143, 14, 42, 140, 165 }, // left = d63 + { 39, 11, 35, 40, 136, 212, 34, 67, 12, 28, 145, 150 }, // left = smooth + { 37, 12, 45, 36, 128, 190, 34, 80, 8, 23, 138, 165 }, // left = smooth_v + { 45, 9, 37, 46, 152, 196, 36, 58, 14, 29, 145, 127 }, // left = smooth_h + { 35, 17, 53, 48, 159, 101, 53, 104, 15, 36, 132, 152 }, // left = tm + }, + { + // above = smooth + { 58, 12, 33, 66, 168, 219, 13, 21, 16, 27, 137, 113 }, // left = dc + { 42, 20, 78, 51, 139, 216, 16, 27, 11, 18, 134, 160 }, // left = v + { 28, 17, 16, 118, 236, 231, 13, 14, 16, 41, 132, 77 }, // left = h + { 58, 12, 23, 47, 138, 238, 39, 31, 16, 63, 142, 125 }, // left = d45 + { 44, 9, 27, 76, 80, 220, 21, 27, 27, 30, 142, 122 }, // left = d135 + { 30, 13, 38, 96, 47, 111, 26, 40, 31, 40, 146, 146 }, // left = d117 + { 42, 9, 19, 70, 127, 234, 15, 18, 53, 39, 138, 97 }, // left = d153 + { 44, 10, 20, 57, 186, 229, 15, 18, 15, 80, 141, 97 }, // left = d207 + { 51, 13, 33, 46, 123, 225, 23, 46, 15, 34, 143, 132 }, // left = d63 + { 42, 11, 29, 49, 154, 226, 13, 20, 12, 27, 139, 117 }, // left = smooth + { 37, 13, 40, 48, 146, 217, 13, 23, 10, 24, 136, + 149 }, // left = smooth_v + { 45, 10, 24, 55, 176, 230, 11, 16, 14, 26, 136, 86 }, // left = smooth_h + { 32, 23, 43, 78, 204, 225, 18, 23, 15, 30, 134, 117 }, // left = tm + }, + { + // above = smooth_v + { 62, 13, 47, 68, 165, 204, 14, 24, 14, 22, 137, 146 }, // left = dc + { 42, 18, 97, 43, 138, 210, 12, 28, 8, 14, 127, 184 }, // left = v + { 30, 19, 21, 128, 238, 231, 13, 13, 17, 38, 138, 103 }, // left = h + { 66, 12, 31, 50, 132, 228, 37, 34, 14, 56, 142, 135 }, // left = d45 + { 45, 9, 33, 75, 73, 216, 20, 33, 25, 25, 146, 153 }, // left = d135 + { 31, 13, 48, 97, 46, 82, 26, 55, 31, 25, 140, 179 }, // left = d117 + { 47, 10, 26, 67, 109, 229, 15, 23, 52, 34, 136, 133 }, // left = d153 + { 49, 9, 25, 58, 174, 206, 14, 20, 13, 83, 144, 121 }, // left = d207 + { 54, 15, 42, 47, 120, 209, 22, 55, 13, 25, 139, 162 }, // left = d63 + { 41, 11, 43, 50, 146, 216, 11, 21, 11, 23, 136, 151 }, // left = smooth + { 37, 12, 58, 48, 148, 202, 11, 24, 8, 19, 134, 178 }, // left = smooth_v + { 47, 11, 39, 54, 169, 212, 12, 21, 14, 22, 144, + 115 }, // left = smooth_h + { 36, 25, 57, 80, 215, 211, 16, 28, 11, 25, 130, 154 }, // left = tm + }, + { + // above = smooth_h + { 57, 12, 28, 68, 186, 224, 11, 17, 20, 31, 133, 80 }, // left = dc + { 42, 21, 86, 51, 159, 221, 14, 25, 10, 19, 134, 131 }, // left = v + { 25, 17, 13, 123, 240, 240, 12, 10, 18, 42, 126, 56 }, // left = h + { 55, 11, 25, 47, 146, 238, 36, 32, 18, 67, 144, 99 }, // left = d45 + { 47, 11, 23, 75, 95, 222, 20, 24, 28, 36, 143, 103 }, // left = d135 + { 30, 14, 34, 92, 59, 101, 27, 44, 31, 41, 142, 129 }, // left = d117 + { 42, 11, 17, 73, 158, 234, 14, 14, 59, 46, 138, 67 }, // left = d153 + { 45, 10, 15, 64, 194, 228, 14, 15, 17, 78, 133, 73 }, // left = d207 + { 52, 14, 29, 45, 138, 227, 25, 43, 16, 36, 136, 119 }, // left = d63 + { 42, 12, 23, 51, 173, 235, 12, 16, 13, 28, 134, 95 }, // left = smooth + { 37, 16, 34, 52, 161, 228, 12, 19, 10, 28, 137, + 123 }, // left = smooth_v + { 45, 9, 18, 58, 200, 240, 10, 13, 13, 27, 129, 61 }, // left = smooth_h + { 32, 26, 44, 82, 217, 222, 19, 23, 16, 34, 134, 99 }, // left = tm + }, + { + // above = tm + { 51, 42, 80, 104, 178, 121, 20, 37, 25, 42, 136, 150 }, // left = dc + { 35, 38, 132, 73, 152, 132, 21, 36, 10, 32, 127, 174 }, // left = v + { 21, 34, 26, 149, 241, 165, 17, 15, 19, 60, 132, 95 }, // left = h + { 64, 20, 36, 67, 169, 142, 45, 30, 16, 86, 145, 134 }, // left = d45 + { 40, 23, 51, 96, 102, 149, 25, 33, 34, 43, 143, 125 }, // left = d135 + { 58, 29, 93, 140, 93, 89, 51, 107, 64, 146, 145, 154 }, // left = d117 + { 33, 23, 44, 95, 139, 209, 12, 20, 76, 56, 131, 104 }, // left = d153 + { 40, 21, 28, 79, 210, 165, 21, 15, 16, 134, 138, 108 }, // left = d207 + { 45, 24, 58, 62, 132, 127, 32, 58, 15, 51, 143, 152 }, // left = d63 + { 33, 27, 53, 71, 195, 223, 14, 24, 12, 36, 136, 135 }, // left = smooth + { 30, 29, 62, 68, 201, 217, 14, 24, 11, 31, 132, + 162 }, // left = smooth_v + { 37, 25, 50, 76, 204, 212, 12, 18, 15, 38, 134, + 106 }, // left = smooth_h + { 28, 53, 64, 100, 203, 162, 26, 29, 15, 52, 127, 138 }, // left = tm + }, +}; + +static const aom_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = { + { 56, 13, 37, 112, 91, 147, 66, 55, 72, 82, 124, 121 }, // block_size < 8x8 + { 92, 120, 47, 89, 120, 139, 18, 38, 32, 51, 146, + 124 }, // block_size < 16x16 + { 115, 102, 41, 69, 170, 142, 8, 23, 13, 23, 122, + 110 }, // block_size < 32x32 + { 148, 157, 47, 62, 238, 64, 7, 3, 1, 3, 74, 87 }, // block_size >= 32x32 +}; + +static const aom_prob default_uv_probs[INTRA_MODES][INTRA_MODES - 1] = { + { 184, 3, 67, 135, 194, 108, 33, 43, 40, 86, 121, 118 }, // y = dc + { 23, 3, 204, 105, 117, 53, 14, 68, 13, 19, 112, 86 }, // y = v + { 34, 3, 7, 220, 249, 142, 11, 13, 59, 124, 119, 131 }, // y = h + { 138, 3, 45, 51, 162, 99, 110, 107, 21, 113, 119, 111 }, // y = d45 + { 130, 2, 28, 163, 52, 163, 16, 25, 94, 46, 127, 118 }, // y = d135 + { 109, 3, 55, 218, 20, 43, 34, 71, 74, 68, 108, 128 }, // y = d117 + { 124, 1, 17, 124, 151, 197, 8, 9, 184, 71, 123, 101 }, // y = d153 + { 127, 2, 16, 110, 225, 134, 28, 19, 18, 190, 124, 132 }, // y = d207 + { 115, 3, 65, 46, 134, 81, 37, 170, 20, 57, 122, 106 }, // y = d63 + { 131, 4, 52, 71, 177, 205, 17, 27, 20, 41, 128, 118 }, // y = smooth + { 131, 5, 65, 70, 182, 196, 17, 30, 17, 35, 123, 154 }, // y = smooth_v + { 137, 4, 43, 78, 196, 202, 16, 21, 24, 48, 123, 91 }, // y = smooth_h + { 137, 12, 92, 142, 217, 71, 14, 45, 29, 62, 108, 109 }, // y = tm +}; + +#else // !CONFIG_SMOOTH_HV const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = { { @@ -473,7 +725,9 @@ { 185, 7, 113, 171, 203, 57, 18, 69, 49, 104 }, // y = paeth }; -#else +#endif // CONFIG_SMOOTH_HV + +#else // !CONFIG_ALT_INTRA const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = { { @@ -956,6 +1210,34 @@ #endif #if CONFIG_ALT_INTRA +#if CONFIG_SMOOTH_HV +const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = { + -DC_PRED, + 2, /* 0 = DC_NODE */ + -TM_PRED, + 4, /* 1 = TM_NODE */ + -V_PRED, + 6, /* 2 = V_NODE */ + 8, + 12, /* 3 = COM_NODE */ + -H_PRED, + 10, /* 4 = H_NODE */ + -D135_PRED, + -D117_PRED, /* 5 = D135_NODE */ + -D45_PRED, + 14, /* 6 = D45_NODE */ + -D63_PRED, + 16, /* 7 = D63_NODE */ + -D153_PRED, + 18, /* 8 = D153_NODE */ + -D207_PRED, + 20, /* 9 = D207_NODE */ + -SMOOTH_PRED, + 22, /* 10 = SMOOTH_NODE */ + -SMOOTH_V_PRED, + -SMOOTH_H_PRED /* 11 = SMOOTH_V_NODE */ +}; +#else const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = { -DC_PRED, 2, /* 0 = DC_NODE */ -TM_PRED, 4, /* 1 = TM_NODE */ @@ -968,6 +1250,7 @@ -D153_PRED, 18, /* 8 = D153_NODE */ -D207_PRED, -SMOOTH_PRED, /* 9 = D207_NODE */ }; +#endif // CONFIG_SMOOTH_HV #else const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = { -DC_PRED, 2, /* 0 = DC_NODE */ @@ -1989,6 +2272,83 @@ }; #if CONFIG_ALT_INTRA +#if CONFIG_SMOOTH_HV +static const aom_cdf_prob + default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)] = { + { AOM_ICDF(7168), AOM_ICDF(8468), AOM_ICDF(11980), AOM_ICDF(15213), + AOM_ICDF(18579), AOM_ICDF(21075), AOM_ICDF(24090), AOM_ICDF(25954), + AOM_ICDF(27870), AOM_ICDF(29439), AOM_ICDF(31051), AOM_ICDF(31863), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(11776), AOM_ICDF(21616), AOM_ICDF(23663), AOM_ICDF(25147), + AOM_ICDF(26060), AOM_ICDF(26828), AOM_ICDF(27246), AOM_ICDF(28066), + AOM_ICDF(28654), AOM_ICDF(29474), AOM_ICDF(31353), AOM_ICDF(32038), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(14720), AOM_ICDF(21911), AOM_ICDF(23650), AOM_ICDF(25282), + AOM_ICDF(25740), AOM_ICDF(26108), AOM_ICDF(26316), AOM_ICDF(26896), + AOM_ICDF(27194), AOM_ICDF(27695), AOM_ICDF(30113), AOM_ICDF(31254), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(18944), AOM_ICDF(27422), AOM_ICDF(28403), AOM_ICDF(29386), + AOM_ICDF(29405), AOM_ICDF(29460), AOM_ICDF(29550), AOM_ICDF(29588), + AOM_ICDF(29600), AOM_ICDF(29637), AOM_ICDF(30542), AOM_ICDF(31298), + AOM_ICDF(32768), 0 }, + }; + +static const aom_cdf_prob + default_uv_mode_cdf[INTRA_MODES][CDF_SIZE(INTRA_MODES)] = { + { AOM_ICDF(23552), AOM_ICDF(23660), AOM_ICDF(26044), AOM_ICDF(28731), + AOM_ICDF(29093), AOM_ICDF(29590), AOM_ICDF(30000), AOM_ICDF(30465), + AOM_ICDF(30825), AOM_ICDF(31478), AOM_ICDF(32088), AOM_ICDF(32401), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2944), AOM_ICDF(3294), AOM_ICDF(26781), AOM_ICDF(27903), + AOM_ICDF(28179), AOM_ICDF(29237), AOM_ICDF(29430), AOM_ICDF(30317), + AOM_ICDF(30441), AOM_ICDF(30614), AOM_ICDF(31556), AOM_ICDF(31963), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4352), AOM_ICDF(4685), AOM_ICDF(5453), AOM_ICDF(28285), + AOM_ICDF(28641), AOM_ICDF(28927), AOM_ICDF(29092), AOM_ICDF(29279), + AOM_ICDF(30083), AOM_ICDF(31384), AOM_ICDF(32027), AOM_ICDF(32406), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(17664), AOM_ICDF(17841), AOM_ICDF(20465), AOM_ICDF(22016), + AOM_ICDF(22364), AOM_ICDF(22916), AOM_ICDF(27149), AOM_ICDF(29498), + AOM_ICDF(29766), AOM_ICDF(31091), AOM_ICDF(31871), AOM_ICDF(32260), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(16640), AOM_ICDF(16766), AOM_ICDF(18516), AOM_ICDF(20359), + AOM_ICDF(24964), AOM_ICDF(27591), AOM_ICDF(27915), AOM_ICDF(28389), + AOM_ICDF(29997), AOM_ICDF(30495), AOM_ICDF(31623), AOM_ICDF(32151), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(13952), AOM_ICDF(14173), AOM_ICDF(18168), AOM_ICDF(19139), + AOM_ICDF(21064), AOM_ICDF(30601), AOM_ICDF(30889), AOM_ICDF(31410), + AOM_ICDF(31803), AOM_ICDF(32059), AOM_ICDF(32358), AOM_ICDF(32563), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(15872), AOM_ICDF(15938), AOM_ICDF(17056), AOM_ICDF(21545), + AOM_ICDF(23947), AOM_ICDF(24667), AOM_ICDF(24920), AOM_ICDF(25196), + AOM_ICDF(30638), AOM_ICDF(31229), AOM_ICDF(31968), AOM_ICDF(32284), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(16256), AOM_ICDF(16385), AOM_ICDF(17409), AOM_ICDF(23210), + AOM_ICDF(23628), AOM_ICDF(24009), AOM_ICDF(24967), AOM_ICDF(25546), + AOM_ICDF(26054), AOM_ICDF(31037), AOM_ICDF(31875), AOM_ICDF(32335), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(14720), AOM_ICDF(14932), AOM_ICDF(19461), AOM_ICDF(20713), + AOM_ICDF(21073), AOM_ICDF(21852), AOM_ICDF(23430), AOM_ICDF(29631), + AOM_ICDF(29876), AOM_ICDF(30520), AOM_ICDF(31591), AOM_ICDF(32078), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(16768), AOM_ICDF(17018), AOM_ICDF(20217), AOM_ICDF(22624), + AOM_ICDF(23484), AOM_ICDF(23698), AOM_ICDF(24300), AOM_ICDF(25193), + AOM_ICDF(25785), AOM_ICDF(26903), AOM_ICDF(29835), AOM_ICDF(31187), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(16768), AOM_ICDF(17081), AOM_ICDF(21064), AOM_ICDF(23339), + AOM_ICDF(24047), AOM_ICDF(24264), AOM_ICDF(24829), AOM_ICDF(25759), + AOM_ICDF(26224), AOM_ICDF(27119), AOM_ICDF(29833), AOM_ICDF(31599), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(17536), AOM_ICDF(17774), AOM_ICDF(20293), AOM_ICDF(23203), + AOM_ICDF(23906), AOM_ICDF(24094), AOM_ICDF(24636), AOM_ICDF(25303), + AOM_ICDF(26003), AOM_ICDF(27271), AOM_ICDF(29912), AOM_ICDF(30927), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(17536), AOM_ICDF(18250), AOM_ICDF(23467), AOM_ICDF(27840), + AOM_ICDF(28058), AOM_ICDF(28626), AOM_ICDF(28853), AOM_ICDF(29541), + AOM_ICDF(29907), AOM_ICDF(30600), AOM_ICDF(31515), AOM_ICDF(32049), + AOM_ICDF(32768), 0 }, + }; +#else // !CONFIG_SMOOTH_HV static const aom_cdf_prob default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)] = { { AOM_ICDF(11264), AOM_ICDF(12608), AOM_ICDF(16309), AOM_ICDF(21086), @@ -2041,6 +2401,7 @@ AOM_ICDF(30598), AOM_ICDF(31129), AOM_ICDF(31244), AOM_ICDF(31655), AOM_ICDF(31868), AOM_ICDF(32234), AOM_ICDF(32768), 0 }, }; +#endif // CONFIG_SMOOTH_HV #else // !CONFIG_ALT_INTRA static const aom_cdf_prob default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)] = { @@ -2583,6 +2944,710 @@ const aom_cdf_prob av1_kf_y_mode_cdf[INTRA_MODES][INTRA_MODES][CDF_SIZE(INTRA_MODES)] = { #if CONFIG_ALT_INTRA +#if CONFIG_SMOOTH_HV + { + { AOM_ICDF(14208), AOM_ICDF(16238), AOM_ICDF(19079), AOM_ICDF(22512), + AOM_ICDF(23632), AOM_ICDF(24373), AOM_ICDF(25291), AOM_ICDF(26109), + AOM_ICDF(26811), AOM_ICDF(27858), AOM_ICDF(30428), AOM_ICDF(31424), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(10496), AOM_ICDF(13193), AOM_ICDF(20992), AOM_ICDF(22569), + AOM_ICDF(23557), AOM_ICDF(24442), AOM_ICDF(25515), AOM_ICDF(26478), + AOM_ICDF(26994), AOM_ICDF(27693), AOM_ICDF(30349), AOM_ICDF(31757), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5120), AOM_ICDF(8252), AOM_ICDF(9593), AOM_ICDF(22972), + AOM_ICDF(23813), AOM_ICDF(24168), AOM_ICDF(24638), AOM_ICDF(25019), + AOM_ICDF(26048), AOM_ICDF(27413), AOM_ICDF(30090), AOM_ICDF(30812), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(12544), AOM_ICDF(14045), AOM_ICDF(16678), AOM_ICDF(19167), + AOM_ICDF(20459), AOM_ICDF(21329), AOM_ICDF(23518), AOM_ICDF(24783), + AOM_ICDF(25563), AOM_ICDF(27280), AOM_ICDF(30217), AOM_ICDF(31273), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7552), AOM_ICDF(8636), AOM_ICDF(10993), AOM_ICDF(12992), + AOM_ICDF(18616), AOM_ICDF(21880), AOM_ICDF(23113), AOM_ICDF(23867), + AOM_ICDF(25710), AOM_ICDF(26758), AOM_ICDF(30115), AOM_ICDF(31328), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(11008), AOM_ICDF(12708), AOM_ICDF(16704), AOM_ICDF(18234), + AOM_ICDF(21591), AOM_ICDF(26744), AOM_ICDF(28368), AOM_ICDF(30104), + AOM_ICDF(31270), AOM_ICDF(32171), AOM_ICDF(32539), AOM_ICDF(32669), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6272), AOM_ICDF(7307), AOM_ICDF(8998), AOM_ICDF(12979), + AOM_ICDF(18143), AOM_ICDF(19397), AOM_ICDF(20233), AOM_ICDF(20772), + AOM_ICDF(25645), AOM_ICDF(26869), AOM_ICDF(30049), AOM_ICDF(30984), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8192), AOM_ICDF(9536), AOM_ICDF(11533), AOM_ICDF(15940), + AOM_ICDF(17403), AOM_ICDF(18169), AOM_ICDF(19253), AOM_ICDF(20045), + AOM_ICDF(21337), AOM_ICDF(25847), AOM_ICDF(29551), AOM_ICDF(30682), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(10752), AOM_ICDF(12558), AOM_ICDF(15005), AOM_ICDF(16854), + AOM_ICDF(18148), AOM_ICDF(19307), AOM_ICDF(21410), AOM_ICDF(23939), + AOM_ICDF(24698), AOM_ICDF(26117), AOM_ICDF(29832), AOM_ICDF(31323), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7424), AOM_ICDF(9008), AOM_ICDF(11885), AOM_ICDF(14829), + AOM_ICDF(16543), AOM_ICDF(16779), AOM_ICDF(17841), AOM_ICDF(19182), + AOM_ICDF(20190), AOM_ICDF(21664), AOM_ICDF(27650), AOM_ICDF(29909), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6528), AOM_ICDF(8476), AOM_ICDF(12841), AOM_ICDF(15721), + AOM_ICDF(17437), AOM_ICDF(17823), AOM_ICDF(18874), AOM_ICDF(20394), + AOM_ICDF(21216), AOM_ICDF(22344), AOM_ICDF(27922), AOM_ICDF(30743), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8704), AOM_ICDF(10114), AOM_ICDF(12415), AOM_ICDF(15730), + AOM_ICDF(17127), AOM_ICDF(17265), AOM_ICDF(18294), AOM_ICDF(19255), + AOM_ICDF(20258), AOM_ICDF(21675), AOM_ICDF(27525), AOM_ICDF(29082), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6272), AOM_ICDF(12586), AOM_ICDF(15818), AOM_ICDF(21751), + AOM_ICDF(22707), AOM_ICDF(23300), AOM_ICDF(24262), AOM_ICDF(25126), + AOM_ICDF(25992), AOM_ICDF(27448), AOM_ICDF(30004), AOM_ICDF(31073), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(3968), AOM_ICDF(6893), AOM_ICDF(20538), AOM_ICDF(22050), + AOM_ICDF(22805), AOM_ICDF(24408), AOM_ICDF(24833), AOM_ICDF(26073), + AOM_ICDF(26439), AOM_ICDF(26884), AOM_ICDF(29895), AOM_ICDF(31938), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3072), AOM_ICDF(6204), AOM_ICDF(24363), AOM_ICDF(24995), + AOM_ICDF(25363), AOM_ICDF(26103), AOM_ICDF(26546), AOM_ICDF(27518), + AOM_ICDF(27621), AOM_ICDF(27902), AOM_ICDF(30164), AOM_ICDF(32148), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2560), AOM_ICDF(6572), AOM_ICDF(13837), AOM_ICDF(19693), + AOM_ICDF(20377), AOM_ICDF(21010), AOM_ICDF(21699), AOM_ICDF(22737), + AOM_ICDF(23286), AOM_ICDF(24323), AOM_ICDF(28875), AOM_ICDF(30837), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6912), AOM_ICDF(8831), AOM_ICDF(17059), AOM_ICDF(18404), + AOM_ICDF(19221), AOM_ICDF(20434), AOM_ICDF(22313), AOM_ICDF(24151), + AOM_ICDF(24420), AOM_ICDF(25855), AOM_ICDF(29474), AOM_ICDF(31623), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2944), AOM_ICDF(4808), AOM_ICDF(14965), AOM_ICDF(15870), + AOM_ICDF(18714), AOM_ICDF(21989), AOM_ICDF(22957), AOM_ICDF(24528), + AOM_ICDF(25365), AOM_ICDF(26001), AOM_ICDF(29596), AOM_ICDF(31678), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4352), AOM_ICDF(6239), AOM_ICDF(19711), AOM_ICDF(20602), + AOM_ICDF(22489), AOM_ICDF(27311), AOM_ICDF(28228), AOM_ICDF(30516), + AOM_ICDF(31097), AOM_ICDF(31750), AOM_ICDF(32319), AOM_ICDF(32656), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2944), AOM_ICDF(4925), AOM_ICDF(13952), AOM_ICDF(15490), + AOM_ICDF(18397), AOM_ICDF(20200), AOM_ICDF(20986), AOM_ICDF(22367), + AOM_ICDF(24967), AOM_ICDF(25820), AOM_ICDF(29755), AOM_ICDF(31473), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4224), AOM_ICDF(6120), AOM_ICDF(14968), AOM_ICDF(17184), + AOM_ICDF(18063), AOM_ICDF(19140), AOM_ICDF(20258), AOM_ICDF(21822), + AOM_ICDF(22463), AOM_ICDF(24838), AOM_ICDF(28989), AOM_ICDF(31277), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5120), AOM_ICDF(7280), AOM_ICDF(17535), AOM_ICDF(18348), + AOM_ICDF(19116), AOM_ICDF(20689), AOM_ICDF(21916), AOM_ICDF(24968), + AOM_ICDF(25242), AOM_ICDF(26095), AOM_ICDF(29588), AOM_ICDF(31787), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2816), AOM_ICDF(4922), AOM_ICDF(17105), AOM_ICDF(18458), + AOM_ICDF(19325), AOM_ICDF(19614), AOM_ICDF(20231), AOM_ICDF(21700), + AOM_ICDF(22089), AOM_ICDF(22756), AOM_ICDF(27879), AOM_ICDF(31278), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2560), AOM_ICDF(4920), AOM_ICDF(18518), AOM_ICDF(19680), + AOM_ICDF(20386), AOM_ICDF(20689), AOM_ICDF(21208), AOM_ICDF(22472), + AOM_ICDF(22754), AOM_ICDF(23223), AOM_ICDF(27809), AOM_ICDF(31664), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3328), AOM_ICDF(5513), AOM_ICDF(17331), AOM_ICDF(19065), + AOM_ICDF(19882), AOM_ICDF(20105), AOM_ICDF(20748), AOM_ICDF(22110), + AOM_ICDF(22443), AOM_ICDF(23129), AOM_ICDF(28099), AOM_ICDF(30944), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2560), AOM_ICDF(6690), AOM_ICDF(20748), AOM_ICDF(22590), + AOM_ICDF(23037), AOM_ICDF(23659), AOM_ICDF(24406), AOM_ICDF(25582), + AOM_ICDF(25835), AOM_ICDF(26485), AOM_ICDF(29553), AOM_ICDF(31826), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(11392), AOM_ICDF(13647), AOM_ICDF(15216), AOM_ICDF(23156), + AOM_ICDF(24102), AOM_ICDF(24540), AOM_ICDF(25183), AOM_ICDF(25746), + AOM_ICDF(26706), AOM_ICDF(28032), AOM_ICDF(30511), AOM_ICDF(31357), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8064), AOM_ICDF(11635), AOM_ICDF(17166), AOM_ICDF(22459), + AOM_ICDF(23608), AOM_ICDF(24297), AOM_ICDF(25025), AOM_ICDF(25902), + AOM_ICDF(26438), AOM_ICDF(27551), AOM_ICDF(30343), AOM_ICDF(31641), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4352), AOM_ICDF(6905), AOM_ICDF(7612), AOM_ICDF(24258), + AOM_ICDF(24862), AOM_ICDF(25005), AOM_ICDF(25399), AOM_ICDF(25658), + AOM_ICDF(26491), AOM_ICDF(28281), AOM_ICDF(30472), AOM_ICDF(31037), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(10752), AOM_ICDF(13246), AOM_ICDF(14771), AOM_ICDF(18965), + AOM_ICDF(20132), AOM_ICDF(20606), AOM_ICDF(22411), AOM_ICDF(23422), + AOM_ICDF(24663), AOM_ICDF(27386), AOM_ICDF(30203), AOM_ICDF(31265), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8320), AOM_ICDF(10135), AOM_ICDF(11815), AOM_ICDF(15962), + AOM_ICDF(19829), AOM_ICDF(21555), AOM_ICDF(22738), AOM_ICDF(23482), + AOM_ICDF(25513), AOM_ICDF(27100), AOM_ICDF(30222), AOM_ICDF(31246), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(11264), AOM_ICDF(13364), AOM_ICDF(16851), AOM_ICDF(20617), + AOM_ICDF(23504), AOM_ICDF(26302), AOM_ICDF(28070), AOM_ICDF(29189), + AOM_ICDF(30531), AOM_ICDF(31903), AOM_ICDF(32342), AOM_ICDF(32512), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6528), AOM_ICDF(7656), AOM_ICDF(8637), AOM_ICDF(15318), + AOM_ICDF(18270), AOM_ICDF(18817), AOM_ICDF(19580), AOM_ICDF(20044), + AOM_ICDF(24666), AOM_ICDF(26502), AOM_ICDF(29733), AOM_ICDF(30670), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6784), AOM_ICDF(8307), AOM_ICDF(9167), AOM_ICDF(17476), + AOM_ICDF(18366), AOM_ICDF(18663), AOM_ICDF(19765), AOM_ICDF(20425), + AOM_ICDF(21534), AOM_ICDF(26888), AOM_ICDF(29989), AOM_ICDF(30857), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8192), AOM_ICDF(11072), AOM_ICDF(12682), AOM_ICDF(17399), + AOM_ICDF(19010), AOM_ICDF(19743), AOM_ICDF(20964), AOM_ICDF(22993), + AOM_ICDF(23871), AOM_ICDF(25817), AOM_ICDF(29727), AOM_ICDF(31164), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5888), AOM_ICDF(7988), AOM_ICDF(9634), AOM_ICDF(16735), + AOM_ICDF(18009), AOM_ICDF(18129), AOM_ICDF(18930), AOM_ICDF(19741), + AOM_ICDF(20911), AOM_ICDF(22671), AOM_ICDF(27877), AOM_ICDF(29749), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5248), AOM_ICDF(8151), AOM_ICDF(10267), AOM_ICDF(17761), + AOM_ICDF(19077), AOM_ICDF(19232), AOM_ICDF(19919), AOM_ICDF(20772), + AOM_ICDF(21615), AOM_ICDF(23140), AOM_ICDF(28142), AOM_ICDF(30618), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6656), AOM_ICDF(8390), AOM_ICDF(9723), AOM_ICDF(17206), + AOM_ICDF(18212), AOM_ICDF(18275), AOM_ICDF(19068), AOM_ICDF(19657), + AOM_ICDF(20886), AOM_ICDF(22650), AOM_ICDF(27907), AOM_ICDF(29084), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(9232), AOM_ICDF(11163), AOM_ICDF(22580), + AOM_ICDF(23368), AOM_ICDF(23653), AOM_ICDF(24436), AOM_ICDF(24989), + AOM_ICDF(25809), AOM_ICDF(27087), AOM_ICDF(30038), AOM_ICDF(31104), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(10240), AOM_ICDF(11472), AOM_ICDF(14051), AOM_ICDF(16777), + AOM_ICDF(18308), AOM_ICDF(19461), AOM_ICDF(22164), AOM_ICDF(24235), + AOM_ICDF(25202), AOM_ICDF(26680), AOM_ICDF(29962), AOM_ICDF(31168), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7552), AOM_ICDF(9128), AOM_ICDF(16885), AOM_ICDF(18221), + AOM_ICDF(19114), AOM_ICDF(20111), AOM_ICDF(23226), AOM_ICDF(25462), + AOM_ICDF(26033), AOM_ICDF(27085), AOM_ICDF(30259), AOM_ICDF(31729), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5248), AOM_ICDF(7291), AOM_ICDF(8883), AOM_ICDF(18172), + AOM_ICDF(19301), AOM_ICDF(19892), AOM_ICDF(21703), AOM_ICDF(22870), + AOM_ICDF(23798), AOM_ICDF(25970), AOM_ICDF(29581), AOM_ICDF(30440), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(11008), AOM_ICDF(11943), AOM_ICDF(12838), AOM_ICDF(14729), + AOM_ICDF(15340), AOM_ICDF(15719), AOM_ICDF(23245), AOM_ICDF(25217), + AOM_ICDF(25453), AOM_ICDF(28282), AOM_ICDF(30735), AOM_ICDF(31696), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6272), AOM_ICDF(7100), AOM_ICDF(9506), AOM_ICDF(11141), + AOM_ICDF(14891), AOM_ICDF(18048), AOM_ICDF(20808), AOM_ICDF(22910), + AOM_ICDF(24450), AOM_ICDF(26172), AOM_ICDF(29625), AOM_ICDF(31233), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7424), AOM_ICDF(8513), AOM_ICDF(11924), AOM_ICDF(13742), + AOM_ICDF(16971), AOM_ICDF(22265), AOM_ICDF(25957), AOM_ICDF(29762), + AOM_ICDF(30831), AOM_ICDF(32193), AOM_ICDF(32537), AOM_ICDF(32669), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4992), AOM_ICDF(5969), AOM_ICDF(7435), AOM_ICDF(10922), + AOM_ICDF(15097), AOM_ICDF(16638), AOM_ICDF(18654), AOM_ICDF(20087), + AOM_ICDF(23356), AOM_ICDF(25452), AOM_ICDF(29281), AOM_ICDF(30725), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9600), AOM_ICDF(10324), AOM_ICDF(12603), AOM_ICDF(15427), + AOM_ICDF(16950), AOM_ICDF(17959), AOM_ICDF(20909), AOM_ICDF(22299), + AOM_ICDF(22994), AOM_ICDF(27308), AOM_ICDF(30379), AOM_ICDF(31154), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9856), AOM_ICDF(11020), AOM_ICDF(12549), AOM_ICDF(14621), + AOM_ICDF(15493), AOM_ICDF(16182), AOM_ICDF(21430), AOM_ICDF(25947), + AOM_ICDF(26427), AOM_ICDF(27888), AOM_ICDF(30595), AOM_ICDF(31809), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6272), AOM_ICDF(7618), AOM_ICDF(10664), AOM_ICDF(12915), + AOM_ICDF(14454), AOM_ICDF(14722), AOM_ICDF(17965), AOM_ICDF(20394), + AOM_ICDF(21312), AOM_ICDF(23371), AOM_ICDF(28730), AOM_ICDF(30623), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5888), AOM_ICDF(7463), AOM_ICDF(10923), AOM_ICDF(12991), + AOM_ICDF(14555), AOM_ICDF(14934), AOM_ICDF(18208), AOM_ICDF(21052), + AOM_ICDF(21876), AOM_ICDF(23450), AOM_ICDF(28655), AOM_ICDF(31017), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6912), AOM_ICDF(8023), AOM_ICDF(10440), AOM_ICDF(13329), + AOM_ICDF(14958), AOM_ICDF(15150), AOM_ICDF(18109), AOM_ICDF(20056), + AOM_ICDF(21049), AOM_ICDF(23063), AOM_ICDF(28219), AOM_ICDF(29978), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5120), AOM_ICDF(7928), AOM_ICDF(11906), AOM_ICDF(15940), + AOM_ICDF(16978), AOM_ICDF(17773), AOM_ICDF(22342), AOM_ICDF(24419), + AOM_ICDF(25300), AOM_ICDF(27021), AOM_ICDF(30007), AOM_ICDF(31312), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(7296), AOM_ICDF(8291), AOM_ICDF(10299), AOM_ICDF(12767), + AOM_ICDF(18252), AOM_ICDF(20656), AOM_ICDF(21413), AOM_ICDF(22300), + AOM_ICDF(24958), AOM_ICDF(26544), AOM_ICDF(30069), AOM_ICDF(31387), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7168), AOM_ICDF(8668), AOM_ICDF(13187), AOM_ICDF(15041), + AOM_ICDF(18824), AOM_ICDF(21371), AOM_ICDF(22261), AOM_ICDF(23574), + AOM_ICDF(25082), AOM_ICDF(26133), AOM_ICDF(29839), AOM_ICDF(31693), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3584), AOM_ICDF(5750), AOM_ICDF(6594), AOM_ICDF(15662), + AOM_ICDF(18845), AOM_ICDF(20090), AOM_ICDF(20783), AOM_ICDF(21438), + AOM_ICDF(23430), AOM_ICDF(25436), AOM_ICDF(29446), AOM_ICDF(30471), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7424), AOM_ICDF(8711), AOM_ICDF(10121), AOM_ICDF(11786), + AOM_ICDF(15100), AOM_ICDF(16579), AOM_ICDF(20437), AOM_ICDF(21593), + AOM_ICDF(22903), AOM_ICDF(25678), AOM_ICDF(29638), AOM_ICDF(31130), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(5033), AOM_ICDF(6441), AOM_ICDF(7646), + AOM_ICDF(18034), AOM_ICDF(21867), AOM_ICDF(22676), AOM_ICDF(23504), + AOM_ICDF(25892), AOM_ICDF(26913), AOM_ICDF(30206), AOM_ICDF(31507), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7296), AOM_ICDF(8192), AOM_ICDF(11072), AOM_ICDF(12676), + AOM_ICDF(19460), AOM_ICDF(25734), AOM_ICDF(26778), AOM_ICDF(28439), + AOM_ICDF(31077), AOM_ICDF(32002), AOM_ICDF(32469), AOM_ICDF(32671), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(4518), AOM_ICDF(5511), AOM_ICDF(8229), + AOM_ICDF(16448), AOM_ICDF(18394), AOM_ICDF(19292), AOM_ICDF(20345), + AOM_ICDF(25683), AOM_ICDF(27399), AOM_ICDF(30566), AOM_ICDF(31375), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6528), AOM_ICDF(7451), AOM_ICDF(8934), AOM_ICDF(12006), + AOM_ICDF(15767), AOM_ICDF(17127), AOM_ICDF(18471), AOM_ICDF(19476), + AOM_ICDF(21553), AOM_ICDF(25715), AOM_ICDF(29572), AOM_ICDF(30795), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7168), AOM_ICDF(8368), AOM_ICDF(10370), AOM_ICDF(11855), + AOM_ICDF(14966), AOM_ICDF(17544), AOM_ICDF(19328), AOM_ICDF(21271), + AOM_ICDF(22708), AOM_ICDF(24555), AOM_ICDF(29207), AOM_ICDF(31280), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5504), AOM_ICDF(6782), AOM_ICDF(8914), AOM_ICDF(11452), + AOM_ICDF(15958), AOM_ICDF(16648), AOM_ICDF(17530), AOM_ICDF(18899), + AOM_ICDF(20578), AOM_ICDF(22245), AOM_ICDF(28123), AOM_ICDF(30427), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5248), AOM_ICDF(6538), AOM_ICDF(9100), AOM_ICDF(11294), + AOM_ICDF(15638), AOM_ICDF(16589), AOM_ICDF(17600), AOM_ICDF(19318), + AOM_ICDF(20842), AOM_ICDF(22193), AOM_ICDF(28018), AOM_ICDF(30875), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(6553), AOM_ICDF(8499), AOM_ICDF(11769), + AOM_ICDF(15661), AOM_ICDF(16178), AOM_ICDF(17280), AOM_ICDF(18490), + AOM_ICDF(20386), AOM_ICDF(22127), AOM_ICDF(28071), AOM_ICDF(30089), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4608), AOM_ICDF(7468), AOM_ICDF(10136), AOM_ICDF(15013), + AOM_ICDF(17716), AOM_ICDF(19595), AOM_ICDF(20830), AOM_ICDF(22136), + AOM_ICDF(23714), AOM_ICDF(25341), AOM_ICDF(29403), AOM_ICDF(31072), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(6656), AOM_ICDF(8186), AOM_ICDF(13755), AOM_ICDF(15971), + AOM_ICDF(20413), AOM_ICDF(27940), AOM_ICDF(28657), AOM_ICDF(29910), + AOM_ICDF(31004), AOM_ICDF(31969), AOM_ICDF(32443), AOM_ICDF(32665), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6400), AOM_ICDF(8048), AOM_ICDF(16256), AOM_ICDF(17568), + AOM_ICDF(21074), AOM_ICDF(28253), AOM_ICDF(28976), AOM_ICDF(30531), + AOM_ICDF(31099), AOM_ICDF(31875), AOM_ICDF(32426), AOM_ICDF(32701), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(6439), AOM_ICDF(9524), AOM_ICDF(17270), + AOM_ICDF(21391), AOM_ICDF(25777), AOM_ICDF(26815), AOM_ICDF(27908), + AOM_ICDF(29199), AOM_ICDF(31151), AOM_ICDF(32168), AOM_ICDF(32407), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9600), AOM_ICDF(10958), AOM_ICDF(14962), AOM_ICDF(16560), + AOM_ICDF(19908), AOM_ICDF(23309), AOM_ICDF(25637), AOM_ICDF(28033), + AOM_ICDF(29032), AOM_ICDF(32009), AOM_ICDF(32528), AOM_ICDF(32701), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4608), AOM_ICDF(5598), AOM_ICDF(9525), AOM_ICDF(10578), + AOM_ICDF(18511), AOM_ICDF(27502), AOM_ICDF(28654), AOM_ICDF(29907), + AOM_ICDF(31069), AOM_ICDF(32071), AOM_ICDF(32493), AOM_ICDF(32670), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4864), AOM_ICDF(5845), AOM_ICDF(11524), AOM_ICDF(12294), + AOM_ICDF(16882), AOM_ICDF(27955), AOM_ICDF(28839), AOM_ICDF(30251), + AOM_ICDF(30949), AOM_ICDF(31873), AOM_ICDF(32467), AOM_ICDF(32703), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3968), AOM_ICDF(5431), AOM_ICDF(8955), AOM_ICDF(11746), + AOM_ICDF(18914), AOM_ICDF(24489), AOM_ICDF(25524), AOM_ICDF(27194), + AOM_ICDF(29894), AOM_ICDF(31589), AOM_ICDF(32335), AOM_ICDF(32551), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6016), AOM_ICDF(7584), AOM_ICDF(11814), AOM_ICDF(14567), + AOM_ICDF(18253), AOM_ICDF(21882), AOM_ICDF(23966), AOM_ICDF(26442), + AOM_ICDF(27628), AOM_ICDF(31142), AOM_ICDF(32177), AOM_ICDF(32466), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7808), AOM_ICDF(9661), AOM_ICDF(15257), AOM_ICDF(16576), + AOM_ICDF(20349), AOM_ICDF(24902), AOM_ICDF(26592), AOM_ICDF(29415), + AOM_ICDF(30083), AOM_ICDF(31782), AOM_ICDF(32360), AOM_ICDF(32680), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2816), AOM_ICDF(4805), AOM_ICDF(8519), AOM_ICDF(10112), + AOM_ICDF(13408), AOM_ICDF(18465), AOM_ICDF(19582), AOM_ICDF(21333), + AOM_ICDF(22494), AOM_ICDF(24059), AOM_ICDF(29026), AOM_ICDF(31321), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2432), AOM_ICDF(4091), AOM_ICDF(8236), AOM_ICDF(9669), + AOM_ICDF(13111), AOM_ICDF(19352), AOM_ICDF(20557), AOM_ICDF(22370), + AOM_ICDF(23060), AOM_ICDF(24425), AOM_ICDF(28890), AOM_ICDF(31586), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3200), AOM_ICDF(5164), AOM_ICDF(8938), AOM_ICDF(11126), + AOM_ICDF(14494), AOM_ICDF(18433), AOM_ICDF(19721), AOM_ICDF(21148), + AOM_ICDF(22510), AOM_ICDF(24233), AOM_ICDF(29134), AOM_ICDF(31235), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(7132), AOM_ICDF(13341), AOM_ICDF(17959), + AOM_ICDF(21108), AOM_ICDF(25786), AOM_ICDF(27068), AOM_ICDF(29161), + AOM_ICDF(30077), AOM_ICDF(31286), AOM_ICDF(32363), AOM_ICDF(32565), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(9600), AOM_ICDF(10686), AOM_ICDF(12152), AOM_ICDF(16918), + AOM_ICDF(19247), AOM_ICDF(20286), AOM_ICDF(20969), AOM_ICDF(21568), + AOM_ICDF(25987), AOM_ICDF(27444), AOM_ICDF(30376), AOM_ICDF(31348), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8832), AOM_ICDF(10609), AOM_ICDF(14591), AOM_ICDF(17948), + AOM_ICDF(19973), AOM_ICDF(21052), AOM_ICDF(21922), AOM_ICDF(22854), + AOM_ICDF(25642), AOM_ICDF(26783), AOM_ICDF(29892), AOM_ICDF(31499), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(5196), AOM_ICDF(5842), AOM_ICDF(17177), + AOM_ICDF(19308), AOM_ICDF(19726), AOM_ICDF(20235), AOM_ICDF(20627), + AOM_ICDF(24184), AOM_ICDF(26799), AOM_ICDF(29993), AOM_ICDF(30752), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9856), AOM_ICDF(11288), AOM_ICDF(12295), AOM_ICDF(15482), + AOM_ICDF(18345), AOM_ICDF(19093), AOM_ICDF(20963), AOM_ICDF(21747), + AOM_ICDF(24718), AOM_ICDF(26793), AOM_ICDF(29991), AOM_ICDF(31032), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6528), AOM_ICDF(7348), AOM_ICDF(8440), AOM_ICDF(11002), + AOM_ICDF(17084), AOM_ICDF(19749), AOM_ICDF(20766), AOM_ICDF(21563), + AOM_ICDF(25502), AOM_ICDF(26950), AOM_ICDF(30245), AOM_ICDF(31152), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9728), AOM_ICDF(10448), AOM_ICDF(12541), AOM_ICDF(14674), + AOM_ICDF(19296), AOM_ICDF(23919), AOM_ICDF(25198), AOM_ICDF(26558), + AOM_ICDF(30755), AOM_ICDF(31958), AOM_ICDF(32461), AOM_ICDF(32594), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5120), AOM_ICDF(5768), AOM_ICDF(6401), AOM_ICDF(10321), + AOM_ICDF(14515), AOM_ICDF(15362), AOM_ICDF(15838), AOM_ICDF(16301), + AOM_ICDF(26078), AOM_ICDF(27489), AOM_ICDF(30397), AOM_ICDF(31175), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5888), AOM_ICDF(6518), AOM_ICDF(7236), AOM_ICDF(12128), + AOM_ICDF(14327), AOM_ICDF(15015), AOM_ICDF(16055), AOM_ICDF(16773), + AOM_ICDF(20897), AOM_ICDF(25395), AOM_ICDF(29341), AOM_ICDF(30452), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(10368), AOM_ICDF(11856), AOM_ICDF(13245), AOM_ICDF(15614), + AOM_ICDF(18451), AOM_ICDF(19498), AOM_ICDF(20846), AOM_ICDF(22429), + AOM_ICDF(24610), AOM_ICDF(26522), AOM_ICDF(30279), AOM_ICDF(31523), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6016), AOM_ICDF(7061), AOM_ICDF(8668), AOM_ICDF(12423), + AOM_ICDF(15346), AOM_ICDF(15634), AOM_ICDF(16504), AOM_ICDF(17584), + AOM_ICDF(21083), AOM_ICDF(23000), AOM_ICDF(28456), AOM_ICDF(30241), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(7026), AOM_ICDF(8735), AOM_ICDF(12665), + AOM_ICDF(15507), AOM_ICDF(15870), AOM_ICDF(16794), AOM_ICDF(17792), + AOM_ICDF(21068), AOM_ICDF(23033), AOM_ICDF(28395), AOM_ICDF(30701), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7040), AOM_ICDF(8045), AOM_ICDF(9300), AOM_ICDF(13303), + AOM_ICDF(15462), AOM_ICDF(15625), AOM_ICDF(16362), AOM_ICDF(17067), + AOM_ICDF(20686), AOM_ICDF(22810), AOM_ICDF(27983), AOM_ICDF(29347), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5632), AOM_ICDF(8070), AOM_ICDF(9903), AOM_ICDF(16658), + AOM_ICDF(18637), AOM_ICDF(19728), AOM_ICDF(20543), AOM_ICDF(21450), + AOM_ICDF(24456), AOM_ICDF(26372), AOM_ICDF(29645), AOM_ICDF(30731), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(11008), AOM_ICDF(12283), AOM_ICDF(14364), AOM_ICDF(18419), + AOM_ICDF(19948), AOM_ICDF(20618), AOM_ICDF(21899), AOM_ICDF(22960), + AOM_ICDF(23994), AOM_ICDF(26565), AOM_ICDF(30078), AOM_ICDF(31213), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9088), AOM_ICDF(11586), AOM_ICDF(16716), AOM_ICDF(18876), + AOM_ICDF(20112), AOM_ICDF(21105), AOM_ICDF(22426), AOM_ICDF(23800), + AOM_ICDF(24396), AOM_ICDF(26653), AOM_ICDF(30021), AOM_ICDF(31566), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6144), AOM_ICDF(8328), AOM_ICDF(9378), AOM_ICDF(20096), + AOM_ICDF(20984), AOM_ICDF(21256), AOM_ICDF(22335), AOM_ICDF(23109), + AOM_ICDF(24128), AOM_ICDF(26896), AOM_ICDF(29947), AOM_ICDF(30740), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(10496), AOM_ICDF(12323), AOM_ICDF(13441), AOM_ICDF(15479), + AOM_ICDF(16976), AOM_ICDF(17518), AOM_ICDF(20794), AOM_ICDF(22571), + AOM_ICDF(23328), AOM_ICDF(27421), AOM_ICDF(30512), AOM_ICDF(31561), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7296), AOM_ICDF(8391), AOM_ICDF(10010), AOM_ICDF(12258), + AOM_ICDF(15388), AOM_ICDF(16944), AOM_ICDF(19602), AOM_ICDF(21196), + AOM_ICDF(22869), AOM_ICDF(25112), AOM_ICDF(29389), AOM_ICDF(30709), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9728), AOM_ICDF(11168), AOM_ICDF(14881), AOM_ICDF(17298), + AOM_ICDF(20151), AOM_ICDF(22916), AOM_ICDF(25918), AOM_ICDF(28032), + AOM_ICDF(29549), AOM_ICDF(31787), AOM_ICDF(32293), AOM_ICDF(32521), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6400), AOM_ICDF(7636), AOM_ICDF(8716), AOM_ICDF(12718), + AOM_ICDF(15711), AOM_ICDF(16420), AOM_ICDF(18144), AOM_ICDF(19287), + AOM_ICDF(22815), AOM_ICDF(25886), AOM_ICDF(29596), AOM_ICDF(30674), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9856), AOM_ICDF(10662), AOM_ICDF(11785), AOM_ICDF(14236), + AOM_ICDF(14998), AOM_ICDF(15391), AOM_ICDF(17156), AOM_ICDF(17949), + AOM_ICDF(18470), AOM_ICDF(27797), AOM_ICDF(30418), AOM_ICDF(31244), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8960), AOM_ICDF(10448), AOM_ICDF(12017), AOM_ICDF(14128), + AOM_ICDF(15765), AOM_ICDF(16637), AOM_ICDF(19347), AOM_ICDF(21759), + AOM_ICDF(22490), AOM_ICDF(25300), AOM_ICDF(29676), AOM_ICDF(31077), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7168), AOM_ICDF(8468), AOM_ICDF(10177), AOM_ICDF(13693), + AOM_ICDF(15333), AOM_ICDF(15472), AOM_ICDF(17094), AOM_ICDF(18257), + AOM_ICDF(19277), AOM_ICDF(22386), AOM_ICDF(28023), AOM_ICDF(29969), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6400), AOM_ICDF(8151), AOM_ICDF(10651), AOM_ICDF(13992), + AOM_ICDF(15677), AOM_ICDF(15835), AOM_ICDF(17422), AOM_ICDF(18621), + AOM_ICDF(19450), AOM_ICDF(22207), AOM_ICDF(27735), AOM_ICDF(30409), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7296), AOM_ICDF(8391), AOM_ICDF(9915), AOM_ICDF(13980), + AOM_ICDF(15352), AOM_ICDF(15450), AOM_ICDF(17006), AOM_ICDF(17930), + AOM_ICDF(18973), AOM_ICDF(22045), AOM_ICDF(27658), AOM_ICDF(29235), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6272), AOM_ICDF(9481), AOM_ICDF(11664), AOM_ICDF(16537), + AOM_ICDF(17656), AOM_ICDF(18094), AOM_ICDF(20673), AOM_ICDF(21949), + AOM_ICDF(22752), AOM_ICDF(25921), AOM_ICDF(29612), AOM_ICDF(30869), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(6784), AOM_ICDF(8104), AOM_ICDF(12536), AOM_ICDF(14589), + AOM_ICDF(15843), AOM_ICDF(17357), AOM_ICDF(19765), AOM_ICDF(23981), + AOM_ICDF(24633), AOM_ICDF(25618), AOM_ICDF(29556), AOM_ICDF(31438), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(7237), AOM_ICDF(14717), AOM_ICDF(15587), + AOM_ICDF(16364), AOM_ICDF(17537), AOM_ICDF(20393), AOM_ICDF(26097), + AOM_ICDF(26462), AOM_ICDF(27029), AOM_ICDF(30123), AOM_ICDF(31921), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4352), AOM_ICDF(5906), AOM_ICDF(8424), AOM_ICDF(16214), + AOM_ICDF(16978), AOM_ICDF(17743), AOM_ICDF(19680), AOM_ICDF(22441), + AOM_ICDF(23167), AOM_ICDF(25080), AOM_ICDF(29224), AOM_ICDF(30650), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(9472), AOM_ICDF(10473), AOM_ICDF(12737), AOM_ICDF(14173), + AOM_ICDF(15051), AOM_ICDF(15632), AOM_ICDF(20652), AOM_ICDF(24864), + AOM_ICDF(25204), AOM_ICDF(27006), AOM_ICDF(30292), AOM_ICDF(31501), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(5475), AOM_ICDF(8247), AOM_ICDF(9646), + AOM_ICDF(12203), AOM_ICDF(14760), AOM_ICDF(18488), AOM_ICDF(22616), + AOM_ICDF(23449), AOM_ICDF(24650), AOM_ICDF(29026), AOM_ICDF(30955), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6016), AOM_ICDF(6957), AOM_ICDF(12502), AOM_ICDF(13805), + AOM_ICDF(16777), AOM_ICDF(21052), AOM_ICDF(23981), AOM_ICDF(30606), + AOM_ICDF(31206), AOM_ICDF(31981), AOM_ICDF(32414), AOM_ICDF(32681), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(5475), AOM_ICDF(7820), AOM_ICDF(9805), + AOM_ICDF(12793), AOM_ICDF(14252), AOM_ICDF(16711), AOM_ICDF(20725), + AOM_ICDF(23406), AOM_ICDF(25015), AOM_ICDF(29225), AOM_ICDF(30775), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6912), AOM_ICDF(7619), AOM_ICDF(10173), AOM_ICDF(12424), + AOM_ICDF(13502), AOM_ICDF(14410), AOM_ICDF(17852), AOM_ICDF(21348), + AOM_ICDF(22017), AOM_ICDF(25461), AOM_ICDF(29571), AOM_ICDF(31020), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7680), AOM_ICDF(8562), AOM_ICDF(11399), AOM_ICDF(12263), + AOM_ICDF(12870), AOM_ICDF(13486), AOM_ICDF(18307), AOM_ICDF(26385), + AOM_ICDF(26734), AOM_ICDF(27724), AOM_ICDF(30482), AOM_ICDF(31955), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4992), AOM_ICDF(6186), AOM_ICDF(9820), AOM_ICDF(11725), + AOM_ICDF(13117), AOM_ICDF(13406), AOM_ICDF(15978), AOM_ICDF(20372), + AOM_ICDF(20953), AOM_ICDF(22245), AOM_ICDF(28205), AOM_ICDF(30879), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4736), AOM_ICDF(6050), AOM_ICDF(10747), AOM_ICDF(12295), + AOM_ICDF(13445), AOM_ICDF(13844), AOM_ICDF(16357), AOM_ICDF(21485), + AOM_ICDF(21838), AOM_ICDF(22820), AOM_ICDF(28183), AOM_ICDF(31138), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(6710), AOM_ICDF(10476), AOM_ICDF(12855), + AOM_ICDF(14101), AOM_ICDF(14482), AOM_ICDF(17053), AOM_ICDF(20613), + AOM_ICDF(21278), AOM_ICDF(22580), AOM_ICDF(28351), AOM_ICDF(30542), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(6359), AOM_ICDF(11826), AOM_ICDF(14265), + AOM_ICDF(14852), AOM_ICDF(15753), AOM_ICDF(19276), AOM_ICDF(24757), + AOM_ICDF(25226), AOM_ICDF(26287), AOM_ICDF(29629), AOM_ICDF(31493), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(7424), AOM_ICDF(8612), AOM_ICDF(11726), AOM_ICDF(15286), + AOM_ICDF(16881), AOM_ICDF(17151), AOM_ICDF(17944), AOM_ICDF(19160), + AOM_ICDF(20011), AOM_ICDF(21356), AOM_ICDF(27463), AOM_ICDF(29805), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(7516), AOM_ICDF(15210), AOM_ICDF(17109), + AOM_ICDF(18458), AOM_ICDF(18708), AOM_ICDF(19587), AOM_ICDF(20977), + AOM_ICDF(21484), AOM_ICDF(22277), AOM_ICDF(27768), AOM_ICDF(30893), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3584), AOM_ICDF(5522), AOM_ICDF(7225), AOM_ICDF(18079), + AOM_ICDF(18909), AOM_ICDF(18999), AOM_ICDF(19698), AOM_ICDF(20413), + AOM_ICDF(21185), AOM_ICDF(23040), AOM_ICDF(28056), AOM_ICDF(29473), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7424), AOM_ICDF(8612), AOM_ICDF(10782), AOM_ICDF(12958), + AOM_ICDF(14687), AOM_ICDF(14818), AOM_ICDF(17553), AOM_ICDF(19395), + AOM_ICDF(20231), AOM_ICDF(23316), AOM_ICDF(28559), AOM_ICDF(30614), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5632), AOM_ICDF(6586), AOM_ICDF(9347), AOM_ICDF(11520), + AOM_ICDF(15628), AOM_ICDF(16300), AOM_ICDF(17651), AOM_ICDF(19245), + AOM_ICDF(20671), AOM_ICDF(22089), AOM_ICDF(28013), AOM_ICDF(30279), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(5309), AOM_ICDF(9385), AOM_ICDF(10995), + AOM_ICDF(14099), AOM_ICDF(18154), AOM_ICDF(19638), AOM_ICDF(21690), + AOM_ICDF(23031), AOM_ICDF(24552), AOM_ICDF(29238), AOM_ICDF(31251), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(6339), AOM_ICDF(8301), AOM_ICDF(11620), + AOM_ICDF(14701), AOM_ICDF(14991), AOM_ICDF(16033), AOM_ICDF(17210), + AOM_ICDF(20431), AOM_ICDF(22310), AOM_ICDF(27948), AOM_ICDF(29774), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5632), AOM_ICDF(6692), AOM_ICDF(8729), AOM_ICDF(12618), + AOM_ICDF(13927), AOM_ICDF(14081), AOM_ICDF(15176), AOM_ICDF(16413), + AOM_ICDF(17371), AOM_ICDF(22183), AOM_ICDF(28013), AOM_ICDF(29815), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6528), AOM_ICDF(7861), AOM_ICDF(11072), AOM_ICDF(12945), + AOM_ICDF(14726), AOM_ICDF(14971), AOM_ICDF(16570), AOM_ICDF(19481), + AOM_ICDF(20260), AOM_ICDF(21921), AOM_ICDF(27980), AOM_ICDF(30449), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(6553), AOM_ICDF(9523), AOM_ICDF(12199), + AOM_ICDF(13764), AOM_ICDF(13972), AOM_ICDF(14926), AOM_ICDF(16320), + AOM_ICDF(17091), AOM_ICDF(18744), AOM_ICDF(26359), AOM_ICDF(29288), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4736), AOM_ICDF(6160), AOM_ICDF(10318), AOM_ICDF(12718), + AOM_ICDF(14251), AOM_ICDF(14527), AOM_ICDF(15453), AOM_ICDF(17009), + AOM_ICDF(17625), AOM_ICDF(19045), AOM_ICDF(26335), AOM_ICDF(30079), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(6815), AOM_ICDF(9248), AOM_ICDF(12722), + AOM_ICDF(14141), AOM_ICDF(14301), AOM_ICDF(15095), AOM_ICDF(16200), + AOM_ICDF(17106), AOM_ICDF(18697), AOM_ICDF(26172), AOM_ICDF(28388), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4096), AOM_ICDF(6672), AOM_ICDF(11055), AOM_ICDF(16327), + AOM_ICDF(17508), AOM_ICDF(17671), AOM_ICDF(18733), AOM_ICDF(19994), + AOM_ICDF(20742), AOM_ICDF(22151), AOM_ICDF(27708), AOM_ICDF(30021), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(7936), AOM_ICDF(9197), AOM_ICDF(13524), AOM_ICDF(16819), + AOM_ICDF(18267), AOM_ICDF(18636), AOM_ICDF(19409), AOM_ICDF(20661), + AOM_ICDF(21323), AOM_ICDF(22307), AOM_ICDF(27905), AOM_ICDF(30678), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(7302), AOM_ICDF(16951), AOM_ICDF(18383), + AOM_ICDF(19388), AOM_ICDF(19608), AOM_ICDF(20225), AOM_ICDF(21597), + AOM_ICDF(21946), AOM_ICDF(22538), AOM_ICDF(27613), AOM_ICDF(31318), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(5987), AOM_ICDF(8184), AOM_ICDF(19612), + AOM_ICDF(20392), AOM_ICDF(20476), AOM_ICDF(21100), AOM_ICDF(21693), + AOM_ICDF(22428), AOM_ICDF(23963), AOM_ICDF(28709), AOM_ICDF(30342), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8448), AOM_ICDF(9588), AOM_ICDF(12395), AOM_ICDF(14447), + AOM_ICDF(16163), AOM_ICDF(16374), AOM_ICDF(18743), AOM_ICDF(20606), + AOM_ICDF(21271), AOM_ICDF(23786), AOM_ICDF(28768), AOM_ICDF(30877), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(6710), AOM_ICDF(10069), AOM_ICDF(11965), + AOM_ICDF(15976), AOM_ICDF(16719), AOM_ICDF(17973), AOM_ICDF(19880), + AOM_ICDF(21139), AOM_ICDF(22275), AOM_ICDF(28259), AOM_ICDF(30954), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3968), AOM_ICDF(5431), AOM_ICDF(10557), AOM_ICDF(12069), + AOM_ICDF(14280), AOM_ICDF(18973), AOM_ICDF(20374), AOM_ICDF(23037), + AOM_ICDF(24215), AOM_ICDF(25050), AOM_ICDF(29271), AOM_ICDF(31716), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6016), AOM_ICDF(7061), AOM_ICDF(9672), AOM_ICDF(12246), + AOM_ICDF(15351), AOM_ICDF(15717), AOM_ICDF(16716), AOM_ICDF(18158), + AOM_ICDF(21126), AOM_ICDF(22672), AOM_ICDF(28035), AOM_ICDF(30494), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6272), AOM_ICDF(7204), AOM_ICDF(9700), AOM_ICDF(13252), + AOM_ICDF(14599), AOM_ICDF(14926), AOM_ICDF(15902), AOM_ICDF(17220), + AOM_ICDF(18010), AOM_ICDF(22795), AOM_ICDF(28405), AOM_ICDF(30467), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6912), AOM_ICDF(8427), AOM_ICDF(12420), AOM_ICDF(14171), + AOM_ICDF(15792), AOM_ICDF(16156), AOM_ICDF(17584), AOM_ICDF(20846), + AOM_ICDF(21451), AOM_ICDF(22556), AOM_ICDF(28101), AOM_ICDF(31054), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5248), AOM_ICDF(6431), AOM_ICDF(10855), AOM_ICDF(13296), + AOM_ICDF(14848), AOM_ICDF(15135), AOM_ICDF(15893), AOM_ICDF(17277), + AOM_ICDF(17943), AOM_ICDF(19275), AOM_ICDF(26443), AOM_ICDF(30174), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4736), AOM_ICDF(6050), AOM_ICDF(12103), AOM_ICDF(14343), + AOM_ICDF(15633), AOM_ICDF(15978), AOM_ICDF(16699), AOM_ICDF(18205), + AOM_ICDF(18660), AOM_ICDF(19707), AOM_ICDF(26544), AOM_ICDF(30872), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6016), AOM_ICDF(7166), AOM_ICDF(11066), AOM_ICDF(14088), + AOM_ICDF(15377), AOM_ICDF(15644), AOM_ICDF(16447), AOM_ICDF(17786), + AOM_ICDF(18605), AOM_ICDF(19822), AOM_ICDF(27104), AOM_ICDF(29648), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4608), AOM_ICDF(7358), AOM_ICDF(13016), AOM_ICDF(18200), + AOM_ICDF(19015), AOM_ICDF(19189), AOM_ICDF(20038), AOM_ICDF(21430), + AOM_ICDF(21917), AOM_ICDF(22977), AOM_ICDF(27949), AOM_ICDF(30848), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(7296), AOM_ICDF(8490), AOM_ICDF(11145), AOM_ICDF(15318), + AOM_ICDF(16693), AOM_ICDF(16889), AOM_ICDF(17571), AOM_ICDF(18580), + AOM_ICDF(19688), AOM_ICDF(21272), AOM_ICDF(27245), AOM_ICDF(28971), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(7623), AOM_ICDF(16070), AOM_ICDF(18136), + AOM_ICDF(19225), AOM_ICDF(19397), AOM_ICDF(20128), AOM_ICDF(21362), + AOM_ICDF(21808), AOM_ICDF(22621), AOM_ICDF(27932), AOM_ICDF(30407), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3200), AOM_ICDF(5164), AOM_ICDF(6566), AOM_ICDF(18368), + AOM_ICDF(19106), AOM_ICDF(19155), AOM_ICDF(19793), AOM_ICDF(20300), + AOM_ICDF(21177), AOM_ICDF(23079), AOM_ICDF(27848), AOM_ICDF(28924), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7040), AOM_ICDF(8146), AOM_ICDF(10550), AOM_ICDF(12876), + AOM_ICDF(14506), AOM_ICDF(14629), AOM_ICDF(17180), AOM_ICDF(19129), + AOM_ICDF(20088), AOM_ICDF(23407), AOM_ICDF(28673), AOM_ICDF(30257), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6016), AOM_ICDF(7166), AOM_ICDF(9466), AOM_ICDF(11999), + AOM_ICDF(15723), AOM_ICDF(16293), AOM_ICDF(17580), AOM_ICDF(19004), + AOM_ICDF(20509), AOM_ICDF(22233), AOM_ICDF(28118), AOM_ICDF(29989), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(5422), AOM_ICDF(9054), AOM_ICDF(11018), + AOM_ICDF(13605), AOM_ICDF(17576), AOM_ICDF(19178), AOM_ICDF(21514), + AOM_ICDF(22877), AOM_ICDF(24461), AOM_ICDF(29069), AOM_ICDF(30933), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(6553), AOM_ICDF(8294), AOM_ICDF(12601), + AOM_ICDF(15043), AOM_ICDF(15273), AOM_ICDF(16230), AOM_ICDF(17134), + AOM_ICDF(20737), AOM_ICDF(22899), AOM_ICDF(28219), AOM_ICDF(29410), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(6815), AOM_ICDF(8336), AOM_ICDF(12965), + AOM_ICDF(14282), AOM_ICDF(14444), AOM_ICDF(15446), AOM_ICDF(16461), + AOM_ICDF(17544), AOM_ICDF(22183), AOM_ICDF(27682), AOM_ICDF(29132), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(6656), AOM_ICDF(8084), AOM_ICDF(10880), AOM_ICDF(12954), + AOM_ICDF(14527), AOM_ICDF(14728), AOM_ICDF(16490), AOM_ICDF(19224), + AOM_ICDF(20071), AOM_ICDF(21857), AOM_ICDF(27653), AOM_ICDF(30031), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5376), AOM_ICDF(6660), AOM_ICDF(9006), AOM_ICDF(12205), + AOM_ICDF(13614), AOM_ICDF(13740), AOM_ICDF(14632), AOM_ICDF(15766), + AOM_ICDF(16629), AOM_ICDF(18394), AOM_ICDF(25918), AOM_ICDF(28460), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4736), AOM_ICDF(6488), AOM_ICDF(9978), AOM_ICDF(12889), + AOM_ICDF(14419), AOM_ICDF(14607), AOM_ICDF(15458), AOM_ICDF(16743), + AOM_ICDF(17369), AOM_ICDF(19053), AOM_ICDF(26393), AOM_ICDF(29456), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(6710), AOM_ICDF(8542), AOM_ICDF(12830), + AOM_ICDF(13956), AOM_ICDF(14031), AOM_ICDF(14763), AOM_ICDF(15677), + AOM_ICDF(16545), AOM_ICDF(18256), AOM_ICDF(25569), AOM_ICDF(27284), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4096), AOM_ICDF(7008), AOM_ICDF(11436), AOM_ICDF(17228), + AOM_ICDF(18131), AOM_ICDF(18269), AOM_ICDF(19345), AOM_ICDF(20551), + AOM_ICDF(21315), AOM_ICDF(22836), AOM_ICDF(28035), AOM_ICDF(29865), + AOM_ICDF(32768), 0 }, + }, + { + { AOM_ICDF(6528), AOM_ICDF(10833), AOM_ICDF(17688), AOM_ICDF(21947), + AOM_ICDF(22829), AOM_ICDF(23814), AOM_ICDF(24514), AOM_ICDF(25707), + AOM_ICDF(26397), AOM_ICDF(27442), AOM_ICDF(30271), AOM_ICDF(31734), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4480), AOM_ICDF(8679), AOM_ICDF(21100), AOM_ICDF(23075), + AOM_ICDF(23772), AOM_ICDF(24427), AOM_ICDF(25111), AOM_ICDF(26188), + AOM_ICDF(26445), AOM_ICDF(27235), AOM_ICDF(29980), AOM_ICDF(31875), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(2688), AOM_ICDF(6683), AOM_ICDF(9332), AOM_ICDF(22173), + AOM_ICDF(22688), AOM_ICDF(22972), AOM_ICDF(23623), AOM_ICDF(24159), + AOM_ICDF(24798), AOM_ICDF(26666), AOM_ICDF(29812), AOM_ICDF(30909), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(8192), AOM_ICDF(10112), AOM_ICDF(13298), AOM_ICDF(16662), + AOM_ICDF(17623), AOM_ICDF(18394), AOM_ICDF(20921), AOM_ICDF(22309), + AOM_ICDF(22963), AOM_ICDF(26257), AOM_ICDF(29945), AOM_ICDF(31423), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5120), AOM_ICDF(7604), AOM_ICDF(12617), AOM_ICDF(15628), + AOM_ICDF(18274), AOM_ICDF(20174), AOM_ICDF(21404), AOM_ICDF(22869), + AOM_ICDF(24184), AOM_ICDF(25626), AOM_ICDF(29615), AOM_ICDF(31155), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(7424), AOM_ICDF(10295), AOM_ICDF(18459), AOM_ICDF(21302), + AOM_ICDF(23034), AOM_ICDF(26284), AOM_ICDF(27576), AOM_ICDF(29746), + AOM_ICDF(30502), AOM_ICDF(31794), AOM_ICDF(32346), AOM_ICDF(32600), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4224), AOM_ICDF(6789), AOM_ICDF(11254), AOM_ICDF(15589), + AOM_ICDF(18568), AOM_ICDF(19238), AOM_ICDF(19872), AOM_ICDF(20880), + AOM_ICDF(24409), AOM_ICDF(26238), AOM_ICDF(29580), AOM_ICDF(30875), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5120), AOM_ICDF(7388), AOM_ICDF(10164), AOM_ICDF(15886), + AOM_ICDF(16694), AOM_ICDF(17139), AOM_ICDF(18421), AOM_ICDF(19262), + AOM_ICDF(20106), AOM_ICDF(26734), AOM_ICDF(29987), AOM_ICDF(31160), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(5760), AOM_ICDF(8292), AOM_ICDF(13837), AOM_ICDF(16201), + AOM_ICDF(17303), AOM_ICDF(18422), AOM_ICDF(20215), AOM_ICDF(23059), + AOM_ICDF(23628), AOM_ICDF(25449), AOM_ICDF(29537), AOM_ICDF(31455), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4224), AOM_ICDF(7235), AOM_ICDF(12521), AOM_ICDF(16798), + AOM_ICDF(17964), AOM_ICDF(18136), AOM_ICDF(18936), AOM_ICDF(20233), + AOM_ICDF(20821), AOM_ICDF(22501), AOM_ICDF(27955), AOM_ICDF(30493), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3840), AOM_ICDF(7117), AOM_ICDF(13329), AOM_ICDF(17383), + AOM_ICDF(18323), AOM_ICDF(18492), AOM_ICDF(19273), AOM_ICDF(20538), + AOM_ICDF(21064), AOM_ICDF(22481), AOM_ICDF(27785), AOM_ICDF(30938), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(4736), AOM_ICDF(7474), AOM_ICDF(12414), AOM_ICDF(17230), + AOM_ICDF(18246), AOM_ICDF(18457), AOM_ICDF(19128), AOM_ICDF(20087), + AOM_ICDF(20830), AOM_ICDF(22602), AOM_ICDF(27923), AOM_ICDF(29929), + AOM_ICDF(32768), 0 }, + { AOM_ICDF(3584), AOM_ICDF(9626), AOM_ICDF(15412), AOM_ICDF(20788), + AOM_ICDF(21676), AOM_ICDF(22192), AOM_ICDF(23266), AOM_ICDF(24342), + AOM_ICDF(24836), AOM_ICDF(26447), AOM_ICDF(29583), AOM_ICDF(31300), + AOM_ICDF(32768), 0 }, + }, +#else { { AOM_ICDF(15488), AOM_ICDF(17513), AOM_ICDF(20731), AOM_ICDF(24586), AOM_ICDF(25921), AOM_ICDF(26749), AOM_ICDF(27807), AOM_ICDF(28602), @@ -2968,7 +4033,8 @@ AOM_ICDF(22933), AOM_ICDF(23648), AOM_ICDF(25322), AOM_ICDF(26602), AOM_ICDF(27806), AOM_ICDF(29841), AOM_ICDF(32768), 0 }, }, -#else // !CONFIG_ALT_INTRA +#endif // CONFIG_SMOOTH_HV +#else // CONFIG_ALT_INTRA { { AOM_ICDF(17536), AOM_ICDF(19321), AOM_ICDF(21527), AOM_ICDF(25360), AOM_ICDF(27516), AOM_ICDF(28026), AOM_ICDF(29323), AOM_ICDF(30023), AOM_ICDF(30999), AOM_ICDF(32768), 0 },
diff --git a/av1/common/enums.h b/av1/common/enums.h index 1235d91..6285c5f 100644 --- a/av1/common/enums.h +++ b/av1/common/enums.h
@@ -320,8 +320,12 @@ D63_PRED, // Directional 63 deg = round(arctan(2/1) * 180/pi) #if CONFIG_ALT_INTRA SMOOTH_PRED, // Combination of horizontal and vertical interpolation -#endif // CONFIG_ALT_INTRA - TM_PRED, // True-motion +#if CONFIG_SMOOTH_HV + SMOOTH_V_PRED, // Vertical interpolation + SMOOTH_H_PRED, // Horizontal interpolation +#endif // CONFIG_SMOOTH_HV +#endif // CONFIG_ALT_INTRA + TM_PRED, // True-motion NEARESTMV, NEARMV, ZEROMV,
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c index 757cf13..9a5bdb1 100644 --- a/av1/common/reconintra.c +++ b/av1/common/reconintra.c
@@ -47,7 +47,11 @@ NEED_LEFT | NEED_BOTTOMLEFT, // D207 NEED_ABOVE | NEED_ABOVERIGHT, // D63 #if CONFIG_ALT_INTRA - NEED_LEFT | NEED_ABOVE, // SMOOTH + NEED_LEFT | NEED_ABOVE, // SMOOTH +#if CONFIG_SMOOTH_HV + NEED_LEFT | NEED_ABOVE, // SMOOTH_V + NEED_LEFT | NEED_ABOVE, // SMOOTH_H +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA NEED_LEFT | NEED_ABOVE | NEED_ABOVELEFT, // TM }; @@ -590,6 +594,10 @@ #if CONFIG_ALT_INTRA INIT_ALL_SIZES(pred[TM_PRED], paeth); INIT_ALL_SIZES(pred[SMOOTH_PRED], smooth); +#if CONFIG_SMOOTH_HV + INIT_ALL_SIZES(pred[SMOOTH_V_PRED], smooth_v); + INIT_ALL_SIZES(pred[SMOOTH_H_PRED], smooth_h); +#endif // CONFIG_SMOOTH_HV #else INIT_ALL_SIZES(pred[TM_PRED], tm); #endif // CONFIG_ALT_INTRA @@ -612,6 +620,10 @@ #if CONFIG_ALT_INTRA INIT_ALL_SIZES(pred_high[TM_PRED], highbd_paeth); INIT_ALL_SIZES(pred_high[SMOOTH_PRED], highbd_smooth); +#if CONFIG_SMOOTH_HV + INIT_ALL_SIZES(pred_high[SMOOTH_V_PRED], highbd_smooth_v); + INIT_ALL_SIZES(pred_high[SMOOTH_H_PRED], highbd_smooth_h); +#endif // CONFIG_SMOOTH_HV #else INIT_ALL_SIZES(pred_high[TM_PRED], highbd_tm); #endif // CONFIG_ALT_INTRA
diff --git a/av1/common/reconintra.h b/av1/common/reconintra.h index e571886..6d4a86a 100644 --- a/av1/common/reconintra.h +++ b/av1/common/reconintra.h
@@ -63,6 +63,9 @@ return mode != DC_PRED && mode != TM_PRED && #if CONFIG_ALT_INTRA mode != SMOOTH_PRED && +#if CONFIG_SMOOTH_HV + mode != SMOOTH_V_PRED && mode != SMOOTH_H_PRED && +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA bsize >= BLOCK_8X8; }
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 641c212..0ccb4b3 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -1243,7 +1243,11 @@ THR_D63_PRED /*D63_PRED*/, #if CONFIG_ALT_INTRA THR_SMOOTH, /*SMOOTH_PRED*/ -#endif // CONFIG_ALT_INTRA +#if CONFIG_SMOOTH_HV + THR_SMOOTH_V, /*SMOOTH_V_PRED*/ + THR_SMOOTH_H, /*SMOOTH_H_PRED*/ +#endif // CONFIG_SMOOTH_HV +#endif // CONFIG_ALT_INTRA THR_TM /*TM_PRED*/, }; ++mode_chosen_counts[kf_mode_index[mbmi->mode]];
diff --git a/av1/encoder/rd.h b/av1/encoder/rd.h index d4e54ea..d22789f 100644 --- a/av1/encoder/rd.h +++ b/av1/encoder/rd.h
@@ -130,6 +130,10 @@ #if CONFIG_ALT_INTRA THR_SMOOTH, +#if CONFIG_SMOOTH_HV + THR_SMOOTH_V, + THR_SMOOTH_H, +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA #if CONFIG_EXT_INTER
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 2953a5e..abe1b01 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -217,6 +217,10 @@ #if CONFIG_ALT_INTRA { SMOOTH_PRED, { INTRA_FRAME, NONE_FRAME } }, +#if CONFIG_SMOOTH_HV + { SMOOTH_V_PRED, { INTRA_FRAME, NONE_FRAME } }, + { SMOOTH_H_PRED, { INTRA_FRAME, NONE_FRAME } }, +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA #if CONFIG_EXT_INTER @@ -9549,12 +9553,10 @@ const int *const intra_mode_cost = cpi->mbmode_cost[size_group_lookup[bsize]]; int best_skip2 = 0; uint8_t ref_frame_skip_mask[2] = { 0 }; -#if CONFIG_EXT_INTER uint32_t mode_skip_mask[TOTAL_REFS_PER_FRAME] = { 0 }; +#if CONFIG_EXT_INTER MV_REFERENCE_FRAME best_single_inter_ref = LAST_FRAME; int64_t best_single_inter_rd = INT64_MAX; -#else - uint16_t mode_skip_mask[TOTAL_REFS_PER_FRAME] = { 0 }; #endif // CONFIG_EXT_INTER int mode_skip_start = sf->mode_skip_start + 1; const int *const rd_threshes = rd_opt->threshes[segment_id][bsize];
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h index cb57c6b..f400dce 100644 --- a/av1/encoder/speed_features.h +++ b/av1/encoder/speed_features.h
@@ -24,6 +24,9 @@ (1 << D207_PRED) | (1 << D63_PRED) | #if CONFIG_ALT_INTRA (1 << SMOOTH_PRED) | +#if CONFIG_SMOOTH_HV + (1 << SMOOTH_V_PRED) | (1 << SMOOTH_H_PRED) | +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA (1 << TM_PRED), INTRA_DC = (1 << DC_PRED),
diff --git a/configure b/configure index 2619808..ac6b1ad 100755 --- a/configure +++ b/configure
@@ -321,6 +321,7 @@ compound_singleref aom_qm lowdelay_compound + smooth_hv " CONFIG_LIST=" dependency_tracking @@ -517,6 +518,8 @@ enabled ext_delta_q && soft_enable delta_q enabled txk_sel && soft_enable lv_map enabled compound_round && soft_enable convolve_round + enabled smooth_hv && soft_enable alt_intra + if ! enabled delta_q && enabled ext_delta_q; then log_echo "ext_delta_q requires delta_q, so disabling ext_delta_q" disable_feature ext_delta_q
diff --git a/test/test_intra_pred_speed.cc b/test/test_intra_pred_speed.cc index c425362..70d8248 100644 --- a/test/test_intra_pred_speed.cc +++ b/test/test_intra_pred_speed.cc
@@ -31,17 +31,16 @@ typedef void (*AvxPredFunc)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left); -#if CONFIG_ALT_INTRA -const int kNumAv1IntraFuncs = 14; -#else -const int kNumAv1IntraFuncs = 13; -#endif // CONFIG_ALT_INTRA +const int kNumAv1IntraFuncs = INTRA_MODES + 3; // 4 DC predictor variants. const char *kAv1IntraPredNames[kNumAv1IntraFuncs] = { - "DC_PRED", "DC_LEFT_PRED", "DC_TOP_PRED", "DC_128_PRED", "V_PRED", - "H_PRED", "D45_PRED", "D135_PRED", "D117_PRED", "D153_PRED", - "D207_PRED", "D63_PRED", "TM_PRED", + "DC_PRED", "DC_LEFT_PRED", "DC_TOP_PRED", "DC_128_PRED", "V_PRED", + "H_PRED", "D45_PRED", "D135_PRED", "D117_PRED", "D153_PRED", + "D207_PRED", "D63_PRED", "TM_PRED", #if CONFIG_ALT_INTRA - "SMOOTH_PRED" + "SMOOTH_PRED", +#if CONFIG_SMOOTH_HV + "SMOOTH_V_PRED", "SMOOTH_H_PRED", +#endif // CONFIG_SMOOTH_HV #endif // CONFIG_ALT_INTRA }; @@ -104,7 +103,11 @@ "b852f42e6c4991d415400332d567872f", #if CONFIG_ALT_INTRA "828c49a4248993cce4876fa26eab697f", - "718c8cee9011f92ef31f77a9a7560010" + "718c8cee9011f92ef31f77a9a7560010", +#if CONFIG_SMOOTH_HV + "b37eeadbbd9e3bdff023a5097b59213a", + "d6fb9c659d82c78f0d0c891da6cba87f", +#endif // CONFIG_SMOOTH_HV #else "309a618577b27c648f9c5ee45252bc8f", #endif // CONFIG_ALT_INTRA @@ -129,7 +132,11 @@ "7a09adb0fa6c2bf889a99dd816622feb", #if CONFIG_ALT_INTRA "f6ade499c626d38eb70661184b79bc57", - "1ad5b106c79b792e514ba25e87139b5e" + "1ad5b106c79b792e514ba25e87139b5e", +#if CONFIG_SMOOTH_HV + "fe0d359b91a1d8141483d2e032f1b75f", + "0cfd7603ced02829d1ce18b6795d73d0", +#endif // CONFIG_SMOOTH_HV #else "815b75c8e0d91cc1ae766dc5d3e445a3", #endif // CONFIG_ALT_INTRA @@ -154,7 +161,11 @@ "f7063ccbc29f87303d5c3d0555b08944", #if CONFIG_ALT_INTRA "7adcaaa3554eb71a81fc48cb9043984b", - "c0acea4397c1b4d54a21bbcec5731dff" + "c0acea4397c1b4d54a21bbcec5731dff", +#if CONFIG_SMOOTH_HV + "f15b8712f0f064e98a7d804d3074afa7", + "01a09cdb8edd06d840c84643032fc02f", +#endif // CONFIG_SMOOTH_HV #else "b8a41aa968ec108af447af4217cba91b", #endif // CONFIG_ALT_INTRA @@ -179,7 +190,11 @@ "d520125ebd512c63c301bf67fea8e059", #if CONFIG_ALT_INTRA "297e8fbb5d33c29b12b228fa9d7c40a4", - "31b9296d70dd82238c87173e6d5e65fd" + "31b9296d70dd82238c87173e6d5e65fd", +#if CONFIG_SMOOTH_HV + "f1041f77a34e86aaf30ea779ba84a2e8", + "83e2b744a6a3d82321744442b1db945c", +#endif // CONFIG_SMOOTH_HV #else "9e1370c6d42e08d357d9612c93a71cfc", #endif // CONFIG_ALT_INTRA @@ -193,11 +208,12 @@ // Defines a test case for |arch| (e.g., C, SSE2, ...) passing the predictors // to |test_func|. The test name is 'arch.test_func', e.g., C.TestIntraPred4. #define INTRA_PRED_TEST(arch, test_func, dc, dc_left, dc_top, dc_128, v, h, \ - d45e, d135, d117, d153, d207e, d63e, tm, smooth) \ + d45e, d135, d117, d153, d207e, d63e, tm, smooth, \ + smooth_v, smooth_h) \ TEST(arch, test_func) { \ static const AvxPredFunc aom_intra_pred[] = { \ - dc, dc_left, dc_top, dc_128, v, h, d45e, \ - d135, d117, d153, d207e, d63e, tm, smooth \ + dc, dc_left, dc_top, dc_128, v, h, d45e, d135, \ + d117, d153, d207e, d63e, tm, smooth, smooth_v, smooth_h \ }; \ test_func(aom_intra_pred); \ } @@ -208,9 +224,18 @@ #if CONFIG_ALT_INTRA #define tm_pred_func aom_paeth_predictor_4x4_c #define smooth_pred_func aom_smooth_predictor_4x4_c +#if CONFIG_SMOOTH_HV +#define smooth_v_pred_func aom_smooth_v_predictor_4x4_c +#define smooth_h_pred_func aom_smooth_h_predictor_4x4_c +#else +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL +#endif // CONFIG_SMOOTH_HV #else #define tm_pred_func aom_tm_predictor_4x4_c #define smooth_pred_func NULL +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL #endif // CONFIG_ALT_INTRA INTRA_PRED_TEST(C, TestIntraPred4, aom_dc_predictor_4x4_c, @@ -219,10 +244,13 @@ aom_h_predictor_4x4_c, aom_d45e_predictor_4x4_c, aom_d135_predictor_4x4_c, aom_d117_predictor_4x4_c, aom_d153_predictor_4x4_c, aom_d207e_predictor_4x4_c, - aom_d63e_predictor_4x4_c, tm_pred_func, smooth_pred_func) + aom_d63e_predictor_4x4_c, tm_pred_func, smooth_pred_func, + smooth_v_pred_func, smooth_h_pred_func) #undef tm_pred_func #undef smooth_pred_func +#undef smooth_v_pred_func +#undef smooth_h_pred_func #if HAVE_SSE2 #if CONFIG_ALT_INTRA @@ -235,7 +263,7 @@ aom_dc_left_predictor_4x4_sse2, aom_dc_top_predictor_4x4_sse2, aom_dc_128_predictor_4x4_sse2, aom_v_predictor_4x4_sse2, aom_h_predictor_4x4_sse2, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_SSE2 @@ -243,7 +271,7 @@ #if HAVE_SSSE3 INTRA_PRED_TEST(SSSE3, TestIntraPred4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, aom_d153_predictor_4x4_ssse3, NULL, - aom_d63e_predictor_4x4_ssse3, NULL, NULL) + aom_d63e_predictor_4x4_ssse3, NULL, NULL, NULL, NULL) #endif // HAVE_SSSE3 #if HAVE_DSPR2 @@ -254,7 +282,7 @@ #endif // CONFIG_ALT_INTRA INTRA_PRED_TEST(DSPR2, TestIntraPred4, aom_dc_predictor_4x4_dspr2, NULL, NULL, NULL, NULL, aom_h_predictor_4x4_dspr2, NULL, NULL, NULL, NULL, - NULL, NULL, tm_pred_func, NULL) + NULL, NULL, tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_DSPR2 @@ -268,7 +296,7 @@ aom_dc_left_predictor_4x4_neon, aom_dc_top_predictor_4x4_neon, aom_dc_128_predictor_4x4_neon, aom_v_predictor_4x4_neon, aom_h_predictor_4x4_neon, NULL, aom_d135_predictor_4x4_neon, - NULL, NULL, NULL, NULL, tm_pred_func, NULL) + NULL, NULL, NULL, NULL, tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_NEON @@ -282,7 +310,7 @@ aom_dc_left_predictor_4x4_msa, aom_dc_top_predictor_4x4_msa, aom_dc_128_predictor_4x4_msa, aom_v_predictor_4x4_msa, aom_h_predictor_4x4_msa, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_MSA @@ -292,9 +320,18 @@ #if CONFIG_ALT_INTRA #define tm_pred_func aom_paeth_predictor_8x8_c #define smooth_pred_func aom_smooth_predictor_8x8_c +#if CONFIG_SMOOTH_HV +#define smooth_v_pred_func aom_smooth_v_predictor_8x8_c +#define smooth_h_pred_func aom_smooth_h_predictor_8x8_c +#else +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL +#endif // CONFIG_SMOOTH_HV #else #define tm_pred_func aom_tm_predictor_8x8_c #define smooth_pred_func NULL +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL #endif // CONFIG_ALT_INTRA INTRA_PRED_TEST(C, TestIntraPred8, aom_dc_predictor_8x8_c, aom_dc_left_predictor_8x8_c, aom_dc_top_predictor_8x8_c, @@ -302,9 +339,12 @@ aom_h_predictor_8x8_c, aom_d45e_predictor_8x8_c, aom_d135_predictor_8x8_c, aom_d117_predictor_8x8_c, aom_d153_predictor_8x8_c, aom_d207e_predictor_8x8_c, - aom_d63e_predictor_8x8_c, tm_pred_func, smooth_pred_func) + aom_d63e_predictor_8x8_c, tm_pred_func, smooth_pred_func, + smooth_v_pred_func, smooth_h_pred_func) #undef tm_pred_func #undef smooth_pred_func +#undef smooth_v_pred_func +#undef smooth_h_pred_func #if HAVE_SSE2 #if CONFIG_ALT_INTRA @@ -316,14 +356,14 @@ aom_dc_left_predictor_8x8_sse2, aom_dc_top_predictor_8x8_sse2, aom_dc_128_predictor_8x8_sse2, aom_v_predictor_8x8_sse2, aom_h_predictor_8x8_sse2, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_SSE2 #if HAVE_SSSE3 INTRA_PRED_TEST(SSSE3, TestIntraPred8, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, aom_d153_predictor_8x8_ssse3, NULL, NULL, NULL, - NULL) + NULL, NULL, NULL) #endif // HAVE_SSSE3 #if HAVE_DSPR2 @@ -334,7 +374,7 @@ #endif // CONFIG_ALT_INTRA INTRA_PRED_TEST(DSPR2, TestIntraPred8, aom_dc_predictor_8x8_dspr2, NULL, NULL, NULL, NULL, aom_h_predictor_8x8_dspr2, NULL, NULL, NULL, NULL, - NULL, NULL, tm_pred_func, NULL) + NULL, NULL, tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_DSPR2 @@ -348,7 +388,7 @@ aom_dc_left_predictor_8x8_neon, aom_dc_top_predictor_8x8_neon, aom_dc_128_predictor_8x8_neon, aom_v_predictor_8x8_neon, aom_h_predictor_8x8_neon, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_NEON @@ -362,7 +402,7 @@ aom_dc_left_predictor_8x8_msa, aom_dc_top_predictor_8x8_msa, aom_dc_128_predictor_8x8_msa, aom_v_predictor_8x8_msa, aom_h_predictor_8x8_msa, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_MSA @@ -372,9 +412,18 @@ #if CONFIG_ALT_INTRA #define tm_pred_func aom_paeth_predictor_16x16_c #define smooth_pred_func aom_smooth_predictor_16x16_c +#if CONFIG_SMOOTH_HV +#define smooth_v_pred_func aom_smooth_v_predictor_16x16_c +#define smooth_h_pred_func aom_smooth_h_predictor_16x16_c +#else +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL +#endif // CONFIG_SMOOTH_HV #else #define tm_pred_func aom_tm_predictor_16x16_c #define smooth_pred_func NULL +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL #endif // CONFIG_ALT_INTRA INTRA_PRED_TEST(C, TestIntraPred16, aom_dc_predictor_16x16_c, aom_dc_left_predictor_16x16_c, aom_dc_top_predictor_16x16_c, @@ -382,9 +431,12 @@ aom_h_predictor_16x16_c, aom_d45e_predictor_16x16_c, aom_d135_predictor_16x16_c, aom_d117_predictor_16x16_c, aom_d153_predictor_16x16_c, aom_d207e_predictor_16x16_c, - aom_d63e_predictor_16x16_c, tm_pred_func, smooth_pred_func) + aom_d63e_predictor_16x16_c, tm_pred_func, smooth_pred_func, + smooth_v_pred_func, smooth_h_pred_func) #undef tm_pred_func #undef smooth_pred_func +#undef smooth_v_pred_func +#undef smooth_h_pred_func #if HAVE_SSE2 #if CONFIG_ALT_INTRA @@ -397,20 +449,20 @@ aom_dc_top_predictor_16x16_sse2, aom_dc_128_predictor_16x16_sse2, aom_v_predictor_16x16_sse2, aom_h_predictor_16x16_sse2, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_SSE2 #if HAVE_SSSE3 INTRA_PRED_TEST(SSSE3, TestIntraPred16, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, aom_d153_predictor_16x16_ssse3, NULL, NULL, - NULL, NULL) + NULL, NULL, NULL, NULL) #endif // HAVE_SSSE3 #if HAVE_DSPR2 INTRA_PRED_TEST(DSPR2, TestIntraPred16, aom_dc_predictor_16x16_dspr2, NULL, NULL, NULL, NULL, aom_h_predictor_16x16_dspr2, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL) + NULL, NULL, NULL, NULL, NULL, NULL, NULL) #endif // HAVE_DSPR2 #if HAVE_NEON @@ -424,7 +476,7 @@ aom_dc_top_predictor_16x16_neon, aom_dc_128_predictor_16x16_neon, aom_v_predictor_16x16_neon, aom_h_predictor_16x16_neon, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_NEON @@ -438,7 +490,7 @@ aom_dc_left_predictor_16x16_msa, aom_dc_top_predictor_16x16_msa, aom_dc_128_predictor_16x16_msa, aom_v_predictor_16x16_msa, aom_h_predictor_16x16_msa, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_MSA @@ -448,9 +500,18 @@ #if CONFIG_ALT_INTRA #define tm_pred_func aom_paeth_predictor_32x32_c #define smooth_pred_func aom_smooth_predictor_32x32_c +#if CONFIG_SMOOTH_HV +#define smooth_v_pred_func aom_smooth_v_predictor_32x32_c +#define smooth_h_pred_func aom_smooth_h_predictor_32x32_c +#else +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL +#endif // CONFIG_SMOOTH_HV #else #define tm_pred_func aom_tm_predictor_32x32_c #define smooth_pred_func NULL +#define smooth_v_pred_func NULL +#define smooth_h_pred_func NULL #endif // CONFIG_ALT_INTRA INTRA_PRED_TEST(C, TestIntraPred32, aom_dc_predictor_32x32_c, aom_dc_left_predictor_32x32_c, aom_dc_top_predictor_32x32_c, @@ -458,9 +519,12 @@ aom_h_predictor_32x32_c, aom_d45e_predictor_32x32_c, aom_d135_predictor_32x32_c, aom_d117_predictor_32x32_c, aom_d153_predictor_32x32_c, aom_d207e_predictor_32x32_c, - aom_d63e_predictor_32x32_c, tm_pred_func, smooth_pred_func) + aom_d63e_predictor_32x32_c, tm_pred_func, smooth_pred_func, + smooth_v_pred_func, smooth_h_pred_func) #undef tm_pred_func #undef smooth_pred_func +#undef smooth_v_pred_func +#undef smooth_h_pred_func #if HAVE_SSE2 #if CONFIG_ALT_INTRA @@ -473,14 +537,14 @@ aom_dc_top_predictor_32x32_sse2, aom_dc_128_predictor_32x32_sse2, aom_v_predictor_32x32_sse2, aom_h_predictor_32x32_sse2, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_SSE2 #if HAVE_SSSE3 INTRA_PRED_TEST(SSSE3, TestIntraPred32, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, aom_d153_predictor_32x32_ssse3, NULL, NULL, - NULL, NULL) + NULL, NULL, NULL, NULL) #endif // HAVE_SSSE3 #if HAVE_NEON @@ -494,7 +558,7 @@ aom_dc_top_predictor_32x32_neon, aom_dc_128_predictor_32x32_neon, aom_v_predictor_32x32_neon, aom_h_predictor_32x32_neon, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_NEON @@ -508,7 +572,7 @@ aom_dc_left_predictor_32x32_msa, aom_dc_top_predictor_32x32_msa, aom_dc_128_predictor_32x32_msa, aom_v_predictor_32x32_msa, aom_h_predictor_32x32_msa, NULL, NULL, NULL, NULL, NULL, NULL, - tm_pred_func, NULL) + tm_pred_func, NULL, NULL, NULL) #undef tm_pred_func #endif // HAVE_MSA