2 * Copyright (c) 2018, Alliance for Open Media. All rights reserved
4 * 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.
12 #include "av1/common/blockd.h"
13 #include "third_party/googletest/src/googletest/include/gtest/gtest.h"
15 // Verify the optimized implementation of get_partition_subsize() produces the
16 // same results as the Partition_Subsize lookup table in the spec.
17 TEST(BlockdTest
, GetPartitionSubsize
) {
18 // The Partition_Subsize table in the spec (Section 9.3. Conversion tables).
19 /* clang-format off */
20 static const BLOCK_SIZE kPartitionSubsize
[10][BLOCK_SIZES_ALL
] = {
23 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X8
,
24 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X16
,
25 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X32
,
26 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X64
,
27 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_128X128
,
28 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
29 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
32 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X4
,
33 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X8
,
34 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X16
,
35 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X32
,
36 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_128X64
,
37 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
38 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
41 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_4X8
,
42 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X16
,
43 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X32
,
44 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X64
,
45 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X128
,
46 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
47 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
50 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_4X4
,
51 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X8
,
52 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X16
,
53 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X32
,
54 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X64
,
55 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
56 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
59 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X4
,
60 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X8
,
61 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X16
,
62 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X32
,
63 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_128X64
,
64 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
65 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
68 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X4
,
69 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X8
,
70 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X16
,
71 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X32
,
72 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_128X64
,
73 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
74 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
77 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_4X8
,
78 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X16
,
79 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X32
,
80 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X64
,
81 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X128
,
82 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
83 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
86 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_4X8
,
87 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X16
,
88 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X32
,
89 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X64
,
90 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X128
,
91 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
92 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
95 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
96 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X4
,
97 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_32X8
,
98 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_64X16
,
99 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
100 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
101 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
104 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
105 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_4X16
,
106 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_8X32
,
107 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_16X64
,
108 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
109 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
,
110 BLOCK_INVALID
, BLOCK_INVALID
, BLOCK_INVALID
113 /* clang-format on */
115 for (int partition
= 0; partition
< 10; partition
++) {
116 for (int bsize
= BLOCK_4X4
; bsize
< BLOCK_SIZES_ALL
; bsize
++) {
117 EXPECT_EQ(kPartitionSubsize
[partition
][bsize
],
118 get_partition_subsize(static_cast<BLOCK_SIZE
>(bsize
),
119 static_cast<PARTITION_TYPE
>(partition
)));