blob: 773041104c152d6d54cde2c3dcbb084feae15619 [file] [log] [blame]
Yaowu Xuc27fc142016-08-22 16:08:15 -07001/*
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07002 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
Yaowu Xuc27fc142016-08-22 16:08:15 -07003 *
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07004 * This source code is subject to the terms of the BSD 2 Clause License and
5 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6 * was not distributed with this source code in the LICENSE file, you can
7 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8 * Media Patent License 1.0 was not distributed with this source code in the
9 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
Yaowu Xuc27fc142016-08-22 16:08:15 -070010 */
11
Yaowu Xuf883b422016-08-30 14:01:10 -070012#ifndef AV1_COMMON_COMMON_DATA_H_
13#define AV1_COMMON_COMMON_DATA_H_
Yaowu Xuc27fc142016-08-22 16:08:15 -070014
15#include "av1/common/enums.h"
Yaowu Xuf883b422016-08-30 14:01:10 -070016#include "aom/aom_integer.h"
17#include "aom_dsp/aom_dsp_common.h"
Yaowu Xuc27fc142016-08-22 16:08:15 -070018
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23#if CONFIG_EXT_PARTITION
24#define IF_EXT_PARTITION(...) __VA_ARGS__
25#else
26#define IF_EXT_PARTITION(...)
27#endif
28
29// Log 2 conversion lookup tables for block width and height
30static const uint8_t b_width_log2_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080031#if CONFIG_CB4X4
32 0, 0, 0,
33#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070034 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5)
35};
36static const uint8_t b_height_log2_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080037#if CONFIG_CB4X4
38 0, 0, 0,
39#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070040 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5)
41};
42// Log 2 conversion lookup tables for modeinfo width and height
43static const uint8_t mi_width_log2_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080044#if CONFIG_CB4X4
Jingning Hanbcf62ea2016-12-08 16:08:38 -080045 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, IF_EXT_PARTITION(4, 5, 5)
46#else
Yaowu Xuc27fc142016-08-22 16:08:15 -070047 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, IF_EXT_PARTITION(3, 4, 4)
Jingning Hanbcf62ea2016-12-08 16:08:38 -080048#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070049};
50static const uint8_t mi_height_log2_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080051#if CONFIG_CB4X4
Jingning Hanbcf62ea2016-12-08 16:08:38 -080052 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, 4, 3, 4, IF_EXT_PARTITION(5, 4, 5)
53#else
Yaowu Xuc27fc142016-08-22 16:08:15 -070054 0, 0, 0, 0, 1, 0, 1, 2, 1, 2, 3, 2, 3, IF_EXT_PARTITION(4, 3, 4)
Jingning Hanbcf62ea2016-12-08 16:08:38 -080055#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070056};
57
Jingning Hanc709e1f2016-12-06 14:48:09 -080058static const uint8_t mi_size_wide[BLOCK_SIZES] = {
59#if CONFIG_CB4X4
60 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32)
61#else
62 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16)
63#endif
64};
65static const uint8_t mi_size_high[BLOCK_SIZES] = {
66#if CONFIG_CB4X4
67 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32)
68#else
69 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16)
70#endif
71};
72
Jingning Hane7230e92016-10-21 16:30:10 -070073// Width/height lookup tables in units of various block sizes
Jingning Hanc47fe6c2016-10-21 16:40:47 -070074static const uint8_t block_size_wide[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080075#if CONFIG_CB4X4
76 2, 2, 4,
77#endif
Jingning Hanc47fe6c2016-10-21 16:40:47 -070078 4, 4, 8, 8, 8, 16, 16, 16, 32, 32, 32, 64, 64, IF_EXT_PARTITION(64, 128, 128)
79};
Jingning Hanae5cfde2016-11-30 12:01:44 -080080
Jingning Hanc47fe6c2016-10-21 16:40:47 -070081static const uint8_t block_size_high[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080082#if CONFIG_CB4X4
83 2, 4, 2,
84#endif
Jingning Hanc47fe6c2016-10-21 16:40:47 -070085 4, 8, 4, 8, 16, 8, 16, 32, 16, 32, 64, 32, 64, IF_EXT_PARTITION(128, 64, 128)
86};
Jingning Hanae5cfde2016-11-30 12:01:44 -080087
Yaowu Xuc27fc142016-08-22 16:08:15 -070088static const uint8_t num_4x4_blocks_wide_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080089#if CONFIG_CB4X4
90 1, 1, 1,
91#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070092 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, 8, 16, 16, IF_EXT_PARTITION(16, 32, 32)
93};
94static const uint8_t num_4x4_blocks_high_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -080095#if CONFIG_CB4X4
96 1, 1, 1,
97#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070098 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, 16, 8, 16, IF_EXT_PARTITION(32, 16, 32)
99};
100static const uint8_t num_8x8_blocks_wide_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800101#if CONFIG_CB4X4
102 1, 1, 1,
103#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700104 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, 4, 8, 8, IF_EXT_PARTITION(8, 16, 16)
105};
106static const uint8_t num_8x8_blocks_high_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800107#if CONFIG_CB4X4
108 1, 1, 1,
109#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700110 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, 8, 4, 8, IF_EXT_PARTITION(16, 8, 16)
111};
112static const uint8_t num_16x16_blocks_wide_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800113#if CONFIG_CB4X4
114 1, 1, 1,
115#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700116 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 4, 4, IF_EXT_PARTITION(4, 8, 8)
117};
118static const uint8_t num_16x16_blocks_high_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800119#if CONFIG_CB4X4
120 1, 1, 1,
121#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700122 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 4, 2, 4, IF_EXT_PARTITION(8, 4, 8)
123};
124
Yaowu Xuf883b422016-08-30 14:01:10 -0700125// AOMMIN(3, AOMMIN(b_width_log2(bsize), b_height_log2(bsize)))
Yaowu Xuc27fc142016-08-22 16:08:15 -0700126static const uint8_t size_group_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800127#if CONFIG_CB4X4
128 0, 0, 0,
129#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700130 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3, IF_EXT_PARTITION(3, 3, 3)
131};
132
133static const uint8_t num_pels_log2_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800134#if CONFIG_CB4X4
135 2, 3, 3,
136#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700137 4, 5, 5, 6, 7, 7, 8, 9, 9, 10, 11, 11, 12, IF_EXT_PARTITION(13, 13, 14)
138};
139
140/* clang-format off */
141static const PARTITION_TYPE
142 partition_lookup[MAX_SB_SIZE_LOG2 - 1][BLOCK_SIZES] = {
143 { // 4X4 ->
Jingning Hanf1702dd2016-11-30 21:17:59 -0800144#if CONFIG_CB4X4
145 // 2X2, 2X4, 4X2,
146 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
147#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700148 // 4X4
149 PARTITION_NONE,
150 // 4X8, 8X4, 8X8
151 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
152 // 8X16, 16X8, 16X16
153 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
154 // 16X32, 32X16, 32X32
155 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
156 // 32X64, 64X32, 64X64
157 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
158#if CONFIG_EXT_PARTITION
159 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
160#endif // CONFIG_EXT_PARTITION
161 }, { // 8X8 ->
Jingning Hanf1702dd2016-11-30 21:17:59 -0800162#if CONFIG_CB4X4
163 // 2X2, 2X4, 4X2,
164 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
165#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700166 // 4X4
167 PARTITION_SPLIT,
168 // 4X8, 8X4, 8X8
169 PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE,
170 // 8X16, 16X8, 16X16
171 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
172 // 16X32, 32X16, 32X32
173 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
174 // 32X64, 64X32, 64X64
175 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
176#if CONFIG_EXT_PARTITION
177 // 64x128, 128x64, 128x128
178 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
179#endif // CONFIG_EXT_PARTITION
180 }, { // 16X16 ->
Jingning Hanf1702dd2016-11-30 21:17:59 -0800181#if CONFIG_CB4X4
182 // 2X2, 2X4, 4X2,
183 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
184#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700185 // 4X4
186 PARTITION_SPLIT,
187 // 4X8, 8X4, 8X8
188 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
189 // 8X16, 16X8, 16X16
190 PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE,
191 // 16X32, 32X16, 32X32
192 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
193 // 32X64, 64X32, 64X64
194 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
195#if CONFIG_EXT_PARTITION
196 // 64x128, 128x64, 128x128
197 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
198#endif // CONFIG_EXT_PARTITION
199 }, { // 32X32 ->
Jingning Hanf1702dd2016-11-30 21:17:59 -0800200#if CONFIG_CB4X4
201 // 2X2, 2X4, 4X2,
202 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
203#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700204 // 4X4
205 PARTITION_SPLIT,
206 // 4X8, 8X4, 8X8
207 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
208 // 8X16, 16X8, 16X16
209 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
210 // 16X32, 32X16, 32X32
211 PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE,
212 // 32X64, 64X32, 64X64
213 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
214#if CONFIG_EXT_PARTITION
215 // 64x128, 128x64, 128x128
216 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
217#endif // CONFIG_EXT_PARTITION
218 }, { // 64X64 ->
Jingning Hanf1702dd2016-11-30 21:17:59 -0800219#if CONFIG_CB4X4
220 // 2X2, 2X4, 4X2,
221 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
222#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700223 // 4X4
224 PARTITION_SPLIT,
225 // 4X8, 8X4, 8X8
226 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
227 // 8X16, 16X8, 16X16
228 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
229 // 16X32, 32X16, 32X32
230 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
231 // 32X64, 64X32, 64X64
232 PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE,
233#if CONFIG_EXT_PARTITION
234 // 64x128, 128x64, 128x128
235 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
236 }, { // 128x128 ->
Jingning Hanf1702dd2016-11-30 21:17:59 -0800237#if CONFIG_CB4X4
238 // 2X2, 2X4, 4X2,
239 PARTITION_INVALID, PARTITION_INVALID, PARTITION_INVALID,
240#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700241 // 4X4
242 PARTITION_SPLIT,
243 // 4X8, 8X4, 8X8
244 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
245 // 8X16, 16X8, 16X16
246 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
247 // 16X32, 32X16, 32X32
248 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
249 // 32X64, 64X32, 64X64
250 PARTITION_SPLIT, PARTITION_SPLIT, PARTITION_SPLIT,
251 // 64x128, 128x64, 128x128
252 PARTITION_VERT, PARTITION_HORZ, PARTITION_NONE,
253#endif // CONFIG_EXT_PARTITION
254 }
255};
256
257#if CONFIG_EXT_PARTITION_TYPES
258static const BLOCK_SIZE subsize_lookup[EXT_PARTITION_TYPES][BLOCK_SIZES] =
259#else
260static const BLOCK_SIZE subsize_lookup[PARTITION_TYPES][BLOCK_SIZES] =
261#endif // CONFIG_EXT_PARTITION_TYPES
262{
263 { // PARTITION_NONE
Jingning Hanf1702dd2016-11-30 21:17:59 -0800264#if CONFIG_CB4X4
265 // 2X2, 2X4, 4X2,
266 BLOCK_2X2, BLOCK_2X4, BLOCK_4X2,
267#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700268 // 4X4
269 BLOCK_4X4,
270 // 4X8, 8X4, 8X8
271 BLOCK_4X8, BLOCK_8X4, BLOCK_8X8,
272 // 8X16, 16X8, 16X16
273 BLOCK_8X16, BLOCK_16X8, BLOCK_16X16,
274 // 16X32, 32X16, 32X32
275 BLOCK_16X32, BLOCK_32X16, BLOCK_32X32,
276 // 32X64, 64X32, 64X64
277 BLOCK_32X64, BLOCK_64X32, BLOCK_64X64,
278#if CONFIG_EXT_PARTITION
279 // 64x128, 128x64, 128x128
280 BLOCK_64X128, BLOCK_128X64, BLOCK_128X128,
281#endif // CONFIG_EXT_PARTITION
282 }, { // PARTITION_HORZ
Jingning Hanf1702dd2016-11-30 21:17:59 -0800283#if CONFIG_CB4X4
284 // 2X2, 2X4, 4X2,
285 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
Jingning Hanb2f0c332016-12-14 11:28:17 -0800286 // 4X4
287 BLOCK_4X2,
288#else
Yaowu Xuc27fc142016-08-22 16:08:15 -0700289 // 4X4
290 BLOCK_INVALID,
Jingning Hanb2f0c332016-12-14 11:28:17 -0800291#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700292 // 4X8, 8X4, 8X8
293 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4,
294 // 8X16, 16X8, 16X16
295 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8,
296 // 16X32, 32X16, 32X32
297 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16,
298 // 32X64, 64X32, 64X64
299 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32,
300#if CONFIG_EXT_PARTITION
301 // 64x128, 128x64, 128x128
302 BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64,
303#endif // CONFIG_EXT_PARTITION
304 }, { // PARTITION_VERT
Jingning Hanf1702dd2016-11-30 21:17:59 -0800305#if CONFIG_CB4X4
306 // 2X2, 2X4, 4X2,
307 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
Jingning Hanb2f0c332016-12-14 11:28:17 -0800308 // 4X4
309 BLOCK_2X4,
310#else
Yaowu Xuc27fc142016-08-22 16:08:15 -0700311 // 4X4
312 BLOCK_INVALID,
Jingning Hanb2f0c332016-12-14 11:28:17 -0800313#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700314 // 4X8, 8X4, 8X8
315 BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8,
316 // 8X16, 16X8, 16X16
317 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16,
318 // 16X32, 32X16, 32X32
319 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32,
320 // 32X64, 64X32, 64X64
321 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64,
322#if CONFIG_EXT_PARTITION
323 // 64x128, 128x64, 128x128
324 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128,
325#endif // CONFIG_EXT_PARTITION
326 }, { // PARTITION_SPLIT
Jingning Hanf1702dd2016-11-30 21:17:59 -0800327#if CONFIG_CB4X4
328 // 2X2, 2X4, 4X2,
329 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
330#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700331 // 4X4
332 BLOCK_INVALID,
333 // 4X8, 8X4, 8X8
334 BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X4,
335 // 8X16, 16X8, 16X16
336 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X8,
337 // 16X32, 32X16, 32X32
338 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X16,
339 // 32X64, 64X32, 64X64
340 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X32,
341#if CONFIG_EXT_PARTITION
342 // 64x128, 128x64, 128x128
343 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X64,
344#endif // CONFIG_EXT_PARTITION
345#if CONFIG_EXT_PARTITION_TYPES
346 }, { // PARTITION_HORZ_A
Jingning Hanf1702dd2016-11-30 21:17:59 -0800347#if CONFIG_CB4X4
348 // 2X2, 2X4, 4X2,
349 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
350#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700351 // 4X4
352 BLOCK_INVALID,
353 // 4X8, 8X4, 8X8
354 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4,
355 // 8X16, 16X8, 16X16
356 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8,
357 // 16X32, 32X16, 32X32
358 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16,
359 // 32X64, 64X32, 64X64
360 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32,
361#if CONFIG_EXT_PARTITION
362 // 64x128, 128x64, 128x128
363 BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64,
364#endif // CONFIG_EXT_PARTITION
365 }, { // PARTITION_HORZ_B
Jingning Hanf1702dd2016-11-30 21:17:59 -0800366#if CONFIG_CB4X4
367 // 2X2, 2X4, 4X2,
368 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
369#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700370 // 4X4
371 BLOCK_INVALID,
372 // 4X8, 8X4, 8X8
373 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X4,
374 // 8X16, 16X8, 16X16
375 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X8,
376 // 16X32, 32X16, 32X32
377 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X16,
378 // 32X64, 64X32, 64X64
379 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X32,
380#if CONFIG_EXT_PARTITION
381 // 64x128, 128x64, 128x128
382 BLOCK_INVALID, BLOCK_INVALID, BLOCK_128X64,
383#endif // CONFIG_EXT_PARTITION
384 }, { // PARTITION_VERT_A
Jingning Hanf1702dd2016-11-30 21:17:59 -0800385#if CONFIG_CB4X4
386 // 2X2, 2X4, 4X2,
387 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
388#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700389 // 4X4
390 BLOCK_INVALID,
391 // 4X8, 8X4, 8X8
392 BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8,
393 // 8X16, 16X8, 16X16
394 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16,
395 // 16X32, 32X16, 32X32
396 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32,
397 // 32X64, 64X32, 64X64
398 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64,
399#if CONFIG_EXT_PARTITION
400 // 64x128, 128x64, 128x128
401 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128,
402#endif // CONFIG_EXT_PARTITION
403 }, { // PARTITION_VERT_B
Jingning Hanf1702dd2016-11-30 21:17:59 -0800404#if CONFIG_CB4X4
405 // 2X2, 2X4, 4X2,
406 BLOCK_INVALID, BLOCK_INVALID, BLOCK_INVALID,
407#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700408 // 4X4
409 BLOCK_INVALID,
410 // 4X8, 8X4, 8X8
411 BLOCK_INVALID, BLOCK_INVALID, BLOCK_4X8,
412 // 8X16, 16X8, 16X16
413 BLOCK_INVALID, BLOCK_INVALID, BLOCK_8X16,
414 // 16X32, 32X16, 32X32
415 BLOCK_INVALID, BLOCK_INVALID, BLOCK_16X32,
416 // 32X64, 64X32, 64X64
417 BLOCK_INVALID, BLOCK_INVALID, BLOCK_32X64,
418#if CONFIG_EXT_PARTITION
419 // 64x128, 128x64, 128x128
420 BLOCK_INVALID, BLOCK_INVALID, BLOCK_64X128,
421#endif // CONFIG_EXT_PARTITION
422#endif // CONFIG_EXT_PARTITION_TYPES
423 }
424};
425
426static const TX_SIZE max_txsize_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800427#if CONFIG_CB4X4
428 // 2X2, 2X4, 4X2,
429 TX_2X2, TX_2X2, TX_2X2,
430#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700431 // 4X4
432 TX_4X4,
433 // 4X8, 8X4, 8X8
434 TX_4X4, TX_4X4, TX_8X8,
435 // 8X16, 16X8, 16X16
436 TX_8X8, TX_8X8, TX_16X16,
437 // 16X32, 32X16, 32X32
438 TX_16X16, TX_16X16, TX_32X32,
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800439 // 32X64, 64X32,
440 TX_32X32, TX_32X32,
441#if CONFIG_TX64X64
442 // 64X64
443 TX_64X64,
444#if CONFIG_EXT_PARTITION
445 // 64x128, 128x64, 128x128
446 TX_64X64, TX_64X64, TX_64X64,
447#endif // CONFIG_EXT_PARTITION
448#else
449 // 64X64
450 TX_32X32,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700451#if CONFIG_EXT_PARTITION
452 // 64x128, 128x64, 128x128
453 TX_32X32, TX_32X32, TX_32X32,
454#endif // CONFIG_EXT_PARTITION
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800455#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700456};
457
Jingning Han8b77d042017-02-27 08:58:40 -0800458#if CONFIG_RECT_TX
Yaowu Xuc27fc142016-08-22 16:08:15 -0700459static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800460#if CONFIG_CB4X4
461 // 2X2, 2X4, 4X2,
462 TX_2X2, TX_2X2, TX_2X2,
Jingning Han8b77d042017-02-27 08:58:40 -0800463#endif // CONFIG_CB4X4
Yaowu Xuc27fc142016-08-22 16:08:15 -0700464 // 4X4
465 TX_4X4,
466 // 4X8, 8X4, 8X8
467 TX_4X8, TX_8X4, TX_8X8,
468 // 8X16, 16X8, 16X16
469 TX_8X16, TX_16X8, TX_16X16,
470 // 16X32, 32X16, 32X32
471 TX_16X32, TX_32X16, TX_32X32,
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800472 // 32X64, 64X32,
473 TX_32X32, TX_32X32,
474#if CONFIG_TX64X64
475 // 64X64
476 TX_64X64,
477#if CONFIG_EXT_PARTITION
478 // 64x128, 128x64, 128x128
479 TX_64X64, TX_64X64, TX_64X64,
480#endif // CONFIG_EXT_PARTITION
481#else
482 // 64X64
483 TX_32X32,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700484#if CONFIG_EXT_PARTITION
485 // 64x128, 128x64, 128x128
486 TX_32X32, TX_32X32, TX_32X32,
487#endif // CONFIG_EXT_PARTITION
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800488#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700489};
Jingning Han8b77d042017-02-27 08:58:40 -0800490#else
491#define max_txsize_rect_lookup max_txsize_lookup
492#endif // CONFIG_RECT_TX
Yaowu Xuc27fc142016-08-22 16:08:15 -0700493
Jingning Han07ef9672017-01-20 16:00:27 -0800494#if (CONFIG_VAR_TX || CONFIG_RECT_TX)
Urvang Joshifeb925f2016-12-05 10:37:29 -0800495// Same as "max_txsize_lookup[bsize] - TX_8X8", except for rectangular
496// block which may use a rectangular transform, in which case it is
497// "(max_txsize_lookup[bsize] + 1) - TX_8X8", invalid for bsize < 8X8
498static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = {
499#if CONFIG_CB4X4
500 // 2X2, 2X4, 4X2,
501 INT32_MIN, INT32_MIN, INT32_MIN,
Jingning Hanf4e097b2017-01-20 09:23:58 -0800502 // 4X4,
503 INT32_MIN,
504 // 4X8, 8X4, 8X8,
505 TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_8X8 - TX_8X8,
506#else
Urvang Joshifeb925f2016-12-05 10:37:29 -0800507 // 4X4
508 INT32_MIN,
509 // 4X8, 8X4, 8X8
510 INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8,
Jingning Hanf4e097b2017-01-20 09:23:58 -0800511#endif // CONFIG_CB4X4
Urvang Joshifeb925f2016-12-05 10:37:29 -0800512 // 8X16, 16X8, 16X16
513 TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_16X16 - TX_8X8,
514 // 16X32, 32X16, 32X32
515 TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8,
516 // 32X64, 64X32,
517 TX_32X32 - TX_8X8, TX_32X32 - TX_8X8,
518#if CONFIG_TX64X64
519 // 64X64
520 TX_64X64 - TX_8X8,
521#if CONFIG_EXT_PARTITION
522 // 64x128, 128x64, 128x128
523 TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8,
524#endif // CONFIG_EXT_PARTITION
525#else
526 // 64X64
527 TX_32X32 - TX_8X8,
528#if CONFIG_EXT_PARTITION
529 // 64x128, 128x64, 128x128
530 TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8,
531#endif // CONFIG_EXT_PARTITION
532#endif // CONFIG_TX64X64
533};
534#else
Yaowu Xuc27fc142016-08-22 16:08:15 -0700535// Same as "max_txsize_lookup[bsize] - TX_8X8", invalid for bsize < 8X8
536static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800537#if CONFIG_CB4X4
538 // 2X2, 2X4, 4X2,
539 INT32_MIN, INT32_MIN, INT32_MIN,
540#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700541 // 4X4
542 INT32_MIN,
543 // 4X8, 8X4, 8X8
544 INT32_MIN, INT32_MIN, TX_8X8 - TX_8X8,
545 // 8X16, 16X8, 16X16
546 TX_8X8 - TX_8X8, TX_8X8 - TX_8X8, TX_16X16 - TX_8X8,
547 // 16X32, 32X16, 32X32
548 TX_16X16 - TX_8X8, TX_16X16 - TX_8X8, TX_32X32 - TX_8X8,
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800549 // 32X64, 64X32,
550 TX_32X32 - TX_8X8, TX_32X32 - TX_8X8,
551#if CONFIG_TX64X64
552 // 64X64
553 TX_64X64 - TX_8X8,
554#if CONFIG_EXT_PARTITION
555 // 64x128, 128x64, 128x128
556 TX_64X64 - TX_8X8, TX_64X64 - TX_8X8, TX_64X64 - TX_8X8,
557#endif // CONFIG_EXT_PARTITION
558#else
559 // 64X64
560 TX_32X32 - TX_8X8,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700561#if CONFIG_EXT_PARTITION
562 // 64x128, 128x64, 128x128
563 TX_32X32 - TX_8X8, TX_32X32 - TX_8X8, TX_32X32 - TX_8X8,
564#endif // CONFIG_EXT_PARTITION
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800565#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700566};
Jingning Han07ef9672017-01-20 16:00:27 -0800567#endif // CONFIG_VAR_TX && CONFIG_RECT_TX
Yaowu Xuc27fc142016-08-22 16:08:15 -0700568
Urvang Joshifeb925f2016-12-05 10:37:29 -0800569#define inter_tx_size_cat_lookup intra_tx_size_cat_lookup
570
Yaowu Xuc27fc142016-08-22 16:08:15 -0700571/* clang-format on */
572
Jingning Hana9336322016-11-02 15:45:07 -0700573static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = {
574#if CONFIG_CB4X4
575 TX_2X2, // TX_2X2
576#endif
577 TX_4X4, // TX_4X4
578 TX_4X4, // TX_8X8
579 TX_8X8, // TX_16X16
580 TX_16X16, // TX_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800581#if CONFIG_TX64X64
582 TX_32X32, // TX_64X64
583#endif // CONFIG_TX64X64
Jingning Hana9336322016-11-02 15:45:07 -0700584 TX_4X4, // TX_4X8
585 TX_4X4, // TX_8X4
586 TX_8X8, // TX_8X16
587 TX_8X8, // TX_16X8
588 TX_16X16, // TX_16X32
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800589 TX_16X16, // TX_32X16
590 TX_4X4, // TX_4X16
591 TX_4X4, // TX_16X4
592 TX_8X8, // TX_8X32
593 TX_8X8, // TX_32X8
Jingning Hana9336322016-11-02 15:45:07 -0700594};
595
Yaowu Xuc27fc142016-08-22 16:08:15 -0700596static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700597#if CONFIG_CB4X4
598 TX_2X2, // TX_2X2
599#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700600 TX_4X4, // TX_4X4
601 TX_8X8, // TX_8X8
602 TX_16X16, // TX_16X16
603 TX_32X32, // TX_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800604#if CONFIG_TX64X64
605 TX_64X64, // TX_64X64
606#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700607 TX_4X4, // TX_4X8
608 TX_8X8, // TX_8X4
609 TX_8X8, // TX_8X16
610 TX_16X16, // TX_16X8
611 TX_16X16, // TX_16X32
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800612 TX_32X32, // TX_32X16
613 TX_4X4, // TX_4X16
614 TX_16X16, // TX_16X4
615 TX_8X8, // TX_8X32
616 TX_32X32, // TX_32X8
Yaowu Xuc27fc142016-08-22 16:08:15 -0700617};
618
619static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700620#if CONFIG_CB4X4
621 TX_2X2, // TX_2X2
622#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700623 TX_4X4, // TX_4X4
624 TX_8X8, // TX_8X8
625 TX_16X16, // TX_16X16
626 TX_32X32, // TX_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800627#if CONFIG_TX64X64
628 TX_64X64, // TX_64X64
629#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700630 TX_8X8, // TX_4X8
631 TX_4X4, // TX_8X4
632 TX_16X16, // TX_8X16
633 TX_8X8, // TX_16X8
634 TX_32X32, // TX_16X32
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800635 TX_16X16, // TX_32X16
636 TX_16X16, // TX_4X16
637 TX_4X4, // TX_16X4
638 TX_32X32, // TX_8X32
639 TX_8X8, // TX_32X8
Yaowu Xuc27fc142016-08-22 16:08:15 -0700640};
641
Angie Chiang0397eda2017-03-15 16:57:14 -0700642#if CONFIG_CB4X4
643#define TX_SIZE_W_MIN 2
644#else
645#define TX_SIZE_W_MIN 4
646#endif
647
Jingning Han5d5cd6a2016-10-21 12:06:02 -0700648// Transform block width in pixels
649static const int tx_size_wide[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700650#if CONFIG_CB4X4
651 2,
652#endif
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800653 4, 8, 16, 32,
654#if CONFIG_TX64X64
655 64,
656#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800657 4, 8, 8, 16, 16, 32, 4, 16, 8, 32
Jingning Han5d5cd6a2016-10-21 12:06:02 -0700658};
659
Angie Chiang0397eda2017-03-15 16:57:14 -0700660#if CONFIG_CB4X4
661#define TX_SIZE_H_MIN 2
662#else
663#define TX_SIZE_H_MIN 4
664#endif
665
Jingning Han5d5cd6a2016-10-21 12:06:02 -0700666// Transform block height in pixels
667static const int tx_size_high[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700668#if CONFIG_CB4X4
669 2,
670#endif
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800671 4, 8, 16, 32,
672#if CONFIG_TX64X64
673 64,
674#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800675 8, 4, 16, 8, 32, 16, 16, 4, 32, 8
Jingning Han5d5cd6a2016-10-21 12:06:02 -0700676};
677
678// Transform block width in unit
679static const int tx_size_wide_unit[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700680#if CONFIG_CB4X4
Jingning Han0d1be882016-12-05 12:56:31 -0800681 1, 2, 4, 8, 16,
682#if CONFIG_TX64X64
683 32,
684#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800685 2, 4, 4, 8, 8, 16, 2, 8, 4, 16
Jingning Han0d1be882016-12-05 12:56:31 -0800686#else // CONFIG_CB4X4
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800687 1, 2, 4, 8,
688#if CONFIG_TX64X64
689 16,
690#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800691 1, 2, 2, 4, 4, 8, 1, 4, 2, 8
Jingning Han0d1be882016-12-05 12:56:31 -0800692#endif // CONFIG_CB4X4
Jingning Han5d5cd6a2016-10-21 12:06:02 -0700693};
694
695// Transform block height in unit
696static const int tx_size_high_unit[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700697#if CONFIG_CB4X4
Jingning Han0d1be882016-12-05 12:56:31 -0800698 1, 2, 4, 8, 16,
699#if CONFIG_TX64X64
700 32,
701#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800702 4, 2, 8, 4, 16, 8, 8, 2, 16, 4
Jingning Han0d1be882016-12-05 12:56:31 -0800703#else // CONFIG_CB4X4
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800704 1, 2, 4, 8,
705#if CONFIG_TX64X64
706 16,
707#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800708 2, 1, 4, 2, 8, 4, 4, 1, 8, 2
Jingning Han0d1be882016-12-05 12:56:31 -0800709#endif // CONFIG_CB4X4
Jingning Han5d5cd6a2016-10-21 12:06:02 -0700710};
Jingning Han02935f52016-10-19 14:52:53 -0700711
Jingning Han95cff5c2016-10-25 09:47:02 -0700712// Transform block width in log2
713static const int tx_size_wide_log2[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700714#if CONFIG_CB4X4
Jingning Han0d1be882016-12-05 12:56:31 -0800715 1,
Jingning Han607fa6a2016-10-26 10:46:28 -0700716#endif
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800717 2, 3, 4, 5,
718#if CONFIG_TX64X64
719 6,
720#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800721 2, 3, 3, 4, 4, 5, 2, 4, 3, 5
Jingning Han95cff5c2016-10-25 09:47:02 -0700722};
723
724// Transform block height in log2
725static const int tx_size_high_log2[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700726#if CONFIG_CB4X4
Jingning Han0d1be882016-12-05 12:56:31 -0800727 1,
Jingning Han607fa6a2016-10-26 10:46:28 -0700728#endif
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800729 2, 3, 4, 5,
730#if CONFIG_TX64X64
731 6,
732#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800733 3, 2, 4, 3, 5, 4, 4, 2, 5, 3
Jingning Han95cff5c2016-10-25 09:47:02 -0700734};
735
Jingning Han3d855c52016-10-21 10:51:31 -0700736static const int tx_size_2d[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700737#if CONFIG_CB4X4
738 4,
739#endif
Yaowu Xu49eea112016-11-09 14:50:06 -0800740 16, 64, 256, 1024,
Debargha Mukherjee0e119122016-11-04 12:10:23 -0700741#if CONFIG_TX64X64
742 4096,
743#endif // CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800744 32, 32, 128, 128, 512, 512, 64, 64, 256, 256
Jingning Han3d855c52016-10-21 10:51:31 -0700745};
Jingning Han02935f52016-10-19 14:52:53 -0700746
Yaowu Xuc27fc142016-08-22 16:08:15 -0700747static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700748#if CONFIG_CB4X4
Jingning Han0d1be882016-12-05 12:56:31 -0800749 BLOCK_2X2, // TX_2X2
Jingning Han607fa6a2016-10-26 10:46:28 -0700750#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700751 BLOCK_4X4, // TX_4X4
752 BLOCK_8X8, // TX_8X8
753 BLOCK_16X16, // TX_16X16
754 BLOCK_32X32, // TX_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800755#if CONFIG_TX64X64
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800756 BLOCK_64X64, // TX_64X64
757#endif // CONFIG_TX64X64
758 BLOCK_4X8, // TX_4X8
759 BLOCK_8X4, // TX_8X4
760 BLOCK_8X16, // TX_8X16
761 BLOCK_16X8, // TX_16X8
762 BLOCK_16X32, // TX_16X32
763 BLOCK_32X16, // TX_32X16
764 BLOCK_INVALID, // TX_4X16
765 BLOCK_INVALID, // TX_16X4
766 BLOCK_INVALID, // TX_8X32
767 BLOCK_INVALID, // TX_32X8
Yaowu Xuc27fc142016-08-22 16:08:15 -0700768};
769
770static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700771#if CONFIG_CB4X4
772 TX_2X2, // TX_2X2
773#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700774 TX_4X4, // TX_4X4
775 TX_8X8, // TX_8X8
776 TX_16X16, // TX_16X16
777 TX_32X32, // TX_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800778#if CONFIG_TX64X64
779 TX_64X64, // TX_64X64
780#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700781 TX_4X4, // TX_4X8
782 TX_4X4, // TX_8X4
783 TX_8X8, // TX_8X16
784 TX_8X8, // TX_16X8
785 TX_16X16, // TX_16X32
786 TX_16X16, // TX_32X16
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800787 TX_4X4, // TX_4X16
788 TX_4X4, // TX_16X4
789 TX_8X8, // TX_8X32
790 TX_8X8, // TX_32X8
Yaowu Xuc27fc142016-08-22 16:08:15 -0700791};
792
793static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = {
Jingning Han607fa6a2016-10-26 10:46:28 -0700794#if CONFIG_CB4X4
795 TX_2X2, // TX_2X2
796#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700797 TX_4X4, // TX_4X4
798 TX_8X8, // TX_8X8
799 TX_16X16, // TX_16X16
800 TX_32X32, // TX_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800801#if CONFIG_TX64X64
802 TX_64X64, // TX_64X64
803#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700804 TX_8X8, // TX_4X8
805 TX_8X8, // TX_8X4
806 TX_16X16, // TX_8X16
807 TX_16X16, // TX_16X8
808 TX_32X32, // TX_16X32
809 TX_32X32, // TX_32X16
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800810 TX_16X16, // TX_4X16
811 TX_16X16, // TX_16X4
812 TX_32X32, // TX_8X32
813 TX_32X32, // TX_32X8
Yaowu Xuc27fc142016-08-22 16:08:15 -0700814};
815
Jingning Hanffb8b8b2016-12-01 12:48:24 -0800816/* clang-format off */
Yaowu Xuc27fc142016-08-22 16:08:15 -0700817static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = {
818 TX_4X4, // ONLY_4X4
819 TX_8X8, // ALLOW_8X8
820 TX_16X16, // ALLOW_16X16
821 TX_32X32, // ALLOW_32X32
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800822#if CONFIG_TX64X64
823 TX_64X64, // ALLOW_64X64
824 TX_64X64, // TX_MODE_SELECT
825#else
Jingning Hanffb8b8b2016-12-01 12:48:24 -0800826 TX_32X32, // TX_MODE_SELECT
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800827#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -0700828};
Jingning Hanffb8b8b2016-12-01 12:48:24 -0800829/* clang-format on */
Yaowu Xuc27fc142016-08-22 16:08:15 -0700830
831static const BLOCK_SIZE ss_size_lookup[BLOCK_SIZES][2][2] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800832// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1
833// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1
834#if CONFIG_CB4X4
835 { { BLOCK_2X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } },
836 { { BLOCK_2X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } },
837 { { BLOCK_4X2, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } },
Jingning Hanb2f0c332016-12-14 11:28:17 -0800838 { { BLOCK_4X4, BLOCK_4X2 }, { BLOCK_2X4, BLOCK_2X2 } },
839 { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_2X4 } },
840 { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_4X2 } },
841#else
Yaowu Xuc27fc142016-08-22 16:08:15 -0700842 { { BLOCK_4X4, BLOCK_INVALID }, { BLOCK_INVALID, BLOCK_INVALID } },
843 { { BLOCK_4X8, BLOCK_4X4 }, { BLOCK_INVALID, BLOCK_INVALID } },
844 { { BLOCK_8X4, BLOCK_INVALID }, { BLOCK_4X4, BLOCK_INVALID } },
Jingning Hanb2f0c332016-12-14 11:28:17 -0800845#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700846 { { BLOCK_8X8, BLOCK_8X4 }, { BLOCK_4X8, BLOCK_4X4 } },
847 { { BLOCK_8X16, BLOCK_8X8 }, { BLOCK_INVALID, BLOCK_4X8 } },
848 { { BLOCK_16X8, BLOCK_INVALID }, { BLOCK_8X8, BLOCK_8X4 } },
849 { { BLOCK_16X16, BLOCK_16X8 }, { BLOCK_8X16, BLOCK_8X8 } },
850 { { BLOCK_16X32, BLOCK_16X16 }, { BLOCK_INVALID, BLOCK_8X16 } },
851 { { BLOCK_32X16, BLOCK_INVALID }, { BLOCK_16X16, BLOCK_16X8 } },
852 { { BLOCK_32X32, BLOCK_32X16 }, { BLOCK_16X32, BLOCK_16X16 } },
853 { { BLOCK_32X64, BLOCK_32X32 }, { BLOCK_INVALID, BLOCK_16X32 } },
854 { { BLOCK_64X32, BLOCK_INVALID }, { BLOCK_32X32, BLOCK_32X16 } },
855 { { BLOCK_64X64, BLOCK_64X32 }, { BLOCK_32X64, BLOCK_32X32 } },
856#if CONFIG_EXT_PARTITION
857 { { BLOCK_64X128, BLOCK_64X64 }, { BLOCK_INVALID, BLOCK_32X64 } },
858 { { BLOCK_128X64, BLOCK_INVALID }, { BLOCK_64X64, BLOCK_64X32 } },
859 { { BLOCK_128X128, BLOCK_128X64 }, { BLOCK_64X128, BLOCK_64X64 } },
860#endif // CONFIG_EXT_PARTITION
861};
862
Debargha Mukherjee2f123402016-08-30 17:43:38 -0700863static const TX_SIZE uv_txsize_lookup[BLOCK_SIZES][TX_SIZES_ALL][2][2] = {
Jingning Hanf1702dd2016-11-30 21:17:59 -0800864// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1
865// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1
866#if CONFIG_CB4X4
867 {
868 // BLOCK_2X2
869 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
870 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
871 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
872 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
873 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
874#if CONFIG_TX64X64
875 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
876#endif // CONFIG_TX64X64
877 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
878 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
879 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
880 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
881 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
882 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800883 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
884 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
885 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
886 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Jingning Hanf1702dd2016-11-30 21:17:59 -0800887 },
888 {
889 // BLOCK_2X4
890 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
891 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
892 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
893 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
894 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
895#if CONFIG_TX64X64
896 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
897#endif // CONFIG_TX64X64
898 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
899 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
900 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
901 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
902 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
903 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800904 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
905 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
906 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
907 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Jingning Hanf1702dd2016-11-30 21:17:59 -0800908 },
909 {
910 // BLOCK_2X4
911 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
912 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
913 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
914 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
915 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
916#if CONFIG_TX64X64
917 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
918#endif // CONFIG_TX64X64
919 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
920 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
921 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
922 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
923 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
924 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800925 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
926 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
927 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
928 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Jingning Hanf1702dd2016-11-30 21:17:59 -0800929 },
930#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -0700931 {
Jingning Han607fa6a2016-10-26 10:46:28 -0700932// BLOCK_4X4
933#if CONFIG_CB4X4
Jingning Hancabd9892016-12-01 12:28:42 -0800934 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
935 { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } },
936#else
Jingning Han607fa6a2016-10-26 10:46:28 -0700937 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Jingning Hancabd9892016-12-01 12:28:42 -0800938#endif // CONFIG_CB4X4
Debargha Mukherjee2f123402016-08-30 17:43:38 -0700939 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
940 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
941 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800942#if CONFIG_TX64X64
943 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
944#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -0700945 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
946 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
947 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
948 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
949 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
950 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800951 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
952 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
953 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
954 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -0700955 },
956 {
Jingning Han607fa6a2016-10-26 10:46:28 -0700957// BLOCK_4X8
958#if CONFIG_CB4X4
Jingning Hancabd9892016-12-01 12:28:42 -0800959 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
960 { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } },
961#else
Jingning Han607fa6a2016-10-26 10:46:28 -0700962 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
963#endif
Jingning Han4542d222016-11-08 11:15:16 -0800964 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
965 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
966 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800967#if CONFIG_TX64X64
968 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
Jingning Han3daa4fd2017-01-20 10:33:50 -0800969#endif // CONFIG_TX64X64
970#if CONFIG_CB4X4
971 { { TX_4X8, TX_4X4 }, { TX_2X2, TX_2X2 } }, // used
972#else
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800973 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used
Jingning Han3daa4fd2017-01-20 10:33:50 -0800974#endif
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800975 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
976 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
Jingning Han4542d222016-11-08 11:15:16 -0800977 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
978 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
979 { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -0800980 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
981 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
982 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
983 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -0700984 },
985 {
Jingning Han607fa6a2016-10-26 10:46:28 -0700986// BLOCK_8X4
987#if CONFIG_CB4X4
Jingning Hancabd9892016-12-01 12:28:42 -0800988 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
989 { { TX_4X4, TX_2X2 }, { TX_2X2, TX_2X2 } },
990#else
Jingning Han607fa6a2016-10-26 10:46:28 -0700991 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
992#endif
Jingning Han4542d222016-11-08 11:15:16 -0800993 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
994 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
995 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -0800996#if CONFIG_TX64X64
997 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
998#endif // CONFIG_TX64X64
999 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Jingning Han3daa4fd2017-01-20 10:33:50 -08001000#if CONFIG_CB4X4
1001 { { TX_8X4, TX_2X2 }, { TX_4X4, TX_2X2 } }, // used
1002#else
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001003 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used
Jingning Han3daa4fd2017-01-20 10:33:50 -08001004#endif
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001005 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Jingning Han4542d222016-11-08 11:15:16 -08001006 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1007 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1008 { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001009 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1010 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1011 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1012 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001013 },
1014 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001015// BLOCK_8X8
1016#if CONFIG_CB4X4
Jingning Hanb2f0c332016-12-14 11:28:17 -08001017 { { TX_2X2, TX_2X2 }, { TX_2X2, TX_2X2 } },
Jingning Han607fa6a2016-10-26 10:46:28 -07001018#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001019 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee6de06dd2016-09-22 10:10:20 -07001020 { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001021 { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
1022 { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
1023#if CONFIG_TX64X64
1024 { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
1025#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001026 { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } },
1027 { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
1028 { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
1029 { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
1030 { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
1031 { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001032 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1033 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1034 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1035 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001036 },
1037 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001038// BLOCK_8X16
1039#if CONFIG_CB4X4
1040 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1041#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001042 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1043 { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
1044 { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
1045 { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001046#if CONFIG_TX64X64
1047 { { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
1048#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001049 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1050 { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001051 { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } }, // used
Jingning Han4542d222016-11-08 11:15:16 -08001052 { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } },
1053 { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } },
1054 { { TX_8X16, TX_8X8 }, { TX_4X8, TX_4X8 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001055 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1056 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1057 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1058 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001059 },
1060 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001061// BLOCK_16X8
1062#if CONFIG_CB4X4
1063 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1064#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001065 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1066 { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001067 { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } },
1068 { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } },
1069#if CONFIG_TX64X64
1070 { { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } },
1071#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001072 { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } },
1073 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
Jingning Han4542d222016-11-08 11:15:16 -08001074 { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001075 { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } }, // used
Jingning Han4542d222016-11-08 11:15:16 -08001076 { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
1077 { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001078 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1079 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1080 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1081 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001082 },
1083 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001084// BLOCK_16X16
1085#if CONFIG_CB4X4
1086 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1087#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001088 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1089 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1090 { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } },
1091 { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001092#if CONFIG_TX64X64
1093 { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } },
1094#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001095 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1096 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1097 { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
1098 { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } },
1099 { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
1100 { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001101 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1102 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1103 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1104 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001105 },
1106 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001107// BLOCK_16X32
1108#if CONFIG_CB4X4
1109 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1110#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001111 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1112 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1113 { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } },
1114 { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001115#if CONFIG_TX64X64
1116 { { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } },
1117#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001118 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1119 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1120 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1121 { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001122 { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } }, // used
Jingning Han4542d222016-11-08 11:15:16 -08001123 { { TX_16X32, TX_16X16 }, { TX_8X16, TX_8X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001124 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1125 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1126 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1127 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001128 },
1129 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001130// BLOCK_32X16
1131#if CONFIG_CB4X4
1132 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1133#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001134 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1135 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1136 { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } },
1137 { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001138#if CONFIG_TX64X64
1139 { { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } },
1140#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001141 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1142 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1143 { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
1144 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
Jingning Han4542d222016-11-08 11:15:16 -08001145 { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001146 { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } }, // used
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001147 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1148 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1149 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1150 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001151 },
1152 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001153// BLOCK_32X32
1154#if CONFIG_CB4X4
1155 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1156#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001157 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1158 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1159 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1160 { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001161#if CONFIG_TX64X64
1162 { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } },
1163#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001164 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1165 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1166 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1167 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1168 { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } },
1169 { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001170 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1171 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1172 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1173 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001174 },
1175 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001176// BLOCK_32X64
1177#if CONFIG_CB4X4
1178 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1179#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001180 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1181 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1182 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1183 { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001184#if CONFIG_TX64X64
1185 { { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } },
1186#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001187 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1188 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1189 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1190 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1191 { { TX_16X32, TX_16X32 }, { TX_16X16, TX_16X16 } },
1192 { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001193 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1194 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1195 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1196 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001197 },
1198 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001199// BLOCK_64X32
1200#if CONFIG_CB4X4
1201 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1202#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001203 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1204 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1205 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1206 { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001207#if CONFIG_TX64X64
1208 { { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } },
1209#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001210 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1211 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1212 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1213 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1214 { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } },
1215 { { TX_32X16, TX_16X16 }, { TX_32X16, TX_16X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001216 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1217 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1218 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1219 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001220 },
1221 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001222// BLOCK_64X64
1223#if CONFIG_CB4X4
1224 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1225#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001226 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1227 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1228 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1229 { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001230#if CONFIG_TX64X64
1231 { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } },
1232#endif // CONFIG_TX64X64
1233 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1234 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1235 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1236 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1237 { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
1238 { { TX_32X16, TX_32X16 }, { TX_32X16, TX_16X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001239 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1240 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1241 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1242 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001243 },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001244#if CONFIG_EXT_PARTITION
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001245 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001246// BLOCK_64X128
1247#if CONFIG_CB4X4
1248 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1249#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001250 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1251 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1252 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1253 { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001254#if CONFIG_TX64X64
1255 { { TX_64X64, TX_64X64 }, { TX_32X32, TX_32X32 } },
1256#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001257 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1258 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1259 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1260 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1261 { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
1262 { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001263 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1264 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1265 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1266 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001267 },
1268 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001269// BLOCK_128X64
1270#if CONFIG_CB4X4
1271 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1272#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001273 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1274 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1275 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1276 { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001277#if CONFIG_TX64X64
1278 { { TX_64X64, TX_32X32 }, { TX_64X64, TX_32X32 } },
1279#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001280 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1281 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1282 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1283 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1284 { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
1285 { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001286 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1287 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1288 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1289 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001290 },
1291 {
Jingning Han607fa6a2016-10-26 10:46:28 -07001292// BLOCK_128X128
1293#if CONFIG_CB4X4
1294 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1295#endif
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001296 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1297 { { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
1298 { { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
1299 { { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001300#if CONFIG_TX64X64
1301 { { TX_64X64, TX_64X64 }, { TX_64X64, TX_64X64 } },
1302#endif // CONFIG_TX64X64
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001303 { { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
1304 { { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
1305 { { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
1306 { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
1307 { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
1308 { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
Debargha Mukherjeee8c6f5f2016-12-16 13:24:39 -08001309 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1310 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1311 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
1312 { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001313 },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001314#endif // CONFIG_EXT_PARTITION
Debargha Mukherjee2f123402016-08-30 17:43:38 -07001315};
1316
Yaowu Xuc27fc142016-08-22 16:08:15 -07001317// Generates 4 bit field in which each bit set to 1 represents
1318// a blocksize partition 1111 means we split 64x64, 32x32, 16x16
1319// and 8x8. 1000 means we just split the 64x64 to 32x32
Jingning Han3daa4fd2017-01-20 10:33:50 -08001320/* clang-format off */
Yaowu Xuc27fc142016-08-22 16:08:15 -07001321static const struct {
1322 PARTITION_CONTEXT above;
1323 PARTITION_CONTEXT left;
1324} partition_context_lookup[BLOCK_SIZES] = {
1325#if CONFIG_EXT_PARTITION
Jingning Hanf1702dd2016-11-30 21:17:59 -08001326#if CONFIG_CB4X4
1327 { 31, 31 }, // 2X2 - {0b11111, 0b11111}
1328 { 31, 31 }, // 2X4 - {0b11111, 0b11111}
1329 { 31, 31 }, // 4X2 - {0b11111, 0b11111}
1330#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -07001331 { 31, 31 }, // 4X4 - {0b11111, 0b11111}
1332 { 31, 30 }, // 4X8 - {0b11111, 0b11110}
1333 { 30, 31 }, // 8X4 - {0b11110, 0b11111}
1334 { 30, 30 }, // 8X8 - {0b11110, 0b11110}
1335 { 30, 28 }, // 8X16 - {0b11110, 0b11100}
1336 { 28, 30 }, // 16X8 - {0b11100, 0b11110}
1337 { 28, 28 }, // 16X16 - {0b11100, 0b11100}
1338 { 28, 24 }, // 16X32 - {0b11100, 0b11000}
1339 { 24, 28 }, // 32X16 - {0b11000, 0b11100}
1340 { 24, 24 }, // 32X32 - {0b11000, 0b11000}
1341 { 24, 16 }, // 32X64 - {0b11000, 0b10000}
1342 { 16, 24 }, // 64X32 - {0b10000, 0b11000}
1343 { 16, 16 }, // 64X64 - {0b10000, 0b10000}
1344 { 16, 0 }, // 64X128- {0b10000, 0b00000}
1345 { 0, 16 }, // 128X64- {0b00000, 0b10000}
1346 { 0, 0 }, // 128X128-{0b00000, 0b00000}
1347#else
Jingning Hanf1702dd2016-11-30 21:17:59 -08001348#if CONFIG_CB4X4
1349 { 15, 15 }, // 2X2 - {0b1111, 0b1111}
1350 { 15, 15 }, // 2X4 - {0b1111, 0b1111}
1351 { 15, 15 }, // 4X2 - {0b1111, 0b1111}
1352#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -07001353 { 15, 15 }, // 4X4 - {0b1111, 0b1111}
1354 { 15, 14 }, // 4X8 - {0b1111, 0b1110}
1355 { 14, 15 }, // 8X4 - {0b1110, 0b1111}
1356 { 14, 14 }, // 8X8 - {0b1110, 0b1110}
1357 { 14, 12 }, // 8X16 - {0b1110, 0b1100}
1358 { 12, 14 }, // 16X8 - {0b1100, 0b1110}
1359 { 12, 12 }, // 16X16 - {0b1100, 0b1100}
1360 { 12, 8 }, // 16X32 - {0b1100, 0b1000}
1361 { 8, 12 }, // 32X16 - {0b1000, 0b1100}
1362 { 8, 8 }, // 32X32 - {0b1000, 0b1000}
1363 { 8, 0 }, // 32X64 - {0b1000, 0b0000}
1364 { 0, 8 }, // 64X32 - {0b0000, 0b1000}
1365 { 0, 0 }, // 64X64 - {0b0000, 0b0000}
1366#endif // CONFIG_EXT_PARTITION
1367};
Jingning Han3daa4fd2017-01-20 10:33:50 -08001368/* clang-format on */
Yaowu Xuc27fc142016-08-22 16:08:15 -07001369
1370#if CONFIG_SUPERTX
1371static const TX_SIZE uvsupertx_size_lookup[TX_SIZES][2][2] = {
Jingning Han607fa6a2016-10-26 10:46:28 -07001372// ss_x == 0 ss_x == 0 ss_x == 1 ss_x == 1
1373// ss_y == 0 ss_y == 1 ss_y == 0 ss_y == 1
1374#if CONFIG_CB4X4
1375 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1376#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -07001377 { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
1378 { { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
1379 { { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } },
1380 { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } },
Debargha Mukherjee18d38f62016-11-17 20:30:16 -08001381#if CONFIG_TX64X64
1382 { { TX_64X64, TX_32X32 }, { TX_32X32, TX_32X32 } },
1383#endif // CONFIG_TX64X64
Yaowu Xuc27fc142016-08-22 16:08:15 -07001384};
1385
1386#if CONFIG_EXT_PARTITION_TYPES
1387static const int partition_supertx_context_lookup[EXT_PARTITION_TYPES] = {
1388 -1, 0, 0, 1, 0, 0, 0, 0
1389};
1390
1391#else
1392static const int partition_supertx_context_lookup[PARTITION_TYPES] = { -1, 0, 0,
1393 1 };
1394#endif // CONFIG_EXT_PARTITION_TYPES
1395#endif // CONFIG_SUPERTX
1396
1397#ifdef __cplusplus
1398} // extern "C"
1399#endif
1400
Yaowu Xuf883b422016-08-30 14:01:10 -07001401#endif // AV1_COMMON_COMMON_DATA_H_