summaryrefslogtreecommitdiff
path: root/vp9/common
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@google.com>2013-03-04 14:12:17 -0800
committerRonald S. Bultje <rbultje@google.com>2013-03-04 16:34:36 -0800
commit111ca4213355ac4edd10b3c14461096d56e3f3d0 (patch)
tree8e479d750c5559c4bf2f5866e5ccc7bfcd194ff4 /vp9/common
parent2d3e879fccef330d89f5e5ae6c718cb37d888d2a (diff)
downloadlibvpx-111ca4213355ac4edd10b3c14461096d56e3f3d0.tar
libvpx-111ca4213355ac4edd10b3c14461096d56e3f3d0.tar.gz
libvpx-111ca4213355ac4edd10b3c14461096d56e3f3d0.tar.bz2
libvpx-111ca4213355ac4edd10b3c14461096d56e3f3d0.zip
Make superblocks independent of macroblock code and data.
Split macroblock and superblock tokenization and detokenization functions and coefficient-related data structs so that the bitstream layout and related code of superblock coefficients looks less like it's a hack to fit macroblocks in superblocks. In addition, unify chroma transform size selection from luma transform size (i.e. always use the same size, as long as it fits the predictor); in practice, this means 32x32 and 64x64 superblocks using the 16x16 luma transform will now use the 16x16 (instead of the 8x8) chroma transform, and 64x64 superblocks using the 32x32 luma transform will now use the 32x32 (instead of the 16x16) chroma transform. Lastly, add a trellis optimize function for 32x32 transform blocks. HD gains about 0.3%, STDHD about 0.15% and derf about 0.1%. There's a few negative points here and there that I might want to analyze a little closer. Change-Id: Ibad7c3ddfe1acfc52771dfc27c03e9783e054430
Diffstat (limited to 'vp9/common')
-rw-r--r--vp9/common/vp9_blockd.c436
-rw-r--r--vp9/common/vp9_blockd.h27
-rw-r--r--vp9/common/vp9_default_coef_probs.h350
-rw-r--r--vp9/common/vp9_entropy.c2
-rw-r--r--vp9/common/vp9_entropy.h15
-rw-r--r--vp9/common/vp9_idctllm.c22
-rw-r--r--vp9/common/vp9_invtrans.c188
-rw-r--r--vp9/common/vp9_invtrans.h22
-rw-r--r--vp9/common/vp9_onyxc_int.h6
-rw-r--r--vp9/common/vp9_recon.c36
-rw-r--r--vp9/common/vp9_rtcd_defs.sh6
11 files changed, 914 insertions, 196 deletions
diff --git a/vp9/common/vp9_blockd.c b/vp9/common/vp9_blockd.c
index 1eda3cc38..9151622d3 100644
--- a/vp9/common/vp9_blockd.c
+++ b/vp9/common/vp9_blockd.c
@@ -12,15 +12,431 @@
#include "vp9/common/vp9_blockd.h"
#include "vpx_mem/vpx_mem.h"
-const uint8_t vp9_block2left[TX_SIZE_MAX_SB][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, 4, 4, 4, 4, 6, 6, 6, 6},
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 6, 6, 6, 6}
+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_SB][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, 4, 4, 4, 4, 6, 6, 6, 6},
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 6, 6, 6, 6}
+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_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_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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h
index b35c1c246..b46dd0568 100644
--- a/vp9/common/vp9_blockd.h
+++ b/vp9/common/vp9_blockd.h
@@ -277,13 +277,6 @@ typedef struct blockd {
union b_mode_info bmi;
} BLOCKD;
-typedef struct superblockd {
- /* 32x32 Y and 16x16 U/V */
- DECLARE_ALIGNED(16, int16_t, diff[32*32+16*16*2]);
- DECLARE_ALIGNED(16, int16_t, qcoeff[32*32+16*16*2]);
- DECLARE_ALIGNED(16, int16_t, dqcoeff[32*32+16*16*2]);
-} SUPERBLOCKD;
-
struct scale_factors {
int x_num;
int x_den;
@@ -297,13 +290,11 @@ struct scale_factors {
};
typedef struct macroblockd {
- DECLARE_ALIGNED(16, int16_t, diff[384]); /* from idct diff */
- DECLARE_ALIGNED(16, uint8_t, predictor[384]);
- DECLARE_ALIGNED(16, int16_t, qcoeff[384]);
- DECLARE_ALIGNED(16, int16_t, dqcoeff[384]);
- DECLARE_ALIGNED(16, uint16_t, eobs[24]);
-
- SUPERBLOCKD sb_coeff_data;
+ DECLARE_ALIGNED(16, int16_t, diff[64*64+32*32*2]); /* from idct diff */
+ DECLARE_ALIGNED(16, uint8_t, predictor[384]); // unused for superblocks
+ DECLARE_ALIGNED(16, int16_t, qcoeff[64*64+32*32*2]);
+ DECLARE_ALIGNED(16, int16_t, dqcoeff[64*64+32*32*2]);
+ DECLARE_ALIGNED(16, uint16_t, eobs[256+64*2]);
/* 16 Y blocks, 4 U, 4 V, each with 16 entries. */
BLOCKD block[24];
@@ -451,8 +442,12 @@ static TX_TYPE txfm_map(B_PREDICTION_MODE bmode) {
}
}
-extern const uint8_t vp9_block2left[TX_SIZE_MAX_SB][24];
-extern const uint8_t vp9_block2above[TX_SIZE_MAX_SB][24];
+extern const uint8_t vp9_block2left[TX_SIZE_MAX_MB][24];
+extern const uint8_t vp9_block2above[TX_SIZE_MAX_MB][24];
+extern const uint8_t vp9_block2left_sb[TX_SIZE_MAX_SB][96];
+extern const uint8_t vp9_block2above_sb[TX_SIZE_MAX_SB][96];
+extern const uint8_t vp9_block2left_sb64[TX_SIZE_MAX_SB][384];
+extern const uint8_t vp9_block2above_sb64[TX_SIZE_MAX_SB][384];
#define USE_ADST_FOR_I16X16_8X8 0
#define USE_ADST_FOR_I16X16_4X4 0
diff --git a/vp9/common/vp9_default_coef_probs.h b/vp9/common/vp9_default_coef_probs.h
index 6309566a7..204e65af6 100644
--- a/vp9/common/vp9_default_coef_probs.h
+++ b/vp9/common/vp9_default_coef_probs.h
@@ -270,85 +270,85 @@ static const vp9_coeff_probs default_coef_probs_8x8[BLOCK_TYPES] = {
}, { /* block Type 1 */
{ /* Intra */
{ /* Coeff Band 0 */
- { 202, 29, 181, 221, 168, 177, 217, 162, 235, 202, 157 },
- { 117, 39, 146, 207, 155, 172, 203, 155, 236, 192, 208 },
- { 46, 40, 99, 171, 136, 161, 176, 140, 229, 177, 208 }
+ { 210, 33, 210, 232, 185, 185, 210, 166, 207, 192, 146 },
+ { 118, 47, 169, 220, 170, 179, 201, 160, 231, 183, 211 },
+ { 40, 52, 119, 203, 146, 169, 207, 160, 242, 194, 222 }
}, { /* Coeff Band 1 */
- { 1, 138, 204, 227, 179, 181, 224, 161, 249, 203, 237 },
- { 116, 138, 209, 227, 179, 180, 222, 165, 248, 204, 241 },
- { 63, 112, 184, 227, 183, 178, 223, 167, 248, 206, 237 },
- { 47, 84, 140, 219, 163, 177, 223, 160, 249, 207, 241 },
- { 25, 53, 76, 179, 120, 156, 217, 152, 248, 205, 232 },
- { 10, 23, 29, 76, 91, 132, 145, 109, 228, 169, 214 }
+ { 1, 158, 215, 239, 192, 188, 234, 174, 253, 219, 230 },
+ { 130, 149, 210, 238, 191, 188, 233, 174, 253, 221, 240 },
+ { 59, 123, 193, 237, 188, 187, 232, 174, 252, 220, 246 },
+ { 22, 89, 154, 232, 172, 183, 233, 173, 253, 219, 237 },
+ { 4, 49, 83, 193, 128, 160, 227, 161, 253, 219, 233 },
+ { 1, 18, 27, 87, 90, 133, 160, 112, 242, 185, 231 }
}, { /* Coeff Band 2 */
- { 1, 69, 198, 223, 179, 177, 225, 154, 251, 208, 227 },
- { 78, 78, 170, 223, 170, 179, 218, 162, 248, 203, 245 },
- { 26, 69, 117, 209, 154, 170, 215, 160, 249, 205, 239 },
- { 16, 54, 79, 180, 119, 156, 208, 151, 248, 201, 238 },
- { 12, 43, 45, 119, 102, 142, 186, 126, 245, 193, 236 },
- { 1, 24, 22, 60, 92, 133, 114, 99, 221, 154, 210 }
+ { 1, 87, 205, 244, 192, 193, 239, 188, 252, 220, 217 },
+ { 64, 93, 169, 237, 175, 186, 237, 184, 253, 222, 235 },
+ { 19, 77, 130, 222, 154, 175, 231, 173, 253, 221, 223 },
+ { 6, 59, 95, 196, 132, 162, 223, 160, 251, 215, 240 },
+ { 1, 37, 57, 144, 109, 146, 201, 135, 250, 205, 238 },
+ { 1, 17, 26, 81, 94, 138, 135, 107, 232, 168, 223 }
}, { /* Coeff Band 3 */
- { 1, 135, 214, 222, 183, 178, 230, 144, 252, 208, 241 },
- { 107, 122, 201, 229, 181, 182, 221, 165, 250, 202, 243 },
- { 38, 100, 168, 221, 168, 176, 220, 166, 250, 208, 240 },
- { 21, 83, 125, 206, 149, 167, 217, 160, 250, 209, 238 },
- { 16, 65, 80, 164, 122, 156, 208, 139, 250, 206, 246 },
- { 3, 37, 43, 104, 103, 143, 156, 118, 237, 173, 227 }
+ { 1, 150, 219, 243, 198, 192, 237, 182, 253, 227, 245 },
+ { 88, 130, 202, 239, 190, 188, 236, 180, 253, 224, 255 },
+ { 25, 103, 172, 231, 175, 182, 234, 174, 253, 227, 248 },
+ { 7, 78, 128, 215, 156, 172, 228, 166, 252, 222, 248 },
+ { 1, 48, 76, 175, 121, 155, 212, 149, 251, 213, 237 },
+ { 1, 22, 35, 101, 97, 141, 161, 120, 236, 181, 213 }
}, { /* Coeff Band 4 */
- { 1, 169, 223, 233, 193, 184, 234, 150, 254, 206, 243 },
- { 83, 140, 201, 233, 184, 185, 228, 168, 252, 203, 223 },
- { 19, 104, 158, 225, 168, 179, 228, 169, 253, 207, 248 },
- { 10, 76, 117, 209, 145, 168, 223, 166, 252, 210, 243 },
- { 8, 59, 79, 163, 119, 153, 213, 142, 250, 205, 230 },
- { 1, 31, 43, 100, 103, 144, 149, 116, 240, 171, 221 }
+ { 1, 177, 228, 247, 206, 197, 243, 191, 255, 232, 255 },
+ { 76, 143, 205, 243, 192, 192, 241, 189, 253, 223, 255 },
+ { 17, 107, 163, 233, 170, 183, 239, 183, 253, 227, 218 },
+ { 3, 75, 118, 216, 147, 171, 234, 174, 253, 220, 249 },
+ { 1, 43, 71, 174, 118, 154, 217, 153, 250, 211, 240 },
+ { 1, 19, 31, 93, 93, 136, 154, 116, 235, 178, 228 }
}, { /* Coeff Band 5 */
- { 1, 190, 234, 247, 211, 197, 239, 172, 255, 208, 236 },
- { 65, 152, 218, 244, 199, 194, 236, 184, 252, 199, 249 },
- { 17, 109, 173, 237, 179, 186, 235, 183, 250, 205, 255 },
- { 6, 78, 127, 219, 153, 173, 231, 177, 251, 210, 249 },
- { 3, 56, 77, 172, 121, 157, 215, 152, 249, 209, 247 },
- { 1, 29, 38, 96, 97, 144, 152, 114, 239, 169, 243 }
+ { 1, 192, 230, 251, 215, 205, 245, 201, 254, 229, 255 },
+ { 66, 142, 206, 248, 200, 202, 244, 197, 255, 224, 255 },
+ { 21, 107, 166, 241, 176, 191, 241, 192, 253, 230, 255 },
+ { 5, 79, 129, 221, 150, 173, 237, 178, 254, 226, 255 },
+ { 1, 43, 72, 173, 117, 151, 217, 150, 253, 216, 245 },
+ { 1, 17, 28, 93, 95, 139, 162, 114, 245, 187, 235 }
}
}, { /* Inter */
{ /* Coeff Band 0 */
- { 223, 71, 225, 221, 176, 169, 242, 165, 248, 216, 201 },
- { 147, 79, 197, 215, 175, 172, 230, 154, 243, 203, 184 },
- { 69, 75, 152, 197, 158, 168, 203, 144, 231, 187, 177 }
+ { 235, 68, 250, 244, 206, 192, 229, 177, 248, 215, 237 },
+ { 169, 88, 225, 235, 191, 184, 222, 170, 246, 205, 237 },
+ { 65, 100, 171, 214, 166, 173, 216, 157, 249, 213, 215 }
}, { /* Coeff Band 1 */
- { 1, 168, 219, 195, 168, 151, 249, 131, 255, 221, 255 },
- { 152, 156, 226, 210, 189, 173, 240, 121, 255, 215, 238 },
- { 82, 128, 198, 239, 201, 194, 220, 151, 254, 202, 251 },
- { 74, 107, 150, 236, 163, 187, 222, 177, 255, 204, 255 },
- { 59, 103, 120, 181, 125, 148, 232, 157, 255, 219, 245 },
- { 21, 63, 84, 129, 122, 150, 171, 118, 246, 196, 226 }
+ { 1, 191, 246, 250, 217, 202, 244, 195, 255, 226, 128 },
+ { 177, 169, 236, 250, 216, 201, 244, 194, 251, 228, 255 },
+ { 70, 132, 205, 250, 209, 205, 246, 193, 254, 246, 255 },
+ { 41, 108, 165, 244, 172, 194, 246, 202, 255, 229, 255 },
+ { 23, 84, 126, 207, 140, 162, 244, 179, 254, 237, 255 },
+ { 11, 57, 83, 149, 127, 156, 180, 126, 247, 202, 220 }
}, { /* Coeff Band 2 */
- { 1, 133, 219, 202, 174, 158, 244, 133, 255, 214, 237 },
- { 101, 132, 204, 221, 187, 183, 225, 131, 253, 201, 247 },
- { 41, 107, 147, 228, 174, 187, 211, 162, 252, 201, 246 },
- { 40, 107, 107, 205, 129, 162, 213, 164, 252, 206, 232 },
- { 24, 140, 90, 122, 111, 141, 210, 127, 251, 208, 239 },
- { 1, 59, 55, 91, 111, 141, 144, 109, 241, 180, 226 }
+ { 1, 169, 240, 250, 212, 202, 242, 192, 252, 222, 255 },
+ { 105, 151, 215, 246, 200, 197, 240, 190, 253, 221, 255 },
+ { 24, 111, 166, 237, 177, 188, 236, 183, 252, 213, 255 },
+ { 9, 83, 122, 218, 148, 170, 233, 174, 250, 215, 242 },
+ { 1, 55, 77, 168, 118, 152, 215, 150, 248, 213, 226 },
+ { 1, 26, 36, 104, 98, 146, 149, 116, 235, 182, 225 }
}, { /* Coeff Band 3 */
- { 1, 170, 226, 200, 179, 153, 245, 138, 255, 214, 241 },
- { 111, 149, 217, 226, 194, 186, 223, 137, 255, 211, 253 },
- { 40, 113, 174, 228, 180, 183, 211, 165, 255, 212, 247 },
- { 44, 101, 126, 210, 151, 167, 212, 161, 255, 217, 241 },
- { 43, 131, 103, 146, 119, 148, 211, 136, 254, 216, 250 },
- { 1, 57, 63, 112, 116, 145, 158, 115, 249, 193, 236 }
+ { 1, 191, 243, 251, 219, 204, 246, 196, 255, 230, 128 },
+ { 97, 168, 225, 248, 207, 198, 244, 193, 254, 225, 192 },
+ { 15, 122, 182, 241, 187, 188, 241, 190, 251, 231, 228 },
+ { 3, 83, 131, 226, 160, 178, 237, 180, 251, 222, 205 },
+ { 1, 49, 77, 184, 121, 155, 222, 159, 249, 216, 249 },
+ { 1, 21, 32, 98, 98, 140, 152, 113, 233, 173, 243 }
}, { /* Coeff Band 4 */
- { 1, 186, 233, 216, 191, 163, 241, 143, 255, 210, 255 },
- { 91, 161, 214, 225, 190, 181, 224, 150, 255, 212, 253 },
- { 26, 117, 163, 220, 172, 180, 218, 148, 255, 215, 252 },
- { 27, 90, 122, 203, 143, 167, 212, 159, 255, 213, 255 },
- { 21, 98, 113, 163, 130, 153, 208, 141, 255, 215, 248 },
- { 1, 47, 66, 130, 118, 151, 167, 123, 252, 199, 235 }
+ { 1, 202, 242, 253, 226, 212, 245, 205, 254, 226, 255 },
+ { 83, 168, 219, 252, 212, 211, 244, 200, 250, 215, 255 },
+ { 9, 143, 174, 245, 183, 197, 241, 194, 254, 217, 255 },
+ { 1, 105, 129, 228, 154, 179, 233, 179, 253, 211, 255 },
+ { 1, 47, 72, 177, 116, 152, 214, 157, 251, 209, 255 },
+ { 1, 18, 26, 79, 94, 137, 150, 109, 246, 175, 248 }
}, { /* Coeff Band 5 */
- { 1, 195, 236, 245, 211, 195, 238, 171, 255, 209, 248 },
- { 65, 156, 218, 245, 200, 196, 230, 185, 255, 212, 248 },
- { 13, 112, 172, 238, 180, 189, 231, 185, 255, 213, 250 },
- { 6, 83, 130, 224, 155, 177, 227, 180, 255, 214, 244 },
- { 5, 71, 91, 185, 133, 160, 214, 154, 254, 212, 248 },
- { 1, 45, 63, 128, 112, 147, 169, 129, 248, 190, 236 }
+ { 1, 205, 236, 254, 233, 221, 247, 201, 255, 220, 128 },
+ { 87, 149, 205, 254, 211, 219, 245, 207, 255, 239, 128 },
+ { 56, 122, 162, 248, 164, 195, 246, 211, 255, 231, 128 },
+ { 26, 108, 163, 224, 149, 169, 240, 187, 255, 238, 255 },
+ { 1, 54, 89, 171, 123, 152, 219, 148, 254, 226, 255 },
+ { 1, 21, 34, 99, 90, 140, 174, 112, 252, 210, 255 }
}
}
}
@@ -441,90 +441,90 @@ static const vp9_coeff_probs default_coef_probs_16x16[BLOCK_TYPES] = {
}, { /* block Type 1 */
{ /* Intra */
{ /* Coeff Band 0 */
- { 198, 28, 192, 217, 170, 174, 201, 162, 219, 179, 159 },
- { 96, 36, 145, 198, 153, 167, 193, 153, 222, 180, 177 },
- { 31, 35, 89, 156, 131, 157, 166, 136, 214, 170, 178 }
+ { 203, 35, 218, 235, 189, 187, 194, 174, 175, 150, 127 },
+ { 95, 50, 155, 211, 161, 173, 190, 163, 198, 161, 187 },
+ { 21, 46, 93, 178, 130, 157, 200, 151, 224, 186, 191 }
}, { /* Coeff Band 1 */
- { 1, 138, 202, 225, 174, 178, 218, 164, 243, 200, 201 },
- { 147, 134, 202, 223, 174, 177, 215, 162, 243, 204, 220 },
- { 65, 115, 179, 224, 176, 177, 215, 162, 243, 202, 227 },
- { 25, 86, 141, 217, 163, 177, 216, 159, 243, 201, 225 },
- { 6, 48, 79, 181, 125, 157, 209, 151, 244, 201, 212 },
- { 1, 16, 25, 77, 91, 134, 132, 112, 210, 162, 180 }
+ { 1, 155, 198, 236, 183, 187, 223, 175, 250, 209, 255 },
+ { 115, 147, 192, 235, 182, 186, 222, 173, 244, 199, 222 },
+ { 43, 124, 174, 234, 178, 186, 222, 176, 249, 201, 255 },
+ { 13, 96, 143, 227, 164, 181, 223, 174, 248, 197, 237 },
+ { 2, 59, 91, 197, 131, 163, 213, 162, 246, 198, 241 },
+ { 1, 19, 29, 85, 96, 139, 128, 116, 215, 153, 204 }
}, { /* Coeff Band 2 */
- { 1, 78, 195, 222, 172, 177, 219, 162, 245, 205, 227 },
- { 67, 79, 154, 211, 158, 171, 212, 159, 243, 201, 222 },
- { 18, 63, 108, 192, 140, 163, 205, 152, 242, 197, 214 },
- { 6, 49, 77, 163, 121, 154, 192, 142, 239, 191, 216 },
- { 1, 34, 49, 112, 106, 143, 160, 122, 233, 178, 213 },
- { 1, 14, 20, 56, 93, 135, 94, 102, 189, 141, 170 }
+ { 1, 91, 180, 231, 170, 180, 237, 181, 248, 213, 230 },
+ { 39, 83, 139, 220, 153, 173, 233, 179, 243, 200, 228 },
+ { 12, 63, 106, 203, 136, 163, 227, 170, 244, 200, 234 },
+ { 5, 48, 79, 178, 123, 154, 215, 155, 244, 197, 232 },
+ { 1, 32, 50, 125, 104, 144, 171, 130, 238, 181, 229 },
+ { 1, 12, 18, 54, 88, 131, 92, 99, 201, 142, 193 }
}, { /* Coeff Band 3 */
- { 1, 137, 210, 229, 182, 181, 223, 164, 247, 214, 201 },
- { 89, 123, 189, 226, 176, 180, 217, 165, 245, 207, 216 },
- { 24, 100, 155, 217, 162, 176, 215, 163, 242, 198, 215 },
- { 8, 78, 121, 199, 147, 167, 206, 155, 241, 198, 212 },
- { 2, 52, 81, 161, 125, 156, 185, 139, 236, 186, 207 },
- { 1, 22, 35, 88, 102, 141, 121, 116, 199, 153, 179 }
+ { 1, 152, 202, 238, 186, 188, 227, 178, 248, 205, 229 },
+ { 63, 125, 183, 234, 178, 184, 225, 179, 248, 205, 228 },
+ { 15, 100, 153, 227, 166, 180, 223, 173, 244, 198, 229 },
+ { 4, 76, 119, 210, 149, 170, 215, 165, 245, 200, 221 },
+ { 1, 46, 73, 165, 120, 154, 192, 144, 241, 189, 225 },
+ { 1, 18, 27, 78, 95, 136, 124, 110, 219, 158, 207 }
}, { /* Coeff Band 4 */
- { 1, 169, 220, 239, 196, 191, 220, 173, 242, 201, 226 },
- { 64, 139, 195, 231, 183, 184, 215, 169, 240, 196, 211 },
- { 12, 103, 153, 217, 162, 174, 212, 163, 236, 195, 211 },
- { 3, 71, 109, 190, 141, 164, 202, 152, 240, 192, 220 },
- { 1, 38, 61, 139, 114, 149, 175, 133, 233, 183, 211 },
- { 1, 13, 22, 61, 93, 134, 101, 106, 194, 145, 185 }
+ { 1, 181, 211, 243, 197, 195, 228, 180, 249, 211, 252 },
+ { 40, 138, 189, 237, 184, 189, 226, 178, 249, 208, 247 },
+ { 7, 103, 153, 226, 166, 179, 223, 171, 249, 209, 224 },
+ { 1, 71, 110, 200, 143, 166, 213, 159, 249, 206, 241 },
+ { 1, 37, 60, 144, 111, 150, 189, 135, 245, 196, 232 },
+ { 1, 15, 25, 75, 91, 134, 128, 108, 224, 163, 213 }
}, { /* Coeff Band 5 */
- { 1, 204, 220, 234, 193, 185, 220, 166, 247, 207, 237 },
- { 42, 139, 187, 221, 174, 177, 215, 161, 246, 201, 242 },
- { 5, 83, 132, 204, 152, 168, 212, 158, 246, 203, 225 },
- { 1, 48, 84, 175, 126, 157, 203, 148, 245, 199, 233 },
- { 1, 24, 46, 123, 103, 142, 178, 128, 243, 189, 235 },
- { 1, 10, 19, 58, 88, 134, 109, 101, 216, 151, 216 }
+ { 1, 215, 219, 246, 205, 197, 236, 183, 252, 221, 235 },
+ { 32, 146, 197, 239, 187, 188, 234, 180, 252, 223, 247 },
+ { 6, 100, 150, 227, 167, 178, 233, 178, 252, 219, 233 },
+ { 1, 63, 102, 203, 138, 167, 225, 162, 252, 216, 240 },
+ { 1, 33, 56, 148, 109, 146, 202, 138, 250, 208, 237 },
+ { 1, 15, 25, 75, 90, 131, 138, 108, 236, 171, 235 }
}
}, { /* Inter */
{ /* Coeff Band 0 */
- { 227, 36, 243, 237, 206, 186, 210, 157, 245, 195, 200 },
- { 144, 41, 214, 226, 190, 182, 207, 155, 238, 193, 177 },
- { 63, 37, 153, 199, 162, 169, 193, 145, 227, 187, 152 }
+ { 228, 37, 245, 229, 199, 183, 200, 146, 240, 188, 223 },
+ { 138, 62, 209, 217, 184, 177, 195, 148, 246, 186, 236 },
+ { 42, 79, 146, 185, 156, 167, 183, 137, 247, 189, 251 }
}, { /* Coeff Band 1 */
- { 1, 170, 247, 248, 213, 201, 239, 188, 238, 203, 255 },
- { 214, 166, 242, 248, 212, 198, 236, 191, 221, 219, 199 },
- { 139, 148, 224, 247, 207, 197, 236, 189, 249, 241, 128 },
- { 102, 127, 195, 244, 190, 198, 235, 189, 239, 202, 228 },
- { 76, 106, 154, 227, 159, 176, 234, 182, 243, 216, 229 },
- { 52, 69, 93, 158, 125, 155, 173, 139, 225, 170, 209 }
+ { 1, 205, 242, 248, 210, 202, 245, 193, 233, 230, 255 },
+ { 191, 185, 234, 249, 210, 201, 245, 194, 255, 197, 128 },
+ { 112, 148, 214, 247, 208, 201, 246, 192, 255, 238, 128 },
+ { 76, 120, 182, 246, 190, 198, 246, 202, 255, 244, 128 },
+ { 51, 95, 145, 232, 156, 177, 246, 199, 255, 233, 128 },
+ { 47, 71, 104, 195, 129, 158, 230, 167, 253, 224, 255 }
}, { /* Coeff Band 2 */
- { 1, 139, 241, 245, 205, 193, 230, 177, 239, 198, 183 },
- { 131, 139, 214, 240, 191, 189, 224, 181, 236, 203, 194 },
- { 32, 102, 157, 228, 167, 177, 221, 174, 235, 191, 194 },
- { 12, 75, 112, 201, 142, 163, 208, 161, 227, 180, 200 },
- { 2, 45, 66, 142, 119, 154, 178, 141, 220, 171, 213 },
- { 1, 15, 20, 56, 102, 151, 87, 104, 182, 136, 175 }
+ { 1, 182, 235, 247, 204, 195, 246, 202, 255, 227, 128 },
+ { 104, 145, 204, 243, 189, 191, 242, 199, 255, 229, 128 },
+ { 35, 107, 159, 234, 167, 181, 244, 188, 255, 221, 128 },
+ { 17, 87, 126, 216, 151, 168, 242, 179, 255, 242, 128 },
+ { 4, 68, 91, 182, 131, 154, 222, 153, 255, 228, 128 },
+ { 1, 55, 64, 126, 105, 137, 193, 121, 247, 194, 255 }
}, { /* Coeff Band 3 */
- { 1, 174, 243, 248, 212, 201, 237, 194, 249, 207, 255 },
- { 134, 155, 223, 244, 200, 195, 230, 184, 248, 189, 233 },
- { 26, 115, 177, 235, 180, 185, 225, 176, 245, 198, 255 },
- { 8, 82, 129, 217, 156, 175, 220, 168, 243, 204, 228 },
- { 3, 48, 75, 165, 122, 155, 193, 145, 245, 189, 199 },
- { 1, 15, 27, 73, 101, 139, 117, 112, 212, 157, 209 }
+ { 1, 210, 239, 249, 209, 201, 249, 205, 255, 255, 128 },
+ { 91, 162, 218, 247, 200, 195, 250, 199, 255, 255, 128 },
+ { 16, 116, 173, 242, 184, 190, 251, 193, 255, 205, 128 },
+ { 5, 85, 133, 228, 156, 178, 244, 184, 255, 251, 128 },
+ { 1, 55, 83, 196, 125, 164, 236, 168, 249, 249, 255 },
+ { 1, 24, 39, 127, 92, 154, 183, 133, 255, 192, 128 }
}, { /* Coeff Band 4 */
- { 1, 191, 244, 248, 214, 200, 229, 185, 249, 207, 255 },
- { 106, 167, 221, 242, 198, 192, 223, 178, 245, 202, 246 },
- { 13, 117, 169, 229, 175, 182, 220, 170, 244, 202, 226 },
- { 2, 74, 114, 203, 143, 170, 211, 160, 248, 199, 232 },
- { 1, 35, 58, 141, 111, 144, 184, 132, 244, 196, 239 },
- { 1, 12, 22, 66, 91, 138, 114, 102, 225, 156, 214 }
+ { 1, 225, 242, 252, 218, 205, 251, 207, 255, 255, 128 },
+ { 67, 174, 223, 249, 205, 199, 250, 210, 255, 234, 128 },
+ { 10, 119, 177, 243, 186, 187, 253, 199, 255, 255, 128 },
+ { 2, 81, 129, 228, 154, 177, 244, 193, 255, 251, 128 },
+ { 1, 48, 78, 193, 122, 152, 240, 171, 255, 240, 128 },
+ { 1, 19, 43, 116, 96, 128, 195, 135, 255, 234, 128 }
}, { /* Coeff Band 5 */
- { 1, 220, 231, 246, 203, 196, 239, 188, 255, 212, 255 },
- { 42, 155, 203, 241, 189, 191, 235, 184, 253, 220, 255 },
- { 4, 95, 151, 230, 167, 182, 234, 178, 252, 217, 243 },
- { 1, 61, 105, 206, 140, 168, 226, 167, 250, 215, 242 },
- { 1, 31, 60, 151, 109, 148, 204, 142, 250, 208, 230 },
- { 1, 13, 26, 76, 93, 132, 139, 106, 236, 171, 237 }
+ { 1, 237, 210, 255, 213, 219, 255, 235, 255, 219, 128 },
+ { 49, 163, 203, 252, 182, 198, 255, 235, 255, 255, 128 },
+ { 23, 114, 156, 247, 196, 187, 255, 238, 255, 255, 128 },
+ { 6, 71, 124, 248, 163, 202, 253, 203, 255, 255, 128 },
+ { 1, 35, 74, 226, 160, 162, 246, 189, 255, 244, 128 },
+ { 1, 16, 19, 136, 92, 164, 237, 108, 255, 255, 128 }
}
}
}
};
-static const vp9_coeff_probs default_coef_probs_32x32[BLOCK_TYPES_32X32] = {
+static const vp9_coeff_probs default_coef_probs_32x32[BLOCK_TYPES] = {
{ /* block Type 0 */
{ /* Intra */
{ /* Coeff Band 0 */
@@ -609,5 +609,89 @@ static const vp9_coeff_probs default_coef_probs_32x32[BLOCK_TYPES_32X32] = {
{ 1, 9, 16, 48, 89, 134, 89, 99, 183, 140, 169 }
}
}
+ }, { /* block Type 1 */
+ { /* Intra */
+ { /* Coeff Band 0 */
+ { 176, 22, 201, 227, 185, 189, 160, 172, 115, 141, 105 },
+ { 64, 33, 120, 195, 149, 171, 170, 150, 182, 175, 139 },
+ { 12, 33, 68, 151, 118, 153, 172, 138, 202, 175, 153 }
+ }, { /* Coeff Band 1 */
+ { 1, 125, 175, 228, 163, 176, 215, 171, 226, 193, 165 },
+ { 127, 126, 174, 224, 163, 177, 212, 167, 225, 175, 235 },
+ { 57, 114, 159, 223, 166, 175, 216, 167, 234, 182, 211 },
+ { 23, 93, 133, 215, 150, 174, 216, 171, 233, 174, 176 },
+ { 4, 56, 84, 178, 127, 157, 209, 149, 233, 197, 194 },
+ { 1, 19, 26, 70, 93, 136, 114, 108, 193, 150, 167 }
+ }, { /* Coeff Band 2 */
+ { 1, 76, 172, 217, 161, 172, 216, 165, 240, 188, 226 },
+ { 41, 73, 136, 208, 152, 168, 214, 163, 233, 189, 248 },
+ { 14, 59, 102, 195, 137, 163, 209, 158, 227, 184, 204 },
+ { 4, 45, 75, 168, 122, 153, 197, 148, 231, 193, 178 },
+ { 1, 33, 48, 118, 106, 148, 154, 126, 221, 168, 211 },
+ { 1, 12, 16, 42, 90, 143, 61, 94, 159, 122, 167 }
+ }, { /* Coeff Band 3 */
+ { 1, 134, 186, 226, 173, 180, 208, 172, 220, 179, 205 },
+ { 60, 114, 164, 219, 166, 177, 207, 166, 231, 176, 208 },
+ { 18, 90, 134, 208, 152, 175, 200, 164, 225, 181, 199 },
+ { 7, 67, 102, 189, 139, 164, 192, 155, 225, 172, 209 },
+ { 1, 39, 59, 137, 116, 151, 160, 132, 222, 166, 212 },
+ { 1, 12, 17, 50, 93, 134, 82, 102, 181, 131, 190 }
+ }, { /* Coeff Band 4 */
+ { 1, 160, 195, 229, 180, 185, 204, 163, 243, 185, 223 },
+ { 31, 124, 170, 221, 170, 179, 201, 164, 240, 183, 223 },
+ { 5, 91, 134, 204, 154, 170, 191, 155, 236, 178, 232 },
+ { 1, 62, 95, 173, 135, 159, 180, 145, 234, 179, 225 },
+ { 1, 30, 48, 116, 109, 147, 152, 123, 231, 170, 224 },
+ { 1, 11, 17, 53, 90, 133, 93, 102, 201, 139, 202 }
+ }, { /* Coeff Band 5 */
+ { 1, 215, 203, 233, 186, 183, 226, 170, 249, 213, 225 },
+ { 13, 133, 175, 224, 170, 178, 224, 167, 250, 212, 235 },
+ { 1, 83, 127, 209, 151, 169, 221, 162, 251, 212, 243 },
+ { 1, 53, 85, 182, 127, 157, 213, 153, 250, 210, 234 },
+ { 1, 30, 47, 131, 103, 143, 190, 132, 248, 200, 240 },
+ { 1, 14, 21, 67, 89, 129, 126, 104, 232, 167, 223 }
+ }
+ }, { /* Inter */
+ { /* Coeff Band 0 */
+ { 193, 35, 239, 239, 206, 194, 195, 152, 244, 200, 255 },
+ { 77, 57, 198, 224, 192, 187, 181, 145, 242, 190, 248 },
+ { 21, 54, 149, 197, 172, 171, 169, 138, 238, 178, 241 }
+ }, { /* Coeff Band 1 */
+ { 1, 227, 241, 247, 195, 195, 245, 199, 255, 255, 128 },
+ { 189, 223, 237, 249, 199, 200, 238, 198, 255, 255, 128 },
+ { 125, 204, 226, 247, 198, 199, 251, 213, 255, 255, 128 },
+ { 101, 167, 207, 246, 193, 201, 245, 168, 255, 255, 128 },
+ { 89, 121, 174, 237, 169, 184, 246, 204, 255, 255, 128 },
+ { 71, 79, 135, 216, 149, 170, 234, 168, 255, 226, 128 }
+ }, { /* Coeff Band 2 */
+ { 1, 207, 235, 250, 220, 204, 250, 201, 255, 255, 128 },
+ { 103, 160, 210, 245, 195, 188, 249, 195, 255, 255, 128 },
+ { 33, 130, 165, 234, 168, 183, 253, 199, 255, 255, 128 },
+ { 10, 113, 138, 223, 146, 180, 248, 199, 255, 255, 128 },
+ { 1, 88, 104, 172, 112, 174, 221, 126, 255, 217, 128 },
+ { 1, 87, 70, 160, 68, 140, 171, 85, 255, 85, 128 }
+ }, { /* Coeff Band 3 */
+ { 1, 230, 240, 249, 209, 200, 243, 199, 255, 228, 128 },
+ { 60, 178, 218, 247, 203, 200, 247, 198, 255, 255, 128 },
+ { 8, 119, 162, 241, 188, 185, 252, 202, 255, 255, 128 },
+ { 2, 78, 119, 218, 149, 162, 247, 184, 255, 255, 128 },
+ { 1, 48, 81, 172, 142, 148, 239, 140, 255, 239, 128 },
+ { 1, 29, 23, 82, 96, 102, 181, 149, 255, 255, 128 }
+ }, { /* Coeff Band 4 */
+ { 1, 240, 241, 250, 216, 203, 248, 188, 255, 255, 128 },
+ { 60, 180, 222, 247, 202, 195, 247, 191, 255, 255, 128 },
+ { 9, 120, 169, 240, 190, 189, 249, 181, 255, 255, 128 },
+ { 2, 85, 126, 223, 154, 178, 240, 184, 255, 255, 128 },
+ { 1, 47, 90, 198, 132, 158, 233, 162, 255, 224, 128 },
+ { 1, 33, 34, 143, 116, 156, 217, 128, 255, 255, 128 }
+ }, { /* Coeff Band 5 */
+ { 1, 250, 193, 249, 188, 193, 255, 236, 255, 255, 128 },
+ { 35, 187, 185, 247, 154, 184, 255, 247, 255, 171, 128 },
+ { 20, 132, 114, 223, 172, 165, 255, 229, 255, 255, 128 },
+ { 4, 97, 96, 218, 96, 162, 255, 164, 255, 253, 128 },
+ { 1, 57, 35, 197, 154, 173, 254, 215, 255, 255, 128 },
+ { 1, 8, 2, 161, 10, 57, 230, 228, 255, 171, 128 }
+ }
+ }
}
};
diff --git a/vp9/common/vp9_entropy.c b/vp9/common/vp9_entropy.c
index 759b90128..1e3a7e17e 100644
--- a/vp9/common/vp9_entropy.c
+++ b/vp9/common/vp9_entropy.c
@@ -336,6 +336,6 @@ void vp9_adapt_coef_probs(VP9_COMMON *cm) {
BLOCK_TYPES, cm->fc.coef_counts_16x16,
count_sat, update_factor);
update_coef_probs(cm->fc.coef_probs_32x32, cm->fc.pre_coef_probs_32x32,
- BLOCK_TYPES_32X32, cm->fc.coef_counts_32x32,
+ BLOCK_TYPES, cm->fc.coef_counts_32x32,
count_sat, update_factor);
}
diff --git a/vp9/common/vp9_entropy.h b/vp9/common/vp9_entropy.h
index 20559a79b..8d28b0058 100644
--- a/vp9/common/vp9_entropy.h
+++ b/vp9/common/vp9_entropy.h
@@ -61,7 +61,6 @@ extern vp9_extra_bit_struct vp9_extra_bits[12]; /* indexed by token value */
/* Outside dimension. 0 = Y with DC, 1 = UV */
#define BLOCK_TYPES 2
-#define BLOCK_TYPES_32X32 1
#define REF_TYPES 2 // intra=0, inter=1
/* Middle dimension reflects the coefficient position within the transform. */
@@ -110,12 +109,24 @@ extern DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_32x32[1024]);
void vp9_coef_tree_initialize(void);
void vp9_adapt_coef_probs(struct VP9Common *);
-static void vp9_reset_mb_tokens_context(MACROBLOCKD* const xd) {
+static INLINE void vp9_reset_mb_tokens_context(MACROBLOCKD* const xd) {
/* Clear entropy contexts */
vpx_memset(xd->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES));
}
+static INLINE void vp9_reset_sb_tokens_context(MACROBLOCKD* const xd) {
+ /* Clear entropy contexts */
+ vpx_memset(xd->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * 2);
+ vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * 2);
+}
+
+static INLINE void vp9_reset_sb64_tokens_context(MACROBLOCKD* const xd) {
+ /* Clear entropy contexts */
+ vpx_memset(xd->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * 4);
+ vpx_memset(xd->left_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * 4);
+}
+
extern const int vp9_coef_bands[32];
extern const int vp9_coef_bands4x4[16];
diff --git a/vp9/common/vp9_idctllm.c b/vp9/common/vp9_idctllm.c
index 673abd7b1..54b79ee64 100644
--- a/vp9/common/vp9_idctllm.c
+++ b/vp9/common/vp9_idctllm.c
@@ -645,7 +645,7 @@ void vp9_short_idct16x16_c(int16_t *input, int16_t *output, int pitch) {
// First transform rows
for (i = 0; i < 16; ++i) {
idct16_1d(input, outptr);
- input += half_pitch;
+ input += 16;
outptr += 16;
}
@@ -655,7 +655,7 @@ void vp9_short_idct16x16_c(int16_t *input, int16_t *output, int pitch) {
temp_in[j] = out[j * 16 + i];
idct16_1d(temp_in, temp_out);
for (j = 0; j < 16; ++j)
- output[j * 16 + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
+ output[j * half_pitch + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
}
}
@@ -838,7 +838,7 @@ static const transform_2d IHT_16[] = {
};
void vp9_short_iht16x16_c(int16_t *input, int16_t *output,
- int input_pitch, TX_TYPE tx_type) {
+ int pitch, TX_TYPE tx_type) {
int i, j;
int16_t out[16 * 16];
int16_t *outptr = out;
@@ -848,7 +848,7 @@ void vp9_short_iht16x16_c(int16_t *input, int16_t *output,
// Rows
for (i = 0; i < 16; ++i) {
ht.rows(input, outptr);
- input += input_pitch;
+ input += 16;
outptr += 16;
}
@@ -858,7 +858,7 @@ void vp9_short_iht16x16_c(int16_t *input, int16_t *output,
temp_in[j] = out[j * 16 + i];
ht.cols(temp_in, temp_out);
for (j = 0; j < 16; ++j)
- output[j * 16 + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
+ output[j * pitch + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
}
}
@@ -875,7 +875,7 @@ void vp9_short_idct10_16x16_c(int16_t *input, int16_t *output, int pitch) {
vpx_memset(out, 0, sizeof(out));
for (i = 0; i < 4; ++i) {
idct16_1d(input, outptr);
- input += half_pitch;
+ input += 16;
outptr += 16;
}
@@ -885,7 +885,7 @@ void vp9_short_idct10_16x16_c(int16_t *input, int16_t *output, int pitch) {
temp_in[j] = out[j*16 + i];
idct16_1d(temp_in, temp_out);
for (j = 0; j < 16; ++j)
- output[j*16 + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
+ output[j * half_pitch + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
}
}
@@ -1273,7 +1273,7 @@ void vp9_short_idct32x32_c(int16_t *input, int16_t *output, int pitch) {
// Rows
for (i = 0; i < 32; ++i) {
idct32_1d(input, outptr);
- input += half_pitch;
+ input += 32;
outptr += 32;
}
@@ -1283,7 +1283,7 @@ void vp9_short_idct32x32_c(int16_t *input, int16_t *output, int pitch) {
temp_in[j] = out[j * 32 + i];
idct32_1d(temp_in, temp_out);
for (j = 0; j < 32; ++j)
- output[j * 32 + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
+ output[j * half_pitch + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
}
}
@@ -1306,7 +1306,7 @@ void vp9_short_idct10_32x32_c(int16_t *input, int16_t *output, int pitch) {
vpx_memset(out, 0, sizeof(out));
for (i = 0; i < 4; ++i) {
idct32_1d(input, outptr);
- input += half_pitch;
+ input += 32;
outptr += 32;
}
@@ -1316,6 +1316,6 @@ void vp9_short_idct10_32x32_c(int16_t *input, int16_t *output, int pitch) {
temp_in[j] = out[j * 32 + i];
idct32_1d(temp_in, temp_out);
for (j = 0; j < 32; ++j)
- output[j * 32 + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
+ output[j * half_pitch + i] = ROUND_POWER_OF_TWO(temp_out[j], 6);
}
}
diff --git a/vp9/common/vp9_invtrans.c b/vp9/common/vp9_invtrans.c
index 1311b9111..a26415fc3 100644
--- a/vp9/common/vp9_invtrans.c
+++ b/vp9/common/vp9_invtrans.c
@@ -11,12 +11,13 @@
#include "vp9/common/vp9_invtrans.h"
#include "./vp9_rtcd.h"
-void vp9_inverse_transform_b_4x4(MACROBLOCKD *xd, int block, int pitch) {
- BLOCKD *b = &xd->block[block];
- if (xd->eobs[block] <= 1)
- xd->inv_txm4x4_1(b->dqcoeff, b->diff, pitch);
+void vp9_inverse_transform_b_4x4(MACROBLOCKD *xd, int eob,
+ int16_t *dqcoeff, int16_t *diff,
+ int pitch) {
+ if (eob <= 1)
+ xd->inv_txm4x4_1(dqcoeff, diff, pitch);
else
- xd->inv_txm4x4(b->dqcoeff, b->diff, pitch);
+ xd->inv_txm4x4(dqcoeff, diff, pitch);
}
void vp9_inverse_transform_mby_4x4(MACROBLOCKD *xd) {
@@ -27,7 +28,8 @@ void vp9_inverse_transform_mby_4x4(MACROBLOCKD *xd) {
if (tx_type != DCT_DCT) {
vp9_short_iht4x4(xd->block[i].dqcoeff, xd->block[i].diff, 16, tx_type);
} else {
- vp9_inverse_transform_b_4x4(xd, i, 32);
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[i], xd->block[i].dqcoeff,
+ xd->block[i].diff, 32);
}
}
}
@@ -36,7 +38,8 @@ void vp9_inverse_transform_mbuv_4x4(MACROBLOCKD *xd) {
int i;
for (i = 16; i < 24; i++) {
- vp9_inverse_transform_b_4x4(xd, i, 16);
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[i], xd->block[i].dqcoeff,
+ xd->block[i].diff, 16);
}
}
@@ -111,13 +114,170 @@ void vp9_inverse_transform_mb_16x16(MACROBLOCKD *xd) {
vp9_inverse_transform_mbuv_8x8(xd);
}
-void vp9_inverse_transform_sby_32x32(SUPERBLOCKD *xd_sb) {
- vp9_short_idct32x32(xd_sb->dqcoeff, xd_sb->diff, 64);
+void vp9_inverse_transform_sby_32x32(MACROBLOCKD *xd) {
+ vp9_short_idct32x32(xd->dqcoeff, xd->diff, 64);
+}
+
+void vp9_inverse_transform_sby_16x16(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 4; n++) {
+ const int x_idx = n & 1, y_idx = n >> 1;
+
+ vp9_inverse_transform_b_16x16(xd->dqcoeff + n * 256,
+ xd->diff + x_idx * 16 + y_idx * 32 * 16, 64);
+ }
+}
+
+void vp9_inverse_transform_sby_8x8(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 16; n++) {
+ const int x_idx = n & 3, y_idx = n >> 2;
+
+ vp9_inverse_transform_b_8x8(xd->dqcoeff + n * 64,
+ xd->diff + x_idx * 8 + y_idx * 32 * 8, 64);
+ }
+}
+
+void vp9_inverse_transform_sby_4x4(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 64; n++) {
+ const int x_idx = n & 7, y_idx = n >> 3;
+
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[n], xd->dqcoeff + n * 16,
+ xd->diff + x_idx * 4 + y_idx * 4 * 32, 64);
+ }
+}
+
+void vp9_inverse_transform_sbuv_16x16(MACROBLOCKD *xd) {
+ vp9_inverse_transform_b_16x16(xd->dqcoeff + 1024,
+ xd->diff + 1024, 32);
+ vp9_inverse_transform_b_16x16(xd->dqcoeff + 1280,
+ xd->diff + 1280, 32);
+}
+
+void vp9_inverse_transform_sbuv_8x8(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 4; n++) {
+ const int x_idx = n & 1, y_idx = n >> 1;
+
+ vp9_inverse_transform_b_8x8(xd->dqcoeff + 1024 + n * 64,
+ xd->diff + 1024 + x_idx * 8 + y_idx * 16 * 8,
+ 32);
+ vp9_inverse_transform_b_8x8(xd->dqcoeff + 1280 + n * 64,
+ xd->diff + 1280 + x_idx * 8 + y_idx * 16 * 8,
+ 32);
+ }
+}
+
+void vp9_inverse_transform_sbuv_4x4(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 16; n++) {
+ const int x_idx = n & 3, y_idx = n >> 2;
+
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[64 + n],
+ xd->dqcoeff + 1024 + n * 16,
+ xd->diff + 1024 + x_idx * 4 + y_idx * 16 * 4,
+ 32);
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[64 + 16 + n],
+ xd->dqcoeff + 1280 + n * 16,
+ xd->diff + 1280 + x_idx * 4 + y_idx * 16 * 4,
+ 32);
+ }
}
-void vp9_inverse_transform_sbuv_16x16(SUPERBLOCKD *xd_sb) {
- vp9_inverse_transform_b_16x16(xd_sb->dqcoeff + 1024,
- xd_sb->diff + 1024, 32);
- vp9_inverse_transform_b_16x16(xd_sb->dqcoeff + 1280,
- xd_sb->diff + 1280, 32);
+void vp9_inverse_transform_sb64y_32x32(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 4; n++) {
+ const int x_idx = n & 1, y_idx = n >> 1;
+
+ vp9_short_idct32x32(xd->dqcoeff + n * 1024,
+ xd->diff + x_idx * 32 + y_idx * 32 * 64, 128);
+ }
+}
+
+void vp9_inverse_transform_sb64y_16x16(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 16; n++) {
+ const int x_idx = n & 3, y_idx = n >> 2;
+
+ vp9_inverse_transform_b_16x16(xd->dqcoeff + n * 256,
+ xd->diff + x_idx * 16 + y_idx * 64 * 16, 128);
+ }
+}
+
+void vp9_inverse_transform_sb64y_8x8(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 64; n++) {
+ const int x_idx = n & 7, y_idx = n >> 3;
+
+ vp9_inverse_transform_b_8x8(xd->dqcoeff + n * 64,
+ xd->diff + x_idx * 8 + y_idx * 64 * 8, 128);
+ }
+}
+
+void vp9_inverse_transform_sb64y_4x4(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 256; n++) {
+ const int x_idx = n & 15, y_idx = n >> 4;
+
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[n], xd->dqcoeff + n * 16,
+ xd->diff + x_idx * 4 + y_idx * 4 * 64, 128);
+ }
+}
+
+void vp9_inverse_transform_sb64uv_32x32(MACROBLOCKD *xd) {
+ vp9_short_idct32x32(xd->dqcoeff + 4096,
+ xd->diff + 4096, 64);
+ vp9_short_idct32x32(xd->dqcoeff + 4096 + 1024,
+ xd->diff + 4096 + 1024, 64);
+}
+
+void vp9_inverse_transform_sb64uv_16x16(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 4; n++) {
+ const int x_idx = n & 1, y_idx = n >> 1, off = x_idx * 16 + y_idx * 32 * 16;
+
+ vp9_inverse_transform_b_16x16(xd->dqcoeff + 4096 + n * 256,
+ xd->diff + 4096 + off, 64);
+ vp9_inverse_transform_b_16x16(xd->dqcoeff + 4096 + 1024 + n * 256,
+ xd->diff + 4096 + 1024 + off, 64);
+ }
+}
+
+void vp9_inverse_transform_sb64uv_8x8(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 16; n++) {
+ const int x_idx = n & 3, y_idx = n >> 2, off = x_idx * 8 + y_idx * 32 * 8;
+
+ vp9_inverse_transform_b_8x8(xd->dqcoeff + 4096 + n * 64,
+ xd->diff + 4096 + off, 64);
+ vp9_inverse_transform_b_8x8(xd->dqcoeff + 4096 + 1024 + n * 64,
+ xd->diff + 4096 + 1024 + off, 64);
+ }
+}
+
+void vp9_inverse_transform_sb64uv_4x4(MACROBLOCKD *xd) {
+ int n;
+
+ for (n = 0; n < 64; n++) {
+ const int x_idx = n & 7, y_idx = n >> 3, off = x_idx * 4 + y_idx * 32 * 4;
+
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[256 + n],
+ xd->dqcoeff + 4096 + n * 16,
+ xd->diff + 4096 + off, 64);
+ vp9_inverse_transform_b_4x4(xd, xd->eobs[256 + 64 + n],
+ xd->dqcoeff + 4096 + 1024 + n * 16,
+ xd->diff + 4096 + 1024 + off, 64);
+ }
}
diff --git a/vp9/common/vp9_invtrans.h b/vp9/common/vp9_invtrans.h
index abd5b0fad..89916570d 100644
--- a/vp9/common/vp9_invtrans.h
+++ b/vp9/common/vp9_invtrans.h
@@ -15,7 +15,9 @@
#include "vpx/vpx_integer.h"
#include "vp9/common/vp9_blockd.h"
-void vp9_inverse_transform_b_4x4(MACROBLOCKD *xd, int block, int pitch);
+void vp9_inverse_transform_b_4x4(MACROBLOCKD *xd, int eob,
+ int16_t *dqcoeff, int16_t *diff,
+ int pitch);
void vp9_inverse_transform_mb_4x4(MACROBLOCKD *xd);
@@ -39,7 +41,21 @@ void vp9_inverse_transform_mb_16x16(MACROBLOCKD *xd);
void vp9_inverse_transform_mby_16x16(MACROBLOCKD *xd);
-void vp9_inverse_transform_sby_32x32(SUPERBLOCKD *xd_sb);
-void vp9_inverse_transform_sbuv_16x16(SUPERBLOCKD *xd_sb);
+void vp9_inverse_transform_sby_32x32(MACROBLOCKD *xd);
+void vp9_inverse_transform_sby_16x16(MACROBLOCKD *xd);
+void vp9_inverse_transform_sby_8x8(MACROBLOCKD *xd);
+void vp9_inverse_transform_sby_4x4(MACROBLOCKD *xd);
+void vp9_inverse_transform_sbuv_16x16(MACROBLOCKD *xd);
+void vp9_inverse_transform_sbuv_8x8(MACROBLOCKD *xd);
+void vp9_inverse_transform_sbuv_4x4(MACROBLOCKD *xd);
+
+void vp9_inverse_transform_sb64y_32x32(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64y_16x16(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64y_8x8(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64y_4x4(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64uv_32x32(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64uv_16x16(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64uv_8x8(MACROBLOCKD *xd);
+void vp9_inverse_transform_sb64uv_4x4(MACROBLOCKD *xd);
#endif // VP9_COMMON_VP9_INVTRANS_H_
diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h
index c4bb12340..48d19a332 100644
--- a/vp9/common/vp9_onyxc_int.h
+++ b/vp9/common/vp9_onyxc_int.h
@@ -61,7 +61,7 @@ typedef struct frame_contexts {
vp9_coeff_probs coef_probs_4x4[BLOCK_TYPES];
vp9_coeff_probs coef_probs_8x8[BLOCK_TYPES];
vp9_coeff_probs coef_probs_16x16[BLOCK_TYPES];
- vp9_coeff_probs coef_probs_32x32[BLOCK_TYPES_32X32];
+ vp9_coeff_probs coef_probs_32x32[BLOCK_TYPES];
nmv_context nmvc;
nmv_context pre_nmvc;
@@ -83,12 +83,12 @@ typedef struct frame_contexts {
vp9_coeff_probs pre_coef_probs_4x4[BLOCK_TYPES];
vp9_coeff_probs pre_coef_probs_8x8[BLOCK_TYPES];
vp9_coeff_probs pre_coef_probs_16x16[BLOCK_TYPES];
- vp9_coeff_probs pre_coef_probs_32x32[BLOCK_TYPES_32X32];
+ vp9_coeff_probs pre_coef_probs_32x32[BLOCK_TYPES];
vp9_coeff_count coef_counts_4x4[BLOCK_TYPES];
vp9_coeff_count coef_counts_8x8[BLOCK_TYPES];
vp9_coeff_count coef_counts_16x16[BLOCK_TYPES];
- vp9_coeff_count coef_counts_32x32[BLOCK_TYPES_32X32];
+ vp9_coeff_count coef_counts_32x32[BLOCK_TYPES];
nmv_context_counts NMVcount;
vp9_prob switchable_interp_prob[VP9_SWITCHABLE_FILTERS + 1]
diff --git a/vp9/common/vp9_recon.c b/vp9/common/vp9_recon.c
index caf7b8d22..d67b6d3df 100644
--- a/vp9/common/vp9_recon.c
+++ b/vp9/common/vp9_recon.c
@@ -117,7 +117,7 @@ void vp9_recon_mbuv_s_c(MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst) {
void vp9_recon_sby_s_c(MACROBLOCKD *xd, uint8_t *dst) {
int x, y, stride = xd->block[0].dst_stride;
- int16_t *diff = xd->sb_coeff_data.diff;
+ int16_t *diff = xd->diff;
for (y = 0; y < 32; y++) {
for (x = 0; x < 32; x++) {
@@ -130,8 +130,8 @@ void vp9_recon_sby_s_c(MACROBLOCKD *xd, uint8_t *dst) {
void vp9_recon_sbuv_s_c(MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst) {
int x, y, stride = xd->block[16].dst_stride;
- int16_t *udiff = xd->sb_coeff_data.diff + 1024;
- int16_t *vdiff = xd->sb_coeff_data.diff + 1280;
+ int16_t *udiff = xd->diff + 1024;
+ int16_t *vdiff = xd->diff + 1280;
for (y = 0; y < 16; y++) {
for (x = 0; x < 16; x++) {
@@ -145,6 +145,36 @@ void vp9_recon_sbuv_s_c(MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst) {
}
}
+void vp9_recon_sb64y_s_c(MACROBLOCKD *xd, uint8_t *dst) {
+ int x, y, stride = xd->block[0].dst_stride;
+ int16_t *diff = xd->diff;
+
+ for (y = 0; y < 64; y++) {
+ for (x = 0; x < 64; x++) {
+ dst[x] = clip_pixel(dst[x] + diff[x]);
+ }
+ dst += stride;
+ diff += 64;
+ }
+}
+
+void vp9_recon_sb64uv_s_c(MACROBLOCKD *xd, uint8_t *udst, uint8_t *vdst) {
+ int x, y, stride = xd->block[16].dst_stride;
+ int16_t *udiff = xd->diff + 4096;
+ int16_t *vdiff = xd->diff + 4096 + 1024;
+
+ for (y = 0; y < 32; y++) {
+ for (x = 0; x < 32; x++) {
+ udst[x] = clip_pixel(udst[x] + udiff[x]);
+ vdst[x] = clip_pixel(vdst[x] + vdiff[x]);
+ }
+ udst += stride;
+ vdst += stride;
+ udiff += 32;
+ vdiff += 32;
+ }
+}
+
void vp9_recon_mby_c(MACROBLOCKD *xd) {
int i;
diff --git a/vp9/common/vp9_rtcd_defs.sh b/vp9/common/vp9_rtcd_defs.sh
index e6dcff4d1..db1b4673a 100644
--- a/vp9/common/vp9_rtcd_defs.sh
+++ b/vp9/common/vp9_rtcd_defs.sh
@@ -97,6 +97,12 @@ specialize vp9_recon_sby_s
prototype void vp9_recon_sbuv_s "struct macroblockd *x, uint8_t *udst, uint8_t *vdst"
specialize void vp9_recon_sbuv_s
+prototype void vp9_recon_sb64y_s "struct macroblockd *x, uint8_t *dst"
+specialize vp9_recon_sb64y_s
+
+prototype void vp9_recon_sb64uv_s "struct macroblockd *x, uint8_t *udst, uint8_t *vdst"
+specialize void vp9_recon_sb64uv_s
+
prototype void vp9_build_intra_predictors_mby_s "struct macroblockd *x"
specialize vp9_build_intra_predictors_mby_s