Introducing a model for pruning the TX size search
Use a neural-network-based binary classifier to predict the first split
decision on the highest level of the TX size RD search tree. Depending
on how confident we are in the prediction we either keep full unmodified
TX size search or use the largest possible TX size and stop any further
search.
Average speed-up: 3-4%
Quality loss (lowres): 0.062%
Quality loss (midres): 0.018%
Change-Id: I64c0317db74cbeddfbdf772147c43e99e275891f
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 75966bd..a4df6eb 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1191,6 +1191,34 @@
for (i = 0; i < esq_h - 1; i++) verdist[i] *= e_recip;
}
+// Instead of 1D projections of the block energy distribution computed by
+// get_energy_distribution_finer() this function computes a full
+// two-dimensional energy distribution of the input block.
+static void get_2D_energy_distribution(const int16_t *diff, int stride, int bw,
+ int bh, float *edist) {
+ unsigned int esq[256] = { 0 };
+ const int esq_w = bw >> 2;
+ const int esq_h = bh >> 2;
+ const int esq_sz = esq_w * esq_h;
+ uint64_t total = 0;
+ for (int i = 0; i < bh; i += 4) {
+ for (int j = 0; j < bw; j += 4) {
+ unsigned int cur_sum_energy = 0;
+ for (int k = 0; k < 4; k++) {
+ const int16_t *cur_diff = diff + (i + k) * stride + j;
+ cur_sum_energy += cur_diff[0] * cur_diff[0] +
+ cur_diff[1] * cur_diff[1] +
+ cur_diff[2] * cur_diff[2] + cur_diff[3] * cur_diff[3];
+ }
+ esq[(i >> 2) * esq_w + (j >> 2)] = cur_sum_energy;
+ total += cur_sum_energy;
+ }
+ }
+
+ const float e_recip = 1.0f / (float)total;
+ for (int i = 0; i < esq_sz - 1; i++) edist[i] = esq[i] * e_recip;
+}
+
// Similar to get_horver_correlation, but also takes into account first
// row/column, when computing horizontal/vertical correlation.
static void get_horver_correlation_full(const int16_t *diff, int stride, int w,
@@ -1302,13 +1330,65 @@
for (i = 0; i < 16; i++) scores_2D[i] /= sum;
}
-static int prune_tx_types_2D(BLOCK_SIZE bsize, const MACROBLOCK *x,
- int tx_set_type, int pruning_aggressiveness) {
+// Similarly to compute_1D_scores() performs a forward pass through a
+// neural network with two fully-connected layers. The only difference
+// is that it assumes 1 output neuron, as required by the classifier used
+// for TX size pruning.
+static float compute_tx_split_prune_score(float *features, int num_features,
+ const float *fc1, const float *b1,
+ const float *fc2, float b2,
+ int num_hidden_units) {
+ assert(num_hidden_units <= 64);
+ float hidden_layer[64];
+ for (int i = 0; i < num_hidden_units; i++) {
+ const float *cur_coef = fc1 + i * num_features;
+ hidden_layer[i] = 0.0f;
+ for (int j = 0; j < num_features; j++)
+ hidden_layer[i] += cur_coef[j] * features[j];
+ hidden_layer[i] = AOMMAX(hidden_layer[i] + b1[i], 0.0f);
+ }
+ float dst_score = 0.0f;
+ for (int j = 0; j < num_hidden_units; j++)
+ dst_score += fc2[j] * hidden_layer[j];
+ dst_score += b2;
+ return dst_score;
+}
+
+static int prune_tx_split(BLOCK_SIZE bsize, const int16_t *diff, float hcorr,
+ float vcorr) {
+ if (bsize <= BLOCK_4X4 || bsize > BLOCK_16X16) return 0;
+
+ float features[17];
+ const int bw = block_size_wide[bsize], bh = block_size_high[bsize];
+ const int feature_num = (bw / 4) * (bh / 4) + 1;
+ assert(feature_num <= 17);
+
+ get_2D_energy_distribution(diff, bw, bw, bh, features);
+ features[feature_num - 2] = hcorr;
+ features[feature_num - 1] = vcorr;
+
+ const int bidx = bsize - BLOCK_4X4 - 1;
+ const float *fc1 = av1_prune_tx_split_learned_weights[bidx];
+ const float *b1 =
+ fc1 + av1_prune_tx_split_num_hidden_units[bidx] * feature_num;
+ const float *fc2 = b1 + av1_prune_tx_split_num_hidden_units[bidx];
+ float b2 = *(fc2 + av1_prune_tx_split_num_hidden_units[bidx]);
+ float score =
+ compute_tx_split_prune_score(features, feature_num, fc1, b1, fc2, b2,
+ av1_prune_tx_split_num_hidden_units[bidx]);
+
+ return (score > av1_prune_tx_split_thresholds[bidx]);
+}
+
+static int prune_tx_2D(BLOCK_SIZE bsize, const MACROBLOCK *x, int tx_set_type,
+ int tx_type_pruning_aggressiveness,
+ int use_tx_split_prune) {
if (bsize >= BLOCK_32X32) return 0;
const struct macroblock_plane *const p = &x->plane[0];
const int bidx = AOMMAX(bsize - BLOCK_4X4, 0);
const float score_thresh =
- av1_prune_2D_adaptive_thresholds[bidx][pruning_aggressiveness - 1];
+ av1_prune_2D_adaptive_thresholds[bidx]
+ [tx_type_pruning_aggressiveness - 1];
float hfeatures[16], vfeatures[16];
float hscores[4], vscores[4];
@@ -1377,11 +1457,23 @@
prune_bitmask |= (1 << tx_type_table_2D[i]);
}
+ // Also apply TX size pruning if it's turned on. The value
+ // of prune_tx_split_flag indicates whether we should do
+ // full TX size search (flag=0) or use the largest available
+ // TX size without performing any further search (flag=1).
+ int prune_tx_split_flag = 0;
+ if (use_tx_split_prune) {
+ prune_tx_split_flag =
+ prune_tx_split(bsize, p->src_diff, hfeatures[hfeatures_num - 1],
+ vfeatures[vfeatures_num - 1]);
+ }
+ prune_bitmask |= (prune_tx_split_flag << TX_TYPES);
return prune_bitmask;
}
-static int prune_tx_types(const AV1_COMP *cpi, BLOCK_SIZE bsize, MACROBLOCK *x,
- const MACROBLOCKD *const xd, int tx_set_type) {
+static int prune_tx(const AV1_COMP *cpi, BLOCK_SIZE bsize, MACROBLOCK *x,
+ const MACROBLOCKD *const xd, int tx_set_type,
+ int use_tx_split_prune) {
int tx_set = ext_tx_set_index[1][tx_set_type];
assert(tx_set >= 0);
const int *tx_set_1D = ext_tx_used_inter_1D[tx_set];
@@ -1403,17 +1495,17 @@
break;
case PRUNE_2D_ACCURATE:
if (tx_set_type == EXT_TX_SET_ALL16)
- return prune_tx_types_2D(bsize, x, tx_set_type, 6);
+ return prune_tx_2D(bsize, x, tx_set_type, 6, use_tx_split_prune);
else if (tx_set_type == EXT_TX_SET_DTT9_IDTX_1DDCT)
- return prune_tx_types_2D(bsize, x, tx_set_type, 4);
+ return prune_tx_2D(bsize, x, tx_set_type, 4, use_tx_split_prune);
else
return 0;
break;
case PRUNE_2D_FAST:
if (tx_set_type == EXT_TX_SET_ALL16)
- return prune_tx_types_2D(bsize, x, tx_set_type, 10);
+ return prune_tx_2D(bsize, x, tx_set_type, 10, use_tx_split_prune);
else if (tx_set_type == EXT_TX_SET_DTT9_IDTX_1DDCT)
- return prune_tx_types_2D(bsize, x, tx_set_type, 7);
+ return prune_tx_2D(bsize, x, tx_set_type, 7, use_tx_split_prune);
else
return 0;
break;
@@ -2499,7 +2591,7 @@
if (is_inter && cpi->sf.tx_type_search.prune_mode > NO_PRUNE &&
!x->use_default_inter_tx_type) {
- prune = prune_tx_types(cpi, bs, x, xd, tx_set_type);
+ prune = prune_tx(cpi, bs, x, xd, tx_set_type, 0);
}
if (get_ext_tx_types(mbmi->tx_size, bs, is_inter, cm->reduced_tx_set_used) >
1 &&
@@ -2772,7 +2864,7 @@
int prune = 0;
if (is_inter && cpi->sf.tx_type_search.prune_mode > NO_PRUNE &&
!x->use_default_inter_tx_type) {
- prune = prune_tx_types(cpi, bs, x, xd, EXT_TX_SET_ALL16);
+ prune = prune_tx(cpi, bs, x, xd, EXT_TX_SET_ALL16, 0);
}
last_rd = INT64_MAX;
@@ -3952,7 +4044,8 @@
ENTROPY_CONTEXT *ta, ENTROPY_CONTEXT *tl,
TXFM_CONTEXT *tx_above, TXFM_CONTEXT *tx_left,
RD_STATS *rd_stats, int64_t ref_best_rd,
- int *is_cost_valid, int fast) {
+ int *is_cost_valid, int fast,
+ int tx_split_prune_flag) {
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
struct macroblock_plane *const p = &x->plane[plane];
@@ -4172,7 +4265,7 @@
#endif
}
- if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH
+ if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH && tx_split_prune_flag == 0
#if CONFIG_MRC_TX
// If the tx type we are trying is MRC_DCT, we cannot partition the
// transform into anything smaller than TX_32X32
@@ -4203,7 +4296,7 @@
select_tx_block(cpi, x, offsetr, offsetc, plane, block, sub_txs,
depth + 1, plane_bsize, ta, tl, tx_above, tx_left,
&this_rd_stats, ref_best_rd - tmp_rd, &this_cost_valid,
- fast);
+ fast, 0);
#if CONFIG_DIST_8X8
if (x->using_dist_8x8 && plane == 0 && tx_size == TX_8X8) {
sub8x8_eob[i] = p->eobs[block];
@@ -4388,7 +4481,8 @@
static void select_inter_block_yrd(const AV1_COMP *cpi, MACROBLOCK *x,
RD_STATS *rd_stats, BLOCK_SIZE bsize,
- int64_t ref_best_rd, int fast) {
+ int64_t ref_best_rd, int fast,
+ int tx_split_prune_flag) {
MACROBLOCKD *const xd = &x->e_mbd;
int is_cost_valid = 1;
int64_t this_rd = 0;
@@ -4426,7 +4520,7 @@
select_tx_block(cpi, x, idy, idx, 0, block, max_tx_size, init_depth,
plane_bsize, ctxa, ctxl, tx_above, tx_left,
&pn_rd_stats, ref_best_rd - this_rd, &is_cost_valid,
- fast);
+ fast, tx_split_prune_flag);
if (!is_cost_valid || pn_rd_stats.rate == INT_MAX) {
av1_invalid_rd_stats(rd_stats);
return;
@@ -4452,7 +4546,8 @@
static int64_t select_tx_size_fix_type(const AV1_COMP *cpi, MACROBLOCK *x,
RD_STATS *rd_stats, BLOCK_SIZE bsize,
int mi_row, int mi_col,
- int64_t ref_best_rd, TX_TYPE tx_type) {
+ int64_t ref_best_rd, TX_TYPE tx_type,
+ int tx_split_prune_flag) {
const int fast = cpi->sf.tx_size_search_method > USE_FULL_RD;
const AV1_COMMON *const cm = &cpi->common;
MACROBLOCKD *const xd = &x->e_mbd;
@@ -4477,7 +4572,8 @@
(void)mi_col;
mbmi->tx_type = tx_type;
- select_inter_block_yrd(cpi, x, rd_stats, bsize, ref_best_rd, fast);
+ select_inter_block_yrd(cpi, x, rd_stats, bsize, ref_best_rd, fast,
+ tx_split_prune_flag);
if (rd_stats->rate == INT_MAX) return INT64_MAX;
mbmi->min_tx_size = get_min_tx_size(mbmi->inter_tx_size[0][0]);
@@ -4950,11 +5046,16 @@
if (is_inter && cpi->sf.tx_type_search.prune_mode > NO_PRUNE &&
!x->use_default_inter_tx_type && !xd->lossless[mbmi->segment_id]) {
- prune = prune_tx_types(cpi, bsize, x, xd, tx_set_type);
+ prune = prune_tx(cpi, bsize, x, xd, tx_set_type,
+ cpi->sf.tx_type_search.use_tx_size_pruning);
}
int found = 0;
+ int tx_split_prune_flag = 0;
+ if (is_inter && cpi->sf.tx_type_search.prune_mode >= PRUNE_2D_ACCURATE)
+ tx_split_prune_flag = ((prune >> TX_TYPES) & 1);
+
for (tx_type = txk_start; tx_type < txk_end; ++tx_type) {
RD_STATS this_rd_stats;
av1_init_rd_stats(&this_rd_stats);
@@ -4992,7 +5093,7 @@
if (tx_type != DCT_DCT) continue;
rd = select_tx_size_fix_type(cpi, x, &this_rd_stats, bsize, mi_row, mi_col,
- ref_best_rd, tx_type);
+ ref_best_rd, tx_type, tx_split_prune_flag);
// If the current tx_type is not included in the tx_set for the smallest
// tx size found, then all vartx partitions were actually transformed with
// DCT_DCT and we should avoid picking it.
@@ -5027,7 +5128,7 @@
RD_STATS this_rd_stats;
mbmi->use_lgt = 1;
rd = select_tx_size_fix_type(cpi, x, &this_rd_stats, bsize, mi_row, mi_col,
- ref_best_rd, 0);
+ ref_best_rd, 0, 0);
if (rd < best_rd) {
best_rd = rd;
*rd_stats = this_rd_stats;
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c
index 6fe07ec..f6f91ab 100644
--- a/av1/encoder/speed_features.c
+++ b/av1/encoder/speed_features.c
@@ -397,6 +397,7 @@
sf->alt_ref_search_fp = 0;
sf->partition_search_type = SEARCH_PARTITION;
sf->tx_type_search.prune_mode = PRUNE_2D_ACCURATE;
+ sf->tx_type_search.use_tx_size_pruning = 1;
sf->tx_type_search.use_skip_flag_prediction = 1;
sf->tx_type_search.fast_intra_tx_type_search = 0;
sf->tx_type_search.fast_inter_tx_type_search = 0;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h
index db62f02..e84e8ce 100644
--- a/av1/encoder/speed_features.h
+++ b/av1/encoder/speed_features.h
@@ -207,6 +207,12 @@
// Use a skip flag prediction model to detect blocks with skip = 1 early
// and avoid doing full TX type search for such blocks.
int use_skip_flag_prediction;
+
+ // Use a model to predict TX block split decisions on the highest level
+ // of TX partition tree and apply adaptive pruning based on that to speed up
+ // RD search (currently works only when prune_mode equals to PRUNE_2D_ACCURATE
+ // or PRUNE_2D_FAST).
+ int use_tx_size_pruning;
} TX_TYPE_SEARCH;
typedef enum {
diff --git a/av1/encoder/tx_prune_model_weights.h b/av1/encoder/tx_prune_model_weights.h
index 92a072d..47c73cc 100644
--- a/av1/encoder/tx_prune_model_weights.h
+++ b/av1/encoder/tx_prune_model_weights.h
@@ -792,6 +792,399 @@
0.06531f, 0.07336f, 0.08582f, 0.11072f },
};
+static const int av1_prune_tx_split_num_hidden_units[6] = { 16, 16, 16,
+ 32, 32, 64 };
+static const float *av1_prune_tx_split_learned_weights[6] = {
+ /* BLOCK_4X8 */
+ (float[]){ 0.32030f, 1.52126f, 1.14809f, -2.14866f, -0.08888f, -0.22737f,
+ -1.38105f, -0.51040f, 2.51004f, 2.17404f, -0.55634f, 1.41842f,
+ -0.49649f, -0.44879f, 2.68777f, -4.22827f, -0.60068f, 0.41569f,
+ -0.00639f, -0.26465f, 3.59964f, 1.05503f, 1.67338f, 1.21009f,
+ -1.94552f, -0.24265f, 1.44033f, -0.73353f, -0.07009f, 0.94179f,
+ 0.04023f, 1.07040f, 0.51453f, -1.04236f, -0.25694f, -0.26323f,
+ 0.82425f, 1.56855f, 1.22929f, -0.63590f, -0.14229f, -1.23524f,
+ -0.06514f, -0.55427f, 0.21009f, 0.56361f, -1.39779f, 1.36076f,
+ 0.09111f, 1.17656f, 0.24083f, -2.68367f, -1.22950f, 0.62489f,
+ -2.89232f, -0.78764f, 0.47787f, -1.39686f, -0.17512f, -0.27895f,
+ 1.50220f, 0.00000f, -0.06392f, -0.41602f, 0.80551f, -1.81964f,
+ 1.81584f, -3.88831f, 2.06815f, -3.70215f, 3.83453f, -1.55123f,
+ -1.94259f, 1.34788f, -0.13279f, -0.79214f, 0.71301f, -0.19471f,
+ -0.07253f, -1.05497f, -1.23037f },
+ /* BLOCK_8X4 */
+ (float[]){ -0.34959f, 3.09285f, 0.78709f, -2.43502f, -0.10261f, -0.07371f,
+ 0.36992f, -0.07637f, 0.28320f, 2.25698f, 0.49487f, -0.43731f,
+ 0.72762f, -0.16534f, 0.32642f, -4.77212f, 0.38547f, -0.17502f,
+ 0.03277f, 2.37985f, 0.66447f, -1.19182f, 3.21549f, -0.15916f,
+ -3.76120f, -0.06682f, -0.45622f, 0.22224f, 0.40141f, 0.57949f,
+ 0.45262f, 3.64971f, -0.22332f, 0.21022f, 1.54482f, 0.46679f,
+ 1.03831f, -0.15273f, 0.33478f, -0.63590f, -0.14229f, -1.23524f,
+ -1.57408f, -0.26338f, 1.56286f, 0.53111f, -0.71675f, 1.38037f,
+ 1.60338f, 1.28888f, 0.14721f, -1.97339f, 0.20711f, 0.24843f,
+ -0.38865f, -2.29281f, 1.20972f, 0.08247f, -3.16498f, -1.06884f,
+ 0.36580f, 0.00000f, -0.99106f, -1.15329f, 1.38434f, -1.83397f,
+ -0.32715f, -3.67003f, -0.66115f, -4.61855f, -1.39752f, 3.10370f,
+ -1.25350f, 0.00505f, 3.51122f, 1.39872f, -1.11827f, -0.19471f,
+ 2.31759f, 2.11014f, -0.26996f },
+ /* BLOCK_8X8 */
+ (float[]){ -2.47727f, 2.02291f, 0.50872f, 0.08612f, -0.50731f, -4.17997f,
+ -4.99049f, -0.10378f, -0.13314f, 1.84303f, 0.16978f, 0.22674f,
+ 0.04579f, -1.73010f, -0.74034f, -0.41242f, 0.03099f, -0.36317f,
+ 2.96804f, 1.73384f, -0.51191f, 0.08936f, -0.11552f, 2.05849f,
+ 2.38921f, -1.71574f, 3.84163f, 0.03147f, 0.06774f, -0.22495f,
+ 0.00158f, -0.14033f, 0.86344f, 1.18282f, 1.29665f, -0.15054f,
+ -0.06339f, -4.68035f, 0.39699f, 0.33972f, -3.02441f, 0.09658f,
+ 1.55562f, 0.41954f, 0.15387f, -1.50455f, 1.38531f, 0.95743f,
+ 0.54309f, 1.42863f, 2.17137f, 2.80152f, -0.12118f, -0.28639f,
+ -1.39431f, -0.13291f, -0.53808f, -3.61837f, -0.11427f, -0.16585f,
+ 2.27990f, 2.36602f, 2.05427f, 0.13960f, 0.01552f, 0.01583f,
+ 0.09690f, 0.02183f, 3.66735f, -0.66999f, -0.11664f, -0.53856f,
+ -0.05054f, -0.80409f, 2.83509f, -0.10204f, -0.11378f, 0.04303f,
+ -0.46864f, 4.37163f, 0.67772f, -1.06375f, 0.29005f, -3.82750f,
+ -2.63534f, -0.25700f, -1.10611f, -0.27371f, -0.01970f, -0.13272f,
+ 1.52793f, 0.87452f, -1.83178f, -2.67459f, -1.27264f, -3.56434f,
+ 1.42888f, -6.86701f, -1.98023f, 3.81828f, 1.40864f, -2.24906f,
+ 1.64376f, -3.70196f, -2.11058f, 1.24140f, 1.69127f, -2.04217f,
+ -3.04680f, 3.25083f, 1.31881f, 4.21563f, -3.58924f },
+ /* BLOCK_8X16 */
+ (float[]){ -0.21895f, -0.45677f, 2.41986f, 0.45214f, -2.74380f, -1.00732f,
+ 0.19281f, -0.07835f, -0.07427f, 0.11533f, -0.05784f, 0.41050f,
+ 0.45777f, 0.21196f, 0.28456f, 0.04115f, -0.28650f, 5.25257f,
+ -0.21835f, -0.10548f, 0.32348f, 0.33489f, -0.06561f, 0.35372f,
+ -0.64700f, -2.71813f, 2.06582f, 1.63493f, 0.65080f, 1.59359f,
+ 1.62042f, -1.55604f, -0.68386f, 0.37781f, -0.47955f, -0.60442f,
+ 1.29428f, 0.08807f, 1.47488f, 2.21390f, -1.24883f, -1.30805f,
+ 0.11024f, 0.61822f, 0.72328f, -0.70267f, 0.06369f, 0.02753f,
+ 0.23815f, 0.00898f, 0.37615f, -0.09525f, -0.35903f, -0.64775f,
+ 1.67392f, 1.30467f, 1.15131f, 1.25024f, -1.69001f, -2.22747f,
+ -0.64590f, -0.76387f, 0.19835f, 0.13566f, -0.32447f, 0.19677f,
+ 0.37378f, -0.15793f, 0.28234f, 0.41214f, -0.33675f, -0.20085f,
+ -2.42429f, -0.36136f, -1.28244f, -1.00030f, 0.24530f, -0.21880f,
+ 0.20256f, -1.16030f, 1.37917f, -0.18824f, 0.08422f, -0.26584f,
+ -0.28225f, -0.23964f, -0.93862f, 0.68627f, -0.26600f, 1.45596f,
+ -0.01694f, 0.25936f, 0.16832f, 0.01620f, -0.82569f, 0.17832f,
+ 0.17576f, 0.03032f, 0.25926f, -0.21567f, 0.23966f, 0.40671f,
+ 0.98998f, 0.87764f, 0.53139f, -0.19729f, -1.50531f, 1.18424f,
+ 1.90402f, 1.55604f, 2.83617f, 3.64986f, 0.08722f, -0.19534f,
+ -0.15563f, 0.11337f, 1.03154f, -0.36714f, -0.71317f, -0.07648f,
+ -0.17883f, -0.34857f, -0.20126f, -0.57790f, 0.03437f, -0.25365f,
+ -0.68480f, 0.64985f, 1.99386f, 1.96729f, 0.37909f, 0.57962f,
+ -0.31531f, 0.72729f, -1.33276f, 1.55848f, 1.81548f, 2.32462f,
+ 3.00107f, 0.77959f, 0.31942f, 0.21177f, -0.36679f, 1.65274f,
+ 0.55873f, 0.02198f, 0.01957f, -0.40375f, 0.16472f, -0.29589f,
+ 0.23933f, -0.66861f, -0.29314f, -0.12607f, 0.52150f, -0.12359f,
+ 0.52967f, -0.26430f, -0.22729f, 0.31530f, 0.30190f, -0.23286f,
+ -0.32586f, -0.37164f, 1.02935f, 1.35490f, 0.77903f, 0.67302f,
+ -0.33572f, -0.42498f, -1.27007f, -0.22194f, 0.48687f, 1.52368f,
+ 0.79515f, 0.46112f, 0.75748f, 0.73060f, 1.12397f, -1.63125f,
+ 1.11975f, 1.75004f, 0.96453f, 2.78651f, 1.41828f, -0.19729f,
+ 1.06517f, 0.00775f, -0.01563f, 1.09465f, 0.32625f, 0.02543f,
+ 0.18515f, -0.15120f, 0.31746f, 0.21150f, 0.57086f, -0.72082f,
+ -0.90390f, 0.16707f, -1.20865f, 0.18383f, -2.11851f, 0.67133f,
+ -0.91545f, 0.72087f, -0.29690f, -0.46287f, -0.27711f, 0.41903f,
+ 0.30798f, 0.26662f, 0.36932f, -0.38146f, -0.89384f, 3.66687f,
+ -0.37066f, 0.36173f, -0.27265f, -0.63719f, 0.07813f, 1.17721f,
+ -0.05952f, -0.59288f, -0.42216f, 0.25272f, 0.17027f, 0.50658f,
+ 0.55377f, -0.09560f, -0.45030f, -0.37908f, -0.78157f, -0.10020f,
+ 1.93944f, 2.06165f, -0.43706f, 0.32571f, -1.60805f, -2.79799f,
+ -0.37784f, -0.45904f, -0.77015f, -0.73018f, -0.01716f, -0.65036f,
+ -0.27082f, -1.08450f, -0.38493f, -0.04057f, -1.12733f, -0.50366f,
+ -0.68167f, -0.36223f, -1.24596f, -0.59888f, -0.78964f, 1.43948f,
+ -0.44269f, 0.57606f, -0.99366f, 0.12273f, 0.16581f, 0.33016f,
+ 0.07351f, 0.45060f, 0.15524f, -0.23562f, -2.65111f, 1.62168f,
+ -0.48448f, -0.36170f, -0.10941f, 0.35546f, -0.01819f, -0.14075f,
+ -0.39136f, -0.51852f, 0.79623f, -0.85423f, -0.10289f, 0.22549f,
+ -0.02515f, -0.21602f, 0.18202f, -0.00953f, -0.60522f, -0.00193f,
+ 0.28200f, -4.80451f, 0.89210f, -0.57028f, -0.28017f, -0.29095f,
+ -0.47640f, -0.65244f, -0.15689f, 0.75246f, 0.46751f, -2.15775f,
+ -1.32624f, 0.00000f, -0.91779f, -1.24749f, -1.02625f, 0.31726f,
+ -1.04629f, 1.28548f, -1.10129f, 1.53092f, -0.04115f, -2.17324f,
+ -0.22625f, -0.63461f, -0.51780f, 1.29639f, 1.11356f, 0.74084f,
+ -1.01941f, -0.21135f, -2.47039f, 6.28151f, 2.51358f, 2.96845f,
+ 2.26827f, -0.17043f, -3.09551f, -0.50127f, -2.41836f, -1.09834f,
+ -0.04842f, 2.39667f, -3.85959f, -0.13768f, 1.85736f, 3.77770f,
+ -0.28978f, 0.06029f, 2.14492f, 1.80605f, -2.72664f, 0.18844f,
+ 1.77425f, 1.68660f, 0.94666f, -0.22735f, 3.40241f, 1.61752f,
+ -1.65457f, -2.26556f, 1.59808f, -0.18132f, -3.72500f },
+ /* BLOCK_16X8 */
+ (float[]){ -0.30988f, 0.89705f, 0.69177f, 0.00918f, -0.44076f, 0.78649f,
+ 0.39568f, 0.01386f, -1.07152f, -0.35747f, 0.01617f, -0.13793f,
+ -0.41617f, 0.02432f, -0.32516f, -0.63565f, -1.15714f, 0.52089f,
+ -0.04905f, 0.19824f, -0.05926f, 0.24904f, 0.24725f, 0.02826f,
+ -0.11965f, -0.49540f, -0.20747f, 0.03385f, -0.55323f, 0.18648f,
+ 0.42333f, -2.10646f, -2.63984f, 0.53993f, -1.25692f, -0.24025f,
+ 0.21869f, 0.34874f, 0.49216f, 0.55550f, -0.02608f, -0.12440f,
+ 0.05494f, 0.11575f, 0.67594f, -0.68384f, 0.03205f, 0.00527f,
+ 0.20160f, 0.13460f, 0.48271f, -0.15768f, -0.22797f, -0.66164f,
+ -1.78311f, 1.23068f, 0.54538f, -2.14877f, 0.50704f, 1.56410f,
+ 1.36285f, -1.12270f, 0.24664f, 1.29689f, -0.19484f, 0.39357f,
+ 1.29248f, -0.43890f, -0.81965f, 1.52669f, -0.60373f, 0.29783f,
+ -0.05030f, 0.73567f, -2.03703f, -0.72944f, 0.43790f, 0.63765f,
+ -1.25707f, 0.63311f, 0.58912f, -1.84147f, -1.45550f, -1.63134f,
+ -1.36352f, -1.88211f, -2.18492f, 2.27752f, 0.01232f, 0.44153f,
+ -0.49621f, 0.26048f, 0.10140f, 0.34128f, -0.46378f, -0.16409f,
+ 0.53591f, -0.52306f, 1.66744f, -0.30028f, -0.20330f, -0.61887f,
+ 0.34184f, 0.88228f, 1.41874f, -0.64436f, 0.08548f, 1.31631f,
+ -0.97002f, -0.41801f, 2.31711f, -0.47594f, -1.03458f, -0.70169f,
+ 2.10790f, 3.56833f, 0.09159f, -0.36714f, -0.71317f, -0.07648f,
+ -0.17883f, -0.34857f, -0.20126f, -0.57790f, 0.03437f, -0.25365f,
+ -1.86669f, -1.49512f, 0.94400f, -0.49523f, -1.87793f, -1.49879f,
+ 3.72050f, 0.79153f, 0.18599f, 2.19499f, 3.04410f, 0.14638f,
+ -0.07565f, 1.97951f, 2.21436f, -0.02186f, 0.57101f, 0.12945f,
+ 0.56481f, 0.10461f, 0.03206f, -0.39151f, 0.08036f, -0.29681f,
+ 0.39939f, -0.29424f, -0.25672f, -0.80800f, 0.53524f, -0.14737f,
+ 0.35326f, -0.45341f, 0.15798f, 0.73941f, 0.98842f, 0.28433f,
+ 0.12557f, -0.01606f, 0.79575f, 0.26909f, 0.69944f, 0.97837f,
+ -0.22409f, -0.25213f, 0.61629f, -0.36658f, -0.49956f, 0.30223f,
+ 0.08560f, -0.63470f, 0.38509f, 0.13281f, -0.10986f, 2.73076f,
+ 1.11713f, 1.60360f, 0.38607f, 0.18618f, 2.96707f, 4.08094f,
+ -0.36882f, 0.86829f, 0.32123f, 1.98524f, -0.12393f, -1.19741f,
+ -0.96718f, -0.34738f, 0.54278f, 0.75701f, -0.33370f, -0.99329f,
+ 0.11300f, 1.62503f, -0.79704f, 0.87669f, -0.59378f, 0.91501f,
+ -1.99499f, -0.41999f, -0.52788f, -0.21153f, -0.01666f, -0.79854f,
+ 0.62634f, 0.80216f, 0.54574f, -1.56125f, 0.21361f, 1.70929f,
+ -0.27834f, 0.27556f, -0.23068f, -0.73371f, 0.09880f, 0.75057f,
+ 0.01522f, -0.64572f, -0.49848f, 0.22367f, 0.22051f, 0.72267f,
+ 0.74977f, -0.05481f, -0.39457f, -0.42857f, -0.69357f, -0.25760f,
+ 0.52356f, 0.54430f, -0.17991f, -0.67622f, -0.25359f, -0.24338f,
+ -0.06314f, -0.32888f, -0.64012f, -0.11035f, -2.97207f, -1.29626f,
+ -0.18367f, 0.19849f, -3.41530f, -1.36378f, -0.26733f, 0.35637f,
+ -0.16403f, 0.57318f, 0.46560f, 0.20525f, 0.00714f, 0.39762f,
+ 0.82244f, 4.00631f, -0.18352f, 0.77005f, 3.44857f, -1.51708f,
+ -0.84663f, -0.42995f, -0.05492f, -0.16470f, 0.11422f, 0.41940f,
+ -0.96526f, -2.14667f, 3.28552f, 0.36121f, -1.16834f, -0.83050f,
+ 0.81684f, 0.22692f, 1.01164f, -1.63012f, -1.28524f, 1.29725f,
+ -0.89197f, -1.20488f, -2.00215f, 1.34871f, 2.35261f, 0.04536f,
+ -0.84786f, -0.62404f, -0.48502f, 0.88151f, 0.26629f, -0.29040f,
+ -0.49876f, 1.10704f, 0.34171f, 1.25023f, -0.04490f, 0.17422f,
+ -2.22701f, 0.00000f, 0.88308f, -0.61498f, -0.78462f, 0.05608f,
+ 0.29389f, -1.77892f, -1.48080f, -0.51852f, -0.05360f, -0.50509f,
+ -0.28875f, -0.16687f, -0.58397f, 0.19775f, -3.65043f, -0.13175f,
+ -0.21219f, -0.96746f, 0.95524f, 0.31578f, 0.27905f, 2.52514f,
+ -0.11741f, -0.18626f, 1.42636f, -1.93024f, 2.19224f, -3.61233f,
+ 1.50723f, 1.41080f, 2.59939f, -0.13768f, 3.68902f, 2.69651f,
+ -0.25476f, -1.33222f, 0.45695f, 0.79734f, -3.85996f, 2.34047f,
+ 1.70438f, -0.98010f, 0.10091f, 0.43924f, -0.01962f, 2.82762f,
+ 3.79446f, -2.28532f, -2.18018f, -3.04076f, -1.87185f },
+ /* BLOCK_16X16 */
+ (float[]){ -2.33512f, -3.31371f, -1.76911f, -0.09432f, -0.77541f, -1.24532f,
+ -1.27991f, -0.06711f, -2.87110f, -0.45941f, -2.21170f, 0.22054f,
+ -2.08454f, -0.83189f, -1.51579f, -0.87875f, 0.41934f, -0.33679f,
+ -0.23281f, -0.17464f, -0.55863f, 0.31429f, 0.05257f, 0.32980f,
+ -0.53877f, -0.14233f, -0.35298f, -0.07577f, 0.00490f, -0.03767f,
+ -0.48037f, -0.36015f, 0.56203f, -1.27163f, 0.30367f, 0.07610f,
+ 0.27500f, -0.07006f, 0.61161f, 0.31418f, 0.25491f, 0.01534f,
+ -4.98555f, -1.90110f, -0.46295f, 0.58215f, -2.15540f, -0.22709f,
+ 0.84783f, -0.41374f, -0.03831f, -0.26255f, -0.01594f, -0.07867f,
+ -0.15332f, -0.13569f, -0.21399f, 0.19977f, -0.22428f, 0.01776f,
+ 0.29629f, 0.49830f, -0.38453f, -0.03950f, -0.43206f, -0.54631f,
+ 1.33911f, 0.61361f, 0.73860f, 0.03807f, -0.05452f, -0.40985f,
+ 0.04144f, 0.22968f, -0.40100f, -0.14033f, -1.18733f, 2.17582f,
+ -0.73620f, -0.58648f, 0.06898f, -2.63532f, -0.06405f, -1.17498f,
+ -0.89420f, -0.53436f, 0.01252f, 0.00458f, -0.09173f, -0.48544f,
+ -0.42826f, 0.16666f, 0.32184f, -0.25180f, -0.20395f, 0.13786f,
+ -0.03049f, -0.25886f, -0.33407f, -0.16972f, -0.25761f, -0.37955f,
+ 0.67919f, -0.56672f, 0.88734f, -0.19436f, 1.48037f, 2.48978f,
+ 0.79969f, 0.57480f, 1.50500f, 0.73033f, 1.64769f, 0.36873f,
+ -0.84495f, -0.53227f, -0.37862f, -0.22582f, 3.03188f, 0.50594f,
+ 0.65847f, -0.37011f, 1.47523f, 1.03132f, 1.51524f, 1.12154f,
+ -1.30232f, -1.81978f, -3.34859f, -0.24295f, 1.48982f, -0.39040f,
+ -0.63671f, 0.92525f, -1.05361f, -0.79484f, -3.14987f, -1.15602f,
+ 1.16454f, 1.10114f, -1.00434f, -2.96470f, 1.31625f, 1.02678f,
+ 0.30036f, -0.39549f, -0.54097f, 0.48701f, 0.54787f, -0.01181f,
+ 0.60000f, 1.64585f, 1.00371f, -2.71307f, -1.03549f, -2.65811f,
+ -2.28853f, -0.56815f, -0.96702f, -2.64566f, -2.17605f, -1.39469f,
+ -2.52619f, -2.13329f, -1.62011f, -0.18950f, 0.58642f, 0.08398f,
+ -0.31374f, -0.98408f, -0.29162f, 0.02774f, -0.66895f, 0.03855f,
+ -0.03334f, -0.07212f, -0.52247f, -0.03846f, -0.02792f, -0.08086f,
+ -0.03364f, 0.21672f, 0.38760f, -0.24623f, -0.15059f, -0.53843f,
+ -0.59208f, 0.65516f, 1.20788f, 0.88467f, 2.01372f, 0.79246f,
+ 1.89825f, -2.23863f, -2.76141f, -1.37515f, -0.20132f, -0.66666f,
+ 1.37773f, -1.07868f, 1.79213f, 0.65714f, -0.40879f, -0.25309f,
+ 1.25617f, 0.61719f, -0.41101f, 0.32894f, 0.97866f, 1.72194f,
+ -0.15114f, -0.01706f, -0.50834f, 0.06508f, 0.49365f, -0.29428f,
+ 0.06052f, -0.25120f, 0.42977f, 0.29983f, -0.43788f, -0.11882f,
+ 0.05905f, 0.26469f, -0.30147f, 0.05154f, -0.14485f, -0.03873f,
+ 0.46109f, -0.00832f, 0.21570f, 0.32781f, 0.00352f, -0.54660f,
+ 0.09486f, -0.40345f, 0.20868f, -4.42580f, 0.72275f, 1.04957f,
+ 0.99624f, 0.03210f, 0.06766f, -0.45590f, -0.08285f, 0.78651f,
+ 0.28569f, 1.40545f, 0.39110f, -0.07548f, -0.33576f, 1.56881f,
+ 0.45125f, 3.60580f, 0.21732f, 0.16976f, -0.11470f, 0.75122f,
+ 1.21495f, 0.50204f, -1.60450f, 0.14497f, -0.00937f, -2.60240f,
+ -0.50324f, 1.57232f, 1.84889f, 0.02458f, -1.11006f, 0.96480f,
+ -1.50489f, -1.08920f, 0.21835f, -0.01206f, 0.11513f, 0.28393f,
+ -0.06832f, 0.28597f, -0.23074f, 0.19634f, -0.01901f, 0.22133f,
+ -0.24419f, -0.01560f, 0.16752f, 0.00772f, 0.02161f, -0.43692f,
+ -0.57426f, -1.43245f, -0.77790f, 0.36000f, -0.13499f, 6.42653f,
+ 0.87666f, -0.94847f, -0.32941f, -0.46009f, -0.33631f, -0.45081f,
+ -0.06085f, -0.66110f, -0.48376f, -0.46241f, 0.16331f, 0.19306f,
+ -1.37989f, 0.69546f, 3.17194f, -0.39886f, -0.23159f, -1.99281f,
+ 0.54139f, 0.70301f, -0.37723f, -0.78042f, 0.41053f, -0.87789f,
+ 1.41124f, -0.52307f, -0.21651f, -1.14064f, -0.74715f, 0.47405f,
+ 0.55225f, -0.02987f, -0.34985f, 0.94306f, 1.04305f, -0.10294f,
+ 0.23896f, -0.96580f, -0.38712f, 0.53116f, -0.10182f, 0.22020f,
+ 0.15310f, 0.03357f, 0.52802f, 0.29718f, -0.81904f, -0.35359f,
+ 0.42777f, 0.40530f, 1.20917f, -0.07148f, 1.01195f, -0.17957f,
+ 0.06567f, -0.90801f, 0.66297f, 0.50968f, -0.07081f, -0.02788f,
+ 0.42831f, 3.55926f, -0.87908f, -1.01936f, -0.35544f, -0.08288f,
+ -0.38195f, -0.18536f, 0.19022f, 0.08396f, 0.00244f, -0.05982f,
+ 0.04072f, 0.72922f, -0.50711f, -0.74963f, -0.20814f, -0.88009f,
+ 3.82015f, 1.37695f, 0.03691f, -0.10811f, 0.66275f, -0.01252f,
+ -0.58312f, -0.20587f, 0.51406f, 0.61138f, 1.03561f, 0.94708f,
+ 0.08672f, -1.35773f, -0.04229f, -0.90443f, -0.57822f, -1.08403f,
+ 4.47565f, -0.29846f, 0.25272f, 0.23656f, -0.31507f, 0.41373f,
+ 0.31591f, 0.33692f, 0.00160f, 0.28474f, 0.13350f, -0.05221f,
+ -0.28297f, -0.34498f, -0.21047f, -0.27648f, 0.54017f, 0.79063f,
+ -1.59267f, -1.50795f, -1.70413f, -1.72474f, -1.61887f, -1.77899f,
+ -2.60979f, -1.53344f, -2.03713f, -0.50553f, 3.23190f, -0.89295f,
+ 0.19830f, -1.12027f, 0.94527f, 0.69205f, -0.65026f, 0.36370f,
+ 0.05224f, -1.33191f, 0.33571f, 0.37836f, 1.15068f, 2.31161f,
+ -0.03106f, 0.09218f, 2.60355f, 1.12978f, -2.23842f, 0.34438f,
+ 0.88148f, -0.76537f, 2.83534f, 1.50344f, 2.13674f, 1.68420f,
+ -0.70187f, -0.26895f, 2.85734f, 3.64933f, -0.53855f, -0.30371f,
+ -0.40932f, 0.62377f, 1.59155f, -1.21111f, -0.44629f, 0.61961f,
+ 0.17024f, 2.47948f, 0.55465f, 0.83448f, -1.60511f, 0.68983f,
+ -0.91949f, 0.24831f, -1.59970f, -0.53816f, 0.76906f, -0.29011f,
+ 0.37242f, 0.93621f, 0.16127f, -0.38060f, 1.11183f, -0.74169f,
+ -0.94185f, 0.06568f, -0.14310f, 0.04459f, -0.35945f, -0.52075f,
+ -0.17030f, -0.00960f, -0.68422f, -0.34568f, -0.34345f, 0.09646f,
+ -0.05917f, -0.03713f, 0.13008f, 0.58439f, 0.10846f, -0.32863f,
+ -0.21670f, -0.08252f, 0.34134f, -0.48552f, -1.07047f, 1.39562f,
+ 0.57768f, 0.88941f, 0.64666f, -0.23164f, -0.14476f, 0.15838f,
+ -2.10622f, -0.39697f, -1.43269f, -0.65439f, -1.21578f, -0.54751f,
+ -0.23281f, -0.02770f, -0.12364f, -0.38259f, 0.24085f, -0.59336f,
+ -0.05055f, -0.39094f, 0.16277f, 0.41241f, 0.07444f, -0.21273f,
+ -0.39558f, -0.18603f, 0.29595f, -0.34243f, -0.31262f, -0.73180f,
+ 0.08943f, -0.23874f, -0.06860f, 0.07157f, -0.43196f, -0.08806f,
+ -0.08236f, -0.26871f, 0.00373f, -0.25404f, -0.39984f, -0.56368f,
+ 0.26565f, -0.44527f, -1.52280f, -1.32908f, 0.15051f, 0.20677f,
+ 0.63835f, 0.21811f, 0.46198f, 0.91307f, 0.97315f, 0.68176f,
+ 0.24188f, -0.00093f, 0.27706f, -0.04180f, -0.24926f, 0.01682f,
+ -0.09650f, 0.81093f, 0.53121f, 0.51193f, -1.89005f, -0.26113f,
+ 0.63162f, 0.18064f, -0.11625f, 0.33407f, -0.61584f, 0.17743f,
+ 2.22288f, -0.18528f, -0.50951f, -1.68150f, 0.40667f, -1.97424f,
+ 2.98199f, 1.94396f, 0.02670f, 1.01438f, -0.84409f, -0.98323f,
+ -2.12406f, 0.50851f, -0.80447f, 0.15649f, 1.69056f, 1.53438f,
+ 2.03117f, 0.64105f, 0.85359f, -0.31000f, -0.14731f, -1.21840f,
+ -0.54542f, -0.66917f, 0.19683f, -0.05916f, -0.23448f, -0.21854f,
+ 0.11985f, -0.11765f, -0.22837f, -0.40467f, 0.49581f, 0.13027f,
+ 0.22608f, -0.25892f, -0.23515f, -0.43008f, 0.64330f, -0.15779f,
+ 4.91596f, 3.74172f, -0.01853f, -0.05633f, 3.52828f, 6.45093f,
+ -0.36485f, 0.18349f, -0.00450f, -0.22926f, 0.68934f, -0.21531f,
+ 0.05716f, -0.08060f, 0.11153f, -0.05991f, -0.12007f, 0.27074f,
+ 0.18030f, 0.24757f, -0.39990f, -0.04836f, -0.28649f, -0.02310f,
+ -0.08648f, -0.28826f, -0.07254f, 0.21345f, -0.11284f, 0.06600f,
+ 0.49284f, 0.02827f, -0.35973f, -0.28765f, 0.64441f, -0.07901f,
+ -1.43341f, -1.32239f, 0.07653f, -0.03691f, -1.39370f, 0.44687f,
+ 0.53096f, 1.31946f, 2.14809f, -2.00421f, -1.26628f, 1.03885f,
+ -2.60842f, 1.85814f, 0.75869f, 0.46057f, 0.31825f, 0.53240f,
+ -0.47724f, 0.53694f, 1.01443f, -0.69209f, 0.17691f, -0.45517f,
+ 2.45806f, -3.66425f, -1.72835f, -1.49468f, 1.32189f, -0.49305f,
+ -1.24297f, 0.60277f, -1.41445f, 0.16413f, -0.66027f, -0.85327f,
+ -0.23208f, 0.55539f, -1.25484f, 0.70927f, 0.90246f, -0.39686f,
+ 3.39510f, -1.36411f, 0.37148f, -3.24379f, -2.39433f, 0.47144f,
+ 0.08939f, -0.01514f, 0.80475f, -1.44397f, -0.56830f, -0.19813f,
+ 1.63175f, -1.45228f, 1.44804f, -1.08043f, -2.73050f, 0.36157f,
+ 1.43198f, -0.17064f, 0.04689f, 4.13204f, -0.17145f, -0.45914f,
+ 0.26951f, -0.43331f, -0.92574f, -0.43302f, -0.76836f, 0.50895f,
+ -0.56016f, -2.15068f, 0.05734f, 1.57973f, 0.50136f, -0.58979f,
+ 0.32304f, -0.20144f, -2.83504f, -1.59596f, 1.14075f, -3.35506f,
+ -0.91743f, 0.52344f, 0.23030f, 0.26531f, -2.53394f, 0.53946f,
+ -0.22607f, 0.04608f, -0.03066f, 2.58096f, 1.07551f, 0.35917f,
+ 2.70303f, -0.39135f, -0.05870f, -0.42456f, 0.65547f, 1.17413f,
+ -1.01273f, 0.41903f, 0.60067f, 0.06475f, 1.40028f, 0.31375f,
+ -1.18827f, -1.79237f, -2.16054f, -0.18552f, 0.40779f, 2.47420f,
+ 1.60598f, 2.51905f, 1.43856f, -1.77980f, -0.89020f, -0.25304f,
+ -1.53063f, -2.07139f, -1.06641f, -1.49733f, 2.07209f, 1.08333f,
+ -0.38585f, -0.52260f, -3.96459f, -1.11392f, -1.34735f, -1.00715f,
+ -0.08676f, 0.02009f, -0.04225f, 0.29525f, -0.62457f, 1.25567f,
+ 0.62074f, -0.10845f, 1.08668f, -1.72712f, -0.10162f, -3.73208f,
+ -1.36195f, 1.24945f, 0.40479f, -0.44104f, 1.78835f, -0.54711f,
+ -0.45704f, 0.13736f, -0.26916f, 0.40053f, 0.00769f, 0.01737f,
+ -0.04449f, -0.45853f, 0.32574f, -0.10066f, -0.20889f, -0.42063f,
+ -0.01880f, 0.02063f, -0.57622f, 0.00220f, -0.41481f, 0.21500f,
+ 0.77856f, 0.52091f, -0.37127f, -0.16602f, 1.50396f, 1.28713f,
+ 0.08025f, 0.37687f, -0.58758f, 0.26340f, 0.68237f, -0.32561f,
+ -0.38597f, -0.03738f, 0.05094f, 0.35864f, 0.29402f, 1.97878f,
+ 1.59610f, 0.06686f, -0.56105f, 3.04528f, 2.98407f, -2.56387f,
+ -0.14111f, -0.05276f, 0.05093f, 1.43481f, -0.21868f, -0.03120f,
+ 0.84077f, -0.26040f, 0.83573f, 0.44524f, -0.38470f, 0.32942f,
+ 0.41419f, 0.03451f, -0.39586f, 0.34182f, -0.47267f, -0.44133f,
+ 0.03274f, 0.64405f, 0.25461f, 0.34606f, -0.24311f, -0.25747f,
+ -0.42828f, -0.16665f, -0.53530f, 1.60349f, 1.71093f, -1.98463f,
+ -1.76171f, -4.02564f, -0.86771f, -2.01086f, -2.05039f, 0.75301f,
+ -1.58901f, 0.25703f, -0.47220f, -0.03754f, -0.99208f, -0.34186f,
+ -0.66435f, -0.75609f, 1.97819f, -1.84172f, -0.49220f, -0.45623f,
+ -2.53327f, 0.26828f, -0.31886f, 1.39814f, -1.92251f, -0.65512f,
+ -1.00151f, -0.65779f, -1.39199f, 0.52147f, 1.17518f, -0.79185f,
+ -0.39961f, 0.71962f, -0.88161f, 0.16256f, -0.25754f, 1.08370f,
+ -0.92590f, -4.04821f, -0.54154f, 0.16665f, -0.34683f, -1.51049f,
+ -1.52053f, 0.68547f, -1.71874f, 0.33837f, -1.04910f, 0.29365f,
+ 0.18723f, 0.96826f, -0.66771f, -1.19261f, -1.88262f, -0.06630f,
+ 1.88106f, -0.80050f, -1.71436f, -0.31941f, 0.63553f, 1.54756f,
+ -1.23407f, 0.52384f, 0.22354f, -0.34108f, 0.08610f, 0.00699f,
+ 0.37136f, 0.79371f, 0.17867f, 0.43125f, -0.08364f, -0.00536f,
+ 0.38589f, -0.38192f, 2.46420f, -4.95342f, -0.05129f, 0.24330f,
+ 4.10377f, -0.09634f, 0.06190f, -0.10095f, 0.10639f, 0.84283f,
+ -0.66132f, 0.30070f, -0.27125f, 0.10007f, 0.07156f, 0.12596f,
+ -0.84956f, -0.73166f, 2.29945f, 0.20016f, -0.52447f, 0.53079f,
+ -5.11437f, -0.14355f, -0.56753f, 0.29894f, 1.36724f, -4.18788f,
+ -4.54924f, -0.14036f, 1.08707f, -0.46971f, -0.70524f, 0.40919f,
+ -0.36412f, 0.61871f, 0.36490f, 0.27959f, 0.31333f, 0.72363f,
+ -0.12954f, -0.29154f, 0.36509f, -0.50947f, -0.16829f, -0.07787f,
+ -0.23850f, 0.56955f, 0.53635f, -0.51060f, 0.40341f, -0.25305f,
+ -0.24747f, 0.06249f, 0.29373f, 0.16034f, 0.19666f, -0.55598f,
+ -0.51409f, 0.03709f, -0.40533f, 0.04837f, -0.01790f, -0.31404f,
+ -0.20858f, -7.44090f, -0.19129f, 0.34522f, 0.32686f, 0.26268f,
+ -0.14069f, -0.46890f, 0.00656f, 0.99568f, -0.21409f, -0.04172f,
+ 0.06155f, -0.58416f, -0.00220f, 0.53917f, -0.17184f, 0.12604f,
+ 0.14324f, -0.47364f, -0.44595f, 0.03335f, 0.05754f, -0.10465f,
+ -0.60116f, 0.06808f, 0.74665f, -0.09468f, -0.22019f, -0.37092f,
+ -0.15980f, 0.24710f, 0.09047f, 1.13834f, 0.98147f, -0.67229f,
+ -0.94558f, -1.07998f, -0.77535f, 0.67678f, 0.91947f, 0.04130f,
+ 0.24570f, -0.23502f, 0.07140f, 5.01414f, -0.42455f, 0.15214f,
+ -0.06943f, -0.02245f, 0.55778f, 0.19904f, -0.11874f, -0.43990f,
+ 0.10878f, -0.28505f, 0.56417f, -0.03703f, -0.13008f, 0.13934f,
+ -0.24387f, -1.04753f, -0.71977f, 0.03831f, -0.04141f, 0.07736f,
+ -0.57109f, -0.13095f, -0.56810f, -0.08898f, -0.35147f, 0.43868f,
+ 0.08960f, 0.10786f, -0.21675f, 0.13877f, -0.00299f, 0.07219f,
+ -0.99991f, -0.61501f, 0.65312f, -0.83098f, 0.39323f, -2.75927f,
+ 0.81694f, -0.28241f, -2.18768f, 0.34134f, 1.20591f, 1.22232f,
+ -0.64396f, -0.58826f, 1.01791f, 0.00321f, -3.13828f, 1.13783f,
+ -0.86514f, -0.08370f, -0.35267f, 0.37178f, -2.75818f, -6.59164f,
+ -3.23005f, -1.53321f, 1.42684f, -4.39138f, 2.05253f, -0.02781f,
+ -0.76007f, 0.92340f, -0.08111f, -1.23684f, 0.48422f, -0.40752f,
+ 0.14077f, -1.72232f, -0.00208f, -1.30060f, -1.78436f, -0.05391f,
+ -0.39061f, -0.63657f, 0.49918f, 0.20668f, -3.85847f, 0.93580f,
+ 0.32614f, -0.14702f, 0.95100f, 0.19870f, -0.35641f, 0.24500f,
+ -0.00832f, 0.11008f, -0.18393f, -0.20785f, 0.33332f, 0.24374f,
+ -0.95761f, 0.33066f, -0.92643f, -4.62375f, -0.43035f, -0.96366f,
+ 4.00974f, 2.11254f, -3.59420f, 0.85364f, -2.31614f, 0.05530f,
+ 1.73165f, 2.48115f, -3.94476f, 3.64559f, -0.29305f, 3.76776f,
+ 1.98696f, 3.68108f, 1.98553f, 1.41208f, -0.18020f, -2.48263f,
+ 3.78622f, 1.55076f, 3.51036f, 3.33941f, 2.28655f, 1.00124f,
+ -3.92312f, 3.89978f, 3.90257f, -2.99901f, -0.93003f, 1.65249f,
+ -0.11631f, 1.11693f, 0.65334f, -2.34870f, 2.60394f, 2.17219f,
+ -8.45155f, -0.55153f, -2.00431f, 2.48126f, 2.76832f, 2.62461f,
+ -2.09580f, -2.12298f, 1.69051f, -2.57117f, -2.58804f, -0.19290f,
+ 1.89817f, 4.08995f, -0.04311f, 5.18602f, 3.90296f, 3.64248f,
+ 3.12903f, -2.37662f, -2.83318f, -2.91755f, -0.60725f, -3.46475f,
+ -1.31273f, 3.65086f, 0.06778f, -0.43647f, -3.21793f },
+};
+static const float av1_prune_tx_split_thresholds[6] = {
+ /* BLOCK_4X8 */
+ 1.00f,
+ /* BLOCK_8X4 */
+ 1.22f,
+ /* BLOCK_8X8 */
+ 1.26f,
+ /* BLOCK_8X16 */
+ 0.28f,
+ /* BLOCK_16X8 */
+ 0.52f,
+ /* BLOCK_16X16 */
+ 0.65f
+};
+
#ifdef __cplusplus
} // extern "C"
#endif