diff options
Diffstat (limited to 'vp9/common')
-rw-r--r-- | vp9/common/vp9_blockd.c | 436 | ||||
-rw-r--r-- | vp9/common/vp9_blockd.h | 27 | ||||
-rw-r--r-- | vp9/common/vp9_default_coef_probs.h | 350 | ||||
-rw-r--r-- | vp9/common/vp9_entropy.c | 2 | ||||
-rw-r--r-- | vp9/common/vp9_entropy.h | 15 | ||||
-rw-r--r-- | vp9/common/vp9_idctllm.c | 22 | ||||
-rw-r--r-- | vp9/common/vp9_invtrans.c | 188 | ||||
-rw-r--r-- | vp9/common/vp9_invtrans.h | 22 | ||||
-rw-r--r-- | vp9/common/vp9_onyxc_int.h | 6 | ||||
-rw-r--r-- | vp9/common/vp9_recon.c | 36 | ||||
-rw-r--r-- | vp9/common/vp9_rtcd_defs.sh | 6 |
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 |