vpx/vp9/common/vp9_blockd.c

924 lines
37 KiB
C
Raw Normal View History

2010-05-18 11:58:33 -04:00
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
2010-05-18 11:58:33 -04:00
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
2010-05-18 11:58:33 -04:00
*/
#include "./vpx_config.h"
#include "vp9/common/vp9_blockd.h"
2010-05-18 11:58:33 -04:00
#include "vpx_mem/vpx_mem.h"
const uint8_t vp9_block2left[TX_SIZE_MAX_MB][24] = {
{ 0, 0, 0, 0,
1, 1, 1, 1,
2, 2, 2, 2,
3, 3, 3, 3,
4, 4,
5, 5,
6, 6,
7, 7 },
{ 0, 0, 0, 0,
0, 0, 0, 0,
2, 2, 2, 2,
2, 2, 2, 2,
4, 4,
4, 4,
6, 6,
6, 6 },
{ 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0 },
};
const uint8_t vp9_block2above[TX_SIZE_MAX_MB][24] = {
{ 0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
4, 5,
4, 5,
6, 7,
6, 7 },
{ 0, 0, 0, 0,
2, 2, 2, 2,
0, 0, 0, 0,
2, 2, 2, 2,
4, 4,
4, 4,
6, 6,
6, 6 },
{ 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0 },
WebM Experimental Codec Branch Snapshot This is a code snapshot of experimental work currently ongoing for a next-generation codec. The codebase has been cut down considerably from the libvpx baseline. For example, we are currently only supporting VBR 2-pass rate control and have removed most of the code relating to coding speed, threading, error resilience, partitions and various other features. This is in part to make the codebase easier to work on and experiment with, but also because we want to have an open discussion about how the bitstream will be structured and partitioned and not have that conversation constrained by past work. Our basic working pattern has been to initially encapsulate experiments using configure options linked to #IF CONFIG_XXX statements in the code. Once experiments have matured and we are reasonably happy that they give benefit and can be merged without breaking other experiments, we remove the conditional compile statements and merge them in. Current changes include: * Temporal coding experiment for segments (though still only 4 max, it will likely be increased). * Segment feature experiment - to allow various bits of information to be coded at the segment level. Features tested so far include mode and reference frame information, limiting end of block offset and transform size, alongside Q and loop filter parameters, but this set is very fluid. * Support for 8x8 transform - 8x8 dct with 2nd order 2x2 haar is used in MBs using 16x16 prediction modes within inter frames. * Compound prediction (combination of signals from existing predictors to create a new predictor). * 8 tap interpolation filters and 1/8th pel motion vectors. * Loop filter modifications. * Various entropy modifications and changes to how entropy contexts and updates are handled. * Extended quantizer range matched to transform precision improvements. There are also ongoing further experiments that we hope to merge in the near future: For example, coding of motion and other aspects of the prediction signal to better support larger image formats, use of larger block sizes (e.g. 32x32 and up) and lossless non-transform based coding options (especially for key frames). It is our hope that we will be able to make regular updates and we will warmly welcome community contributions. Please be warned that, at this stage, the codebase is currently slower than VP8 stable branch as most new code has not been optimized, and even the 'C' has been deliberately written to be simple and obvious, not fast. The following graphs have the initial test results, numbers in the tables measure the compression improvement in terms of percentage. The build has the following optional experiments configured: --enable-experimental --enable-enhanced_interp --enable-uvintra --enable-high_precision_mv --enable-sixteenth_subpel_uv CIF Size clips: http://getwebm.org/tmp/cif/ HD size clips: http://getwebm.org/tmp/hd/ (stable_20120309 represents encoding results of WebM master branch build as of commit#7a15907) They were encoded using the following encode parameters: --good --cpu-used=0 -t 0 --lag-in-frames=25 --min-q=0 --max-q=63 --end-usage=0 --auto-alt-ref=1 -p 2 --pass=2 --kf-max-dist=9999 --kf-min-dist=0 --drop-frame=0 --static-thresh=0 --bias-pct=50 --minsection-pct=0 --maxsection-pct=800 --sharpness=0 --arnr-maxframes=7 --arnr-strength=3(for HD,6 for CIF) --arnr-type=3 Change-Id: I5c62ed09cfff5815a2bb34e7820d6a810c23183c
2012-03-09 17:32:50 -08:00
};
#define S(x) x + sizeof(ENTROPY_CONTEXT_PLANES) / sizeof(ENTROPY_CONTEXT)
#if CONFIG_SBSEGMENT
const uint8_t vp9_block2left_sb16x32[TX_SIZE_MAX_MB][48] = {
{ 0, 0, 0, 0,
1, 1, 1, 1,
2, 2, 2, 2,
3, 3, 3, 3,
S(0), S(0), S(0), S(0),
S(1), S(1), S(1), S(1),
S(2), S(2), S(2), S(2),
S(3), S(3), S(3), S(3),
4, 4,
5, 5,
S(4), S(4),
S(5), S(5),
6, 6,
7, 7,
S(6), S(6),
S(7), S(7) },
{ 0, 0, 0, 0,
0, 0, 0, 0,
2, 2, 2, 2,
2, 2, 2, 2,
S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0),
S(2), S(2), S(2), S(2),
S(2), S(2), S(2), S(2),
4, 4,
4, 4,
S(4), S(4),
S(4), S(4),
6, 6,
6, 6,
S(6), S(6),
S(6), S(6) },
{ 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0) },
};
const uint8_t vp9_block2above_sb16x32[TX_SIZE_MAX_MB][48] = {
{ 0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
0, 1, 2, 3,
4, 5,
4, 5,
4, 5,
4, 5,
6, 7,
6, 7,
6, 7,
6, 7 },
{ 0, 0, 0, 0,
2, 2, 2, 2,
0, 0, 0, 0,
2, 2, 2, 2,
0, 0, 0, 0,
2, 2, 2, 2,
0, 0, 0, 0,
2, 2, 2, 2,
4, 4,
4, 4,
4, 4,
4, 4,
6, 6,
6, 6,
6, 6,
6, 6 },
{ 0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0 },
};
const uint8_t vp9_block2left_sb32x16[TX_SIZE_MAX_MB][48] = {
{ 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3,
4, 4, 4, 4,
5, 5, 5, 5,
6, 6, 6, 6,
7, 7, 7, 7 },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
4, 4, 4, 4,
4, 4, 4, 4,
6, 6, 6, 6,
6, 6, 6, 6 },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
};
const uint8_t vp9_block2above_sb32x16[TX_SIZE_MAX_MB][48] = {
{ 0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
6, 7, S(6), S(7),
6, 7, S(6), S(7) },
{ 0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
6, 6, 6, 6,
S(6), S(6), S(6), S(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
};
#endif
const uint8_t vp9_block2left_sb[TX_SIZE_MAX_SB][96] = {
{ 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3),
4, 4, 4, 4,
5, 5, 5, 5,
S(4), S(4), S(4), S(4),
S(5), S(5), S(5), S(5),
6, 6, 6, 6,
7, 7, 7, 7,
S(6), S(6), S(6), S(6),
S(7), S(7), S(7), S(7) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
4, 4, 4, 4,
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
S(4), S(4), S(4), S(4),
6, 6, 6, 6,
6, 6, 6, 6,
S(6), S(6), S(6), S(6),
S(6), S(6), S(6), S(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6 },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
};
const uint8_t vp9_block2above_sb[TX_SIZE_MAX_SB][96] = {
{ 0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7) },
{ 0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
6, 6, 6, 6,
S(6), S(6), S(6), S(6),
6, 6, 6, 6,
S(6), S(6), S(6), S(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6 },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
};
#define T(x) x + 2 * (sizeof(ENTROPY_CONTEXT_PLANES) / sizeof(ENTROPY_CONTEXT))
#define U(x) x + 3 * (sizeof(ENTROPY_CONTEXT_PLANES) / sizeof(ENTROPY_CONTEXT))
#if CONFIG_SBSEGMENT
const uint8_t vp9_block2left_sb32x64[TX_SIZE_MAX_SB][192] = {
{ 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1),
T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2),
T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1),
U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2),
U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3),
4, 4, 4, 4,
5, 5, 5, 5,
S(4), S(4), S(4), S(4),
S(5), S(5), S(5), S(5),
T(4), T(4), T(4), T(4),
T(5), T(5), T(5), T(5),
U(4), U(4), U(4), U(4),
U(5), U(5), U(5), U(5),
6, 6, 6, 6,
7, 7, 7, 7,
S(6), S(6), S(6), S(6),
S(7), S(7), S(7), S(7),
T(6), T(6), T(6), T(6),
T(7), T(7), T(7), T(7) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2),
T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2),
U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2),
4, 4, 4, 4,
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4),
U(4), U(4), U(4), U(4),
U(4), U(4), U(4), U(4),
6, 6, 6, 6,
6, 6, 6, 6,
S(6), S(6), S(6), S(6),
S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6),
U(6), U(6), U(6), U(6),
U(6), U(6), U(6), U(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4),
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0) },
};
const uint8_t vp9_block2above_sb32x64[TX_SIZE_MAX_SB][192] = {
{ 0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
4, 5, S(4), S(5),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7),
6, 7, S(6), S(7) },
{ 0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
0, 0, 0, 0, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
4, 4, 4, 4,
S(4), S(4), S(4), S(4),
6, 6, 6, 6,
S(6), S(6), S(6), S(6),
6, 6, 6, 6,
S(6), S(6), S(6), S(6),
6, 6, 6, 6,
S(6), S(6), S(6), S(6),
6, 6, 6, 6,
S(6), S(6), S(6), S(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6,
6, 6, 6, 6 },
{ 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0 },
};
const uint8_t vp9_block2left_sb64x32[TX_SIZE_MAX_SB][192] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3),
4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5,
S(4), S(4), S(4), S(4), S(4), S(4), S(4), S(4),
S(5), S(5), S(5), S(5), S(5), S(5), S(5), S(5),
6, 6, 6, 6, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7, 7,
S(6), S(6), S(6), S(6), S(6), S(6), S(6), S(6),
S(7), S(7), S(7), S(7), S(7), S(7), S(7), S(7) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
S(4), S(4), S(4), S(4), S(4), S(4), S(4), S(4),
S(4), S(4), S(4), S(4), S(4), S(4), S(4), S(4),
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
S(6), S(6), S(6), S(6), S(6), S(6), S(6), S(6),
S(6), S(6), S(6), S(6), S(6), S(6), S(6), S(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
};
const uint8_t vp9_block2above_sb64x32[TX_SIZE_MAX_SB][192] = {
{ 0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7) },
{ 0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
4, 4, 4, 4, S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), U(4), U(4), U(4), U(4),
4, 4, 4, 4, S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), U(4), U(4), U(4), U(4),
6, 6, 6, 6, S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), U(6), U(6), U(6), U(6),
6, 6, 6, 6, S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), U(6), U(6), U(6), U(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0) },
};
#endif
const uint8_t vp9_block2left_sb64[TX_SIZE_MAX_SB][384] = {
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1), S(1),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3), S(3),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1), T(1),
T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2),
T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3), T(3),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1), U(1),
U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2),
U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3), U(3),
4, 4, 4, 4, 4, 4, 4, 4,
5, 5, 5, 5, 5, 5, 5, 5,
S(4), S(4), S(4), S(4), S(4), S(4), S(4), S(4),
S(5), S(5), S(5), S(5), S(5), S(5), S(5), S(5),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(5), T(5), T(5), T(5), T(5), T(5), T(5), T(5),
U(4), U(4), U(4), U(4), U(4), U(4), U(4), U(4),
U(5), U(5), U(5), U(5), U(5), U(5), U(5), U(5),
6, 6, 6, 6, 6, 6, 6, 6,
7, 7, 7, 7, 7, 7, 7, 7,
S(6), S(6), S(6), S(6), S(6), S(6), S(6), S(6),
S(7), S(7), S(7), S(7), S(7), S(7), S(7), S(7),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(7), T(7), T(7), T(7), T(7), T(7), T(7), T(7),
U(6), U(6), U(6), U(6), U(6), U(6), U(6), U(6),
U(7), U(7), U(7), U(7), U(7), U(7), U(7), U(7) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2),
T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2), T(2),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2),
U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2), U(2),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
S(4), S(4), S(4), S(4), S(4), S(4), S(4), S(4),
S(4), S(4), S(4), S(4), S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
U(4), U(4), U(4), U(4), U(4), U(4), U(4), U(4),
U(4), U(4), U(4), U(4), U(4), U(4), U(4), U(4),
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
S(6), S(6), S(6), S(6), S(6), S(6), S(6), S(6),
S(6), S(6), S(6), S(6), S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
U(6), U(6), U(6), U(6), U(6), U(6), U(6), U(6),
U(6), U(6), U(6), U(6), U(6), U(6), U(6), U(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6 },
};
const uint8_t vp9_block2above_sb64[TX_SIZE_MAX_SB][384] = {
{ 0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
0, 1, 2, 3, S(0), S(1), S(2), S(3), T(0), T(1), T(2), T(3), U(0), U(1), U(2), U(3),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
4, 5, S(4), S(5), T(4), T(5), U(4), U(5),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7),
6, 7, S(6), S(7), T(6), T(7), U(6), U(7) },
{ 0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
0, 0, 0, 0, 2, 2, 2, 2, S(0), S(0), S(0), S(0), S(2), S(2), S(2), S(2),
T(0), T(0), T(0), T(0), T(2), T(2), T(2), T(2), U(0), U(0), U(0), U(0), U(2), U(2), U(2), U(2),
4, 4, 4, 4, S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), U(4), U(4), U(4), U(4),
4, 4, 4, 4, S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), U(4), U(4), U(4), U(4),
4, 4, 4, 4, S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), U(4), U(4), U(4), U(4),
4, 4, 4, 4, S(4), S(4), S(4), S(4),
T(4), T(4), T(4), T(4), U(4), U(4), U(4), U(4),
6, 6, 6, 6, S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), U(6), U(6), U(6), U(6),
6, 6, 6, 6, S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), U(6), U(6), U(6), U(6),
6, 6, 6, 6, S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), U(6), U(6), U(6), U(6),
6, 6, 6, 6, S(6), S(6), S(6), S(6),
T(6), T(6), T(6), T(6), U(6), U(6), U(6), U(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0), S(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0), U(0),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
T(4), T(4), T(4), T(4), T(4), T(4), T(4), T(4),
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6),
T(6), T(6), T(6), T(6), T(6), T(6), T(6), T(6) },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0), T(0),
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 6, 6, 6, 6, 6 },
};
#undef U
#undef T
#undef S