Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Xiph.Org
aom-rav1e
Commits
f5ad7748
Commit
f5ad7748
authored
Apr 29, 2013
by
Ronald S. Bultje
Committed by
Gerrit Code Review
Apr 29, 2013
Browse files
Options
Browse Files
Download
Plain Diff
Merge "Change above/left_context to use an 8x8 basis." into experimental
parents
9dcbbe3d
2dbaa4f4
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
368 additions
and
1498 deletions
+368
-1498
vp9/common/vp9_alloccommon.c
vp9/common/vp9_alloccommon.c
+13
-7
vp9/common/vp9_blockd.c
vp9/common/vp9_blockd.c
+0
-919
vp9/common/vp9_blockd.h
vp9/common/vp9_blockd.h
+2
-24
vp9/common/vp9_entropy.h
vp9/common/vp9_entropy.h
+9
-4
vp9/common/vp9_onyxc_int.h
vp9/common/vp9_onyxc_int.h
+2
-2
vp9/decoder/vp9_decodframe.c
vp9/decoder/vp9_decodframe.c
+12
-5
vp9/decoder/vp9_detokenize.c
vp9/decoder/vp9_detokenize.c
+26
-87
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_encodeframe.c
+94
-28
vp9/encoder/vp9_encodemb.c
vp9/encoder/vp9_encodemb.c
+62
-99
vp9/encoder/vp9_rdopt.c
vp9/encoder/vp9_rdopt.c
+128
-216
vp9/encoder/vp9_tokenize.c
vp9/encoder/vp9_tokenize.c
+20
-106
vp9/vp9_common.mk
vp9/vp9_common.mk
+0
-1
No files found.
vp9/common/vp9_alloccommon.c
View file @
f5ad7748
...
...
@@ -57,19 +57,20 @@ void vp9_free_frame_buffers(VP9_COMMON *oci) {
vp8_yv12_de_alloc_frame_buffer
(
&
oci
->
temp_scale_frame
);
vp8_yv12_de_alloc_frame_buffer
(
&
oci
->
post_proc_buffer
);
vpx_free
(
oci
->
above_context
);
vpx_free
(
oci
->
mip
);
vpx_free
(
oci
->
prev_mip
);
vpx_free
(
oci
->
above_seg_context
);
oci
->
above_context
=
0
;
vpx_free
(
oci
->
above_context
[
0
]);
for
(
i
=
0
;
i
<
MAX_MB_PLANE
;
i
++
)
oci
->
above_context
[
i
]
=
0
;
oci
->
mip
=
0
;
oci
->
prev_mip
=
0
;
oci
->
above_seg_context
=
0
;
}
int
vp9_alloc_frame_buffers
(
VP9_COMMON
*
oci
,
int
width
,
int
height
)
{
int
i
;
int
i
,
mb_cols
;
// Our internal buffers are always multiples of 16
const
int
aligned_width
=
multiple16
(
width
);
...
...
@@ -137,13 +138,18 @@ int vp9_alloc_frame_buffers(VP9_COMMON *oci, int width, int height) {
oci
->
prev_mi
=
oci
->
prev_mip
+
oci
->
mode_info_stride
+
1
;
oci
->
above_context
=
vpx_calloc
(
sizeof
(
ENTROPY_CONTEXT_PLANES
)
*
mb_cols_aligned_to_sb
(
oci
),
1
);
if
(
!
oci
->
above_context
)
{
// FIXME(jkoleszar): allocate subsampled arrays for U/V once subsampling
// information is exposed at this level
mb_cols
=
mb_cols_aligned_to_sb
(
oci
);
oci
->
above_context
[
0
]
=
vpx_calloc
(
sizeof
(
ENTROPY_CONTEXT
)
*
12
*
mb_cols
,
1
);
if
(
!
oci
->
above_context
[
0
])
{
vp9_free_frame_buffers
(
oci
);
return
1
;
}
oci
->
above_context
[
1
]
=
oci
->
above_context
[
0
]
+
sizeof
(
ENTROPY_CONTEXT
)
*
4
*
mb_cols
;
oci
->
above_context
[
2
]
=
oci
->
above_context
[
1
]
+
sizeof
(
ENTROPY_CONTEXT
)
*
4
*
mb_cols
;
oci
->
above_seg_context
=
vpx_calloc
(
sizeof
(
PARTITION_CONTEXT
)
*
mb_cols_aligned_to_sb
(
oci
),
1
);
...
...
vp9/common/vp9_blockd.c
deleted
100644 → 0
View file @
9dcbbe3d
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* 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.
*/
#include "./vpx_config.h"
#include "vp9/common/vp9_blockd.h"
#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
},
};
#define S(x) x + sizeof(ENTROPY_CONTEXT_PLANES) / sizeof(ENTROPY_CONTEXT)
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
},
};
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))
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
),