Merge "Abstract selection of coef band." into experimental
This commit is contained in:
@@ -41,8 +41,12 @@ DECLARE_ALIGNED(16, const uint8_t, vp9_norm[256]) = {
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_ALIGNED(16, const int, vp9_coef_bands_4x4[16]) = {
|
// Unified coefficient band structure used by all block sizes
|
||||||
0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7
|
DECLARE_ALIGNED(16, const int, vp9_coef_bands[32]) = {
|
||||||
|
0, 1, 2, 3, 5, 4, 4, 5,
|
||||||
|
5, 3, 6, 6, 6, 6, 6, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_ALIGNED(16, const uint8_t, vp9_prev_token_class[MAX_ENTROPY_TOKENS]) = {
|
DECLARE_ALIGNED(16, const uint8_t, vp9_prev_token_class[MAX_ENTROPY_TOKENS]) = {
|
||||||
@@ -70,17 +74,6 @@ DECLARE_ALIGNED(16, const int, vp9_row_scan_4x4[16]) = {
|
|||||||
12, 13, 14, 15
|
12, 13, 14, 15
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_ALIGNED(64, const int, vp9_coef_bands_8x8[64]) = {
|
|
||||||
0, 1, 2, 3, 5, 4, 4, 5,
|
|
||||||
5, 3, 6, 3, 5, 4, 6, 6,
|
|
||||||
6, 5, 5, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7
|
|
||||||
};
|
|
||||||
|
|
||||||
DECLARE_ALIGNED(64, const int, vp9_default_zig_zag1d_8x8[64]) = {
|
DECLARE_ALIGNED(64, const int, vp9_default_zig_zag1d_8x8[64]) = {
|
||||||
0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
|
0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5,
|
||||||
12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
|
12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28,
|
||||||
@@ -88,26 +81,6 @@ DECLARE_ALIGNED(64, const int, vp9_default_zig_zag1d_8x8[64]) = {
|
|||||||
58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63,
|
58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Table can be optimized.
|
|
||||||
DECLARE_ALIGNED(16, const int, vp9_coef_bands_16x16[256]) = {
|
|
||||||
0, 1, 2, 3, 5, 4, 4, 5, 5, 3, 6, 3, 5, 4, 6, 6,
|
|
||||||
6, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
};
|
|
||||||
|
|
||||||
DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_16x16[256]) = {
|
DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_16x16[256]) = {
|
||||||
0, 1, 16, 32, 17, 2, 3, 18,
|
0, 1, 16, 32, 17, 2, 3, 18,
|
||||||
33, 48, 64, 49, 34, 19, 4, 5,
|
33, 48, 64, 49, 34, 19, 4, 5,
|
||||||
@@ -143,76 +116,6 @@ DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_16x16[256]) = {
|
|||||||
237, 252, 253, 238, 223, 239, 254, 255,
|
237, 252, 253, 238, 223, 239, 254, 255,
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_ALIGNED(16, const int, vp9_coef_bands_32x32[1024]) = {
|
|
||||||
0, 1, 2, 3, 5, 4, 4, 5, 5, 3, 6, 3, 5, 4, 6, 6,
|
|
||||||
6, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
|
|
||||||
6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
|
|
||||||
};
|
|
||||||
|
|
||||||
DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_32x32[1024]) = {
|
DECLARE_ALIGNED(16, const int, vp9_default_zig_zag1d_32x32[1024]) = {
|
||||||
0, 1, 32, 64, 33, 2, 3, 34, 65, 96, 128, 97, 66, 35, 4, 5, 36, 67, 98, 129, 160, 192, 161, 130, 99, 68, 37, 6, 7, 38, 69, 100,
|
0, 1, 32, 64, 33, 2, 3, 34, 65, 96, 128, 97, 66, 35, 4, 5, 36, 67, 98, 129, 160, 192, 161, 130, 99, 68, 37, 6, 7, 38, 69, 100,
|
||||||
131, 162, 193, 224, 256, 225, 194, 163, 132, 101, 70, 39, 8, 9, 40, 71, 102, 133, 164, 195, 226, 257, 288, 320, 289, 258, 227, 196, 165, 134, 103, 72,
|
131, 162, 193, 224, 256, 225, 194, 163, 132, 101, 70, 39, 8, 9, 40, 71, 102, 133, 164, 195, 226, 257, 288, 320, 289, 258, 227, 196, 165, 134, 103, 72,
|
||||||
@@ -341,6 +244,13 @@ int vp9_get_coef_context(int * recent_energy, int token) {
|
|||||||
return vp9_prev_token_class[token];
|
return vp9_prev_token_class[token];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
int vp9_get_coef_band(int coef_index) {
|
||||||
|
if (coef_index < 32)
|
||||||
|
return vp9_coef_bands[coef_index];
|
||||||
|
else
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
|
||||||
void vp9_default_coef_probs(VP9_COMMON *pc) {
|
void vp9_default_coef_probs(VP9_COMMON *pc) {
|
||||||
vpx_memcpy(pc->fc.coef_probs_4x4, default_coef_probs_4x4,
|
vpx_memcpy(pc->fc.coef_probs_4x4, default_coef_probs_4x4,
|
||||||
sizeof(pc->fc.coef_probs_4x4));
|
sizeof(pc->fc.coef_probs_4x4));
|
||||||
|
|||||||
@@ -72,10 +72,6 @@ extern vp9_extra_bit_struct vp9_extra_bits[12]; /* indexed by token value */
|
|||||||
position within the 4x4 DCT. */
|
position within the 4x4 DCT. */
|
||||||
|
|
||||||
#define COEF_BANDS 8
|
#define COEF_BANDS 8
|
||||||
extern DECLARE_ALIGNED(16, const int, vp9_coef_bands_4x4[16]);
|
|
||||||
extern DECLARE_ALIGNED(64, const int, vp9_coef_bands_8x8[64]);
|
|
||||||
extern DECLARE_ALIGNED(16, const int, vp9_coef_bands_16x16[256]);
|
|
||||||
extern DECLARE_ALIGNED(16, const int, vp9_coef_bands_32x32[1024]);
|
|
||||||
|
|
||||||
/* Inside dimension is 3-valued measure of nearby complexity, that is,
|
/* Inside dimension is 3-valued measure of nearby complexity, that is,
|
||||||
the extent to which nearby coefficients are nonzero. For the first
|
the extent to which nearby coefficients are nonzero. For the first
|
||||||
@@ -127,4 +123,5 @@ static void vp9_reset_mb_tokens_context(MACROBLOCKD* const xd) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern int vp9_get_coef_context(int * recent_energy, int token);
|
extern int vp9_get_coef_context(int * recent_energy, int token);
|
||||||
|
extern int vp9_get_coef_band(int coef_index);
|
||||||
#endif // VP9_COMMON_VP9_ENTROPY_H_
|
#endif // VP9_COMMON_VP9_ENTROPY_H_
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ static int get_signed(BOOL_DECODER *br, int value_to_sign) {
|
|||||||
|
|
||||||
#define INCREMENT_COUNT(token) \
|
#define INCREMENT_COUNT(token) \
|
||||||
do { \
|
do { \
|
||||||
coef_counts[type][coef_bands[c]][pt][token]++; \
|
coef_counts[type][vp9_get_coef_band(c)][pt][token]++; \
|
||||||
pt = vp9_get_coef_context(&recent_energy, token); \
|
pt = vp9_get_coef_context(&recent_energy, token); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
@@ -87,8 +87,7 @@ static int decode_coefs(VP9D_COMP *dx, const MACROBLOCKD *xd,
|
|||||||
BOOL_DECODER* const br, int block_idx,
|
BOOL_DECODER* const br, int block_idx,
|
||||||
PLANE_TYPE type, TX_TYPE tx_type,
|
PLANE_TYPE type, TX_TYPE tx_type,
|
||||||
int seg_eob, int16_t *qcoeff_ptr,
|
int seg_eob, int16_t *qcoeff_ptr,
|
||||||
const int *const scan, TX_SIZE txfm_size,
|
const int *const scan, TX_SIZE txfm_size) {
|
||||||
const int *coef_bands) {
|
|
||||||
ENTROPY_CONTEXT* const A0 = (ENTROPY_CONTEXT *) xd->above_context;
|
ENTROPY_CONTEXT* const A0 = (ENTROPY_CONTEXT *) xd->above_context;
|
||||||
ENTROPY_CONTEXT* const L0 = (ENTROPY_CONTEXT *) xd->left_context;
|
ENTROPY_CONTEXT* const L0 = (ENTROPY_CONTEXT *) xd->left_context;
|
||||||
const int aidx = vp9_block2above[txfm_size][block_idx];
|
const int aidx = vp9_block2above[txfm_size][block_idx];
|
||||||
@@ -180,7 +179,7 @@ static int decode_coefs(VP9D_COMP *dx, const MACROBLOCKD *xd,
|
|||||||
int val;
|
int val;
|
||||||
const uint8_t *cat6 = cat6_prob;
|
const uint8_t *cat6 = cat6_prob;
|
||||||
if (c >= seg_eob) break;
|
if (c >= seg_eob) break;
|
||||||
prob = coef_probs[type][coef_bands[c]][pt];
|
prob = coef_probs[type][vp9_get_coef_band(c)][pt];
|
||||||
if (!vp9_read(br, prob[EOB_CONTEXT_NODE]))
|
if (!vp9_read(br, prob[EOB_CONTEXT_NODE]))
|
||||||
break;
|
break;
|
||||||
SKIP_START:
|
SKIP_START:
|
||||||
@@ -188,7 +187,7 @@ SKIP_START:
|
|||||||
if (!vp9_read(br, prob[ZERO_CONTEXT_NODE])) {
|
if (!vp9_read(br, prob[ZERO_CONTEXT_NODE])) {
|
||||||
INCREMENT_COUNT(ZERO_TOKEN);
|
INCREMENT_COUNT(ZERO_TOKEN);
|
||||||
++c;
|
++c;
|
||||||
prob = coef_probs[type][coef_bands[c]][pt];
|
prob = coef_probs[type][vp9_get_coef_band(c)][pt];
|
||||||
goto SKIP_START;
|
goto SKIP_START;
|
||||||
}
|
}
|
||||||
// ONE_CONTEXT_NODE_0_
|
// ONE_CONTEXT_NODE_0_
|
||||||
@@ -252,7 +251,7 @@ SKIP_START:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (c < seg_eob)
|
if (c < seg_eob)
|
||||||
coef_counts[type][coef_bands[c]][pt][DCT_EOB_TOKEN]++;
|
coef_counts[type][vp9_get_coef_band(c)][pt][DCT_EOB_TOKEN]++;
|
||||||
|
|
||||||
A0[aidx] = L0[lidx] = (c > !type);
|
A0[aidx] = L0[lidx] = (c > !type);
|
||||||
if (txfm_size >= TX_8X8 && type != PLANE_TYPE_Y2) {
|
if (txfm_size >= TX_8X8 && type != PLANE_TYPE_Y2) {
|
||||||
@@ -312,7 +311,7 @@ int vp9_decode_sb_tokens(VP9D_COMP* const pbi,
|
|||||||
DCT_DCT, get_eob(xd, segment_id, 1024),
|
DCT_DCT, get_eob(xd, segment_id, 1024),
|
||||||
xd->sb_coeff_data.qcoeff,
|
xd->sb_coeff_data.qcoeff,
|
||||||
vp9_default_zig_zag1d_32x32,
|
vp9_default_zig_zag1d_32x32,
|
||||||
TX_32X32, vp9_coef_bands_32x32);
|
TX_32X32);
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
|
|
||||||
// 16x16 chroma blocks
|
// 16x16 chroma blocks
|
||||||
@@ -321,7 +320,7 @@ int vp9_decode_sb_tokens(VP9D_COMP* const pbi,
|
|||||||
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV, DCT_DCT, seg_eob,
|
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV, DCT_DCT, seg_eob,
|
||||||
xd->sb_coeff_data.qcoeff + 1024 + (i - 16) * 64,
|
xd->sb_coeff_data.qcoeff + 1024 + (i - 16) * 64,
|
||||||
vp9_default_zig_zag1d_16x16,
|
vp9_default_zig_zag1d_16x16,
|
||||||
TX_16X16, vp9_coef_bands_16x16);
|
TX_16X16);
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -345,7 +344,7 @@ static int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
|
|||||||
get_tx_type(xd, &xd->block[0]),
|
get_tx_type(xd, &xd->block[0]),
|
||||||
get_eob(xd, segment_id, 256),
|
get_eob(xd, segment_id, 256),
|
||||||
xd->qcoeff, vp9_default_zig_zag1d_16x16,
|
xd->qcoeff, vp9_default_zig_zag1d_16x16,
|
||||||
TX_16X16, vp9_coef_bands_16x16);
|
TX_16X16);
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
|
|
||||||
// 8x8 chroma blocks
|
// 8x8 chroma blocks
|
||||||
@@ -354,7 +353,7 @@ static int vp9_decode_mb_tokens_16x16(VP9D_COMP* const pbi,
|
|||||||
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV,
|
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV,
|
||||||
DCT_DCT, seg_eob, xd->block[i].qcoeff,
|
DCT_DCT, seg_eob, xd->block[i].qcoeff,
|
||||||
vp9_default_zig_zag1d_8x8,
|
vp9_default_zig_zag1d_8x8,
|
||||||
TX_8X8, vp9_coef_bands_8x8);
|
TX_8X8);
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
}
|
}
|
||||||
A[8] = 0;
|
A[8] = 0;
|
||||||
@@ -376,8 +375,7 @@ static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
|
|||||||
eobs[24] = c = decode_coefs(pbi, xd, bc, 24, PLANE_TYPE_Y2,
|
eobs[24] = c = decode_coefs(pbi, xd, bc, 24, PLANE_TYPE_Y2,
|
||||||
DCT_DCT, get_eob(xd, segment_id, 4),
|
DCT_DCT, get_eob(xd, segment_id, 4),
|
||||||
xd->block[24].qcoeff,
|
xd->block[24].qcoeff,
|
||||||
vp9_default_zig_zag1d_4x4, TX_8X8,
|
vp9_default_zig_zag1d_4x4, TX_8X8);
|
||||||
vp9_coef_bands_4x4);
|
|
||||||
eobtotal += c - 4;
|
eobtotal += c - 4;
|
||||||
type = PLANE_TYPE_Y_NO_DC;
|
type = PLANE_TYPE_Y_NO_DC;
|
||||||
} else {
|
} else {
|
||||||
@@ -394,8 +392,7 @@ static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
|
|||||||
type == PLANE_TYPE_Y_WITH_DC ?
|
type == PLANE_TYPE_Y_WITH_DC ?
|
||||||
get_tx_type(xd, xd->block + i) : DCT_DCT,
|
get_tx_type(xd, xd->block + i) : DCT_DCT,
|
||||||
seg_eob, xd->block[i].qcoeff,
|
seg_eob, xd->block[i].qcoeff,
|
||||||
vp9_default_zig_zag1d_8x8,
|
vp9_default_zig_zag1d_8x8, TX_8X8);
|
||||||
TX_8X8, vp9_coef_bands_8x8);
|
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -407,16 +404,14 @@ static int vp9_decode_mb_tokens_8x8(VP9D_COMP* const pbi,
|
|||||||
for (i = 16; i < 24; i++) {
|
for (i = 16; i < 24; i++) {
|
||||||
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV,
|
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV,
|
||||||
DCT_DCT, seg_eob, xd->block[i].qcoeff,
|
DCT_DCT, seg_eob, xd->block[i].qcoeff,
|
||||||
vp9_default_zig_zag1d_4x4, TX_4X4,
|
vp9_default_zig_zag1d_4x4, TX_4X4);
|
||||||
vp9_coef_bands_4x4);
|
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 16; i < 24; i += 4) {
|
for (i = 16; i < 24; i += 4) {
|
||||||
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV,
|
eobs[i] = c = decode_coefs(pbi, xd, bc, i, PLANE_TYPE_UV,
|
||||||
DCT_DCT, seg_eob, xd->block[i].qcoeff,
|
DCT_DCT, seg_eob, xd->block[i].qcoeff,
|
||||||
vp9_default_zig_zag1d_8x8,
|
vp9_default_zig_zag1d_8x8, TX_8X8);
|
||||||
TX_8X8, vp9_coef_bands_8x8);
|
|
||||||
eobtotal += c;
|
eobtotal += c;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -432,7 +427,7 @@ static int decode_coefs_4x4(VP9D_COMP *dx, MACROBLOCKD *xd,
|
|||||||
int c;
|
int c;
|
||||||
|
|
||||||
c = decode_coefs(dx, xd, bc, i, type, tx_type, seg_eob,
|
c = decode_coefs(dx, xd, bc, i, type, tx_type, seg_eob,
|
||||||
xd->block[i].qcoeff, scan, TX_4X4, vp9_coef_bands_4x4);
|
xd->block[i].qcoeff, scan, TX_4X4);
|
||||||
eobs[i] = c;
|
eobs[i] = c;
|
||||||
|
|
||||||
return c;
|
return c;
|
||||||
|
|||||||
@@ -386,13 +386,12 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
int best, band, pt;
|
int best, band, pt;
|
||||||
int err_mult = plane_rd_mult[type];
|
int err_mult = plane_rd_mult[type];
|
||||||
int default_eob;
|
int default_eob;
|
||||||
int const *scan, *bands;
|
int const *scan;
|
||||||
|
|
||||||
switch (tx_size) {
|
switch (tx_size) {
|
||||||
default:
|
default:
|
||||||
case TX_4X4:
|
case TX_4X4:
|
||||||
scan = vp9_default_zig_zag1d_4x4;
|
scan = vp9_default_zig_zag1d_4x4;
|
||||||
bands = vp9_coef_bands_4x4;
|
|
||||||
default_eob = 16;
|
default_eob = 16;
|
||||||
// TODO: this isn't called (for intra4x4 modes), but will be left in
|
// TODO: this isn't called (for intra4x4 modes), but will be left in
|
||||||
// since it could be used later
|
// since it could be used later
|
||||||
@@ -419,12 +418,10 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
break;
|
break;
|
||||||
case TX_8X8:
|
case TX_8X8:
|
||||||
scan = vp9_default_zig_zag1d_8x8;
|
scan = vp9_default_zig_zag1d_8x8;
|
||||||
bands = vp9_coef_bands_8x8;
|
|
||||||
default_eob = 64;
|
default_eob = 64;
|
||||||
break;
|
break;
|
||||||
case TX_16X16:
|
case TX_16X16:
|
||||||
scan = vp9_default_zig_zag1d_16x16;
|
scan = vp9_default_zig_zag1d_16x16;
|
||||||
bands = vp9_coef_bands_16x16;
|
|
||||||
default_eob = 256;
|
default_eob = 256;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -459,7 +456,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
t0 = (vp9_dct_value_tokens_ptr + x)->Token;
|
t0 = (vp9_dct_value_tokens_ptr + x)->Token;
|
||||||
/* Consider both possible successor states. */
|
/* Consider both possible successor states. */
|
||||||
if (next < default_eob) {
|
if (next < default_eob) {
|
||||||
band = bands[i + 1];
|
band = vp9_get_coef_band(i + 1);
|
||||||
pt = trellis_get_coeff_context(t0);
|
pt = trellis_get_coeff_context(t0);
|
||||||
rate0 +=
|
rate0 +=
|
||||||
mb->token_costs[tx_size][type][band][pt][tokens[next][0].token];
|
mb->token_costs[tx_size][type][band][pt][tokens[next][0].token];
|
||||||
@@ -506,7 +503,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
t0 = t1 = (vp9_dct_value_tokens_ptr + x)->Token;
|
t0 = t1 = (vp9_dct_value_tokens_ptr + x)->Token;
|
||||||
}
|
}
|
||||||
if (next < default_eob) {
|
if (next < default_eob) {
|
||||||
band = bands[i + 1];
|
band = vp9_get_coef_band(i + 1);
|
||||||
if (t0 != DCT_EOB_TOKEN) {
|
if (t0 != DCT_EOB_TOKEN) {
|
||||||
pt = trellis_get_coeff_context(t0);
|
pt = trellis_get_coeff_context(t0);
|
||||||
rate0 += mb->token_costs[tx_size][type][band][pt][
|
rate0 += mb->token_costs[tx_size][type][band][pt][
|
||||||
@@ -541,7 +538,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
* add a new trellis node, but we do need to update the costs.
|
* add a new trellis node, but we do need to update the costs.
|
||||||
*/
|
*/
|
||||||
else {
|
else {
|
||||||
band = bands[i + 1];
|
band = vp9_get_coef_band(i + 1);
|
||||||
t0 = tokens[next][0].token;
|
t0 = tokens[next][0].token;
|
||||||
t1 = tokens[next][1].token;
|
t1 = tokens[next][1].token;
|
||||||
/* Update the cost of each path if we're past the EOB token. */
|
/* Update the cost of each path if we're past the EOB token. */
|
||||||
@@ -558,7 +555,7 @@ static void optimize_b(MACROBLOCK *mb, int i, PLANE_TYPE type,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Now pick the best path through the whole trellis. */
|
/* Now pick the best path through the whole trellis. */
|
||||||
band = bands[i + 1];
|
band = vp9_get_coef_band(i + 1);
|
||||||
VP9_COMBINEENTROPYCONTEXTS(pt, *a, *l);
|
VP9_COMBINEENTROPYCONTEXTS(pt, *a, *l);
|
||||||
rate0 = tokens[next][0].rate;
|
rate0 = tokens[next][0].rate;
|
||||||
rate1 = tokens[next][1].rate;
|
rate1 = tokens[next][1].rate;
|
||||||
|
|||||||
@@ -431,7 +431,7 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
|
|||||||
int c = (type == PLANE_TYPE_Y_NO_DC) ? 1 : 0;
|
int c = (type == PLANE_TYPE_Y_NO_DC) ? 1 : 0;
|
||||||
int cost = 0, seg_eob;
|
int cost = 0, seg_eob;
|
||||||
const int segment_id = xd->mode_info_context->mbmi.segment_id;
|
const int segment_id = xd->mode_info_context->mbmi.segment_id;
|
||||||
const int *scan, *band;
|
const int *scan;
|
||||||
int16_t *qcoeff_ptr = b->qcoeff;
|
int16_t *qcoeff_ptr = b->qcoeff;
|
||||||
const TX_TYPE tx_type = (type == PLANE_TYPE_Y_WITH_DC) ?
|
const TX_TYPE tx_type = (type == PLANE_TYPE_Y_WITH_DC) ?
|
||||||
get_tx_type(xd, b) : DCT_DCT;
|
get_tx_type(xd, b) : DCT_DCT;
|
||||||
@@ -443,7 +443,6 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
|
|||||||
switch (tx_size) {
|
switch (tx_size) {
|
||||||
case TX_4X4:
|
case TX_4X4:
|
||||||
scan = vp9_default_zig_zag1d_4x4;
|
scan = vp9_default_zig_zag1d_4x4;
|
||||||
band = vp9_coef_bands_4x4;
|
|
||||||
seg_eob = 16;
|
seg_eob = 16;
|
||||||
if (type == PLANE_TYPE_Y_WITH_DC) {
|
if (type == PLANE_TYPE_Y_WITH_DC) {
|
||||||
if (tx_type == ADST_DCT) {
|
if (tx_type == ADST_DCT) {
|
||||||
@@ -456,17 +455,14 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
|
|||||||
case TX_8X8:
|
case TX_8X8:
|
||||||
if (type == PLANE_TYPE_Y2) {
|
if (type == PLANE_TYPE_Y2) {
|
||||||
scan = vp9_default_zig_zag1d_4x4;
|
scan = vp9_default_zig_zag1d_4x4;
|
||||||
band = vp9_coef_bands_4x4;
|
|
||||||
seg_eob = 4;
|
seg_eob = 4;
|
||||||
} else {
|
} else {
|
||||||
scan = vp9_default_zig_zag1d_8x8;
|
scan = vp9_default_zig_zag1d_8x8;
|
||||||
band = vp9_coef_bands_8x8;
|
|
||||||
seg_eob = 64;
|
seg_eob = 64;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TX_16X16:
|
case TX_16X16:
|
||||||
scan = vp9_default_zig_zag1d_16x16;
|
scan = vp9_default_zig_zag1d_16x16;
|
||||||
band = vp9_coef_bands_16x16;
|
|
||||||
seg_eob = 256;
|
seg_eob = 256;
|
||||||
if (type == PLANE_TYPE_UV) {
|
if (type == PLANE_TYPE_UV) {
|
||||||
const int uv_idx = ib - 16;
|
const int uv_idx = ib - 16;
|
||||||
@@ -475,7 +471,6 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
|
|||||||
break;
|
break;
|
||||||
case TX_32X32:
|
case TX_32X32:
|
||||||
scan = vp9_default_zig_zag1d_32x32;
|
scan = vp9_default_zig_zag1d_32x32;
|
||||||
band = vp9_coef_bands_32x32;
|
|
||||||
seg_eob = 1024;
|
seg_eob = 1024;
|
||||||
qcoeff_ptr = xd->sb_coeff_data.qcoeff;
|
qcoeff_ptr = xd->sb_coeff_data.qcoeff;
|
||||||
break;
|
break;
|
||||||
@@ -494,24 +489,24 @@ static INLINE int cost_coeffs(MACROBLOCK *mb,
|
|||||||
for (; c < eob; c++) {
|
for (; c < eob; c++) {
|
||||||
int v = qcoeff_ptr[scan[c]];
|
int v = qcoeff_ptr[scan[c]];
|
||||||
int t = vp9_dct_value_tokens_ptr[v].Token;
|
int t = vp9_dct_value_tokens_ptr[v].Token;
|
||||||
cost += token_costs[band[c]][pt][t];
|
cost += token_costs[vp9_get_coef_band(c)][pt][t];
|
||||||
cost += vp9_dct_value_cost_ptr[v];
|
cost += vp9_dct_value_cost_ptr[v];
|
||||||
pt = vp9_get_coef_context(&recent_energy, t);
|
pt = vp9_get_coef_context(&recent_energy, t);
|
||||||
}
|
}
|
||||||
if (c < seg_eob)
|
if (c < seg_eob)
|
||||||
cost += mb->hybrid_token_costs[tx_size][type][band[c]]
|
cost += mb->hybrid_token_costs[tx_size][type][vp9_get_coef_band(c)]
|
||||||
[pt][DCT_EOB_TOKEN];
|
[pt][DCT_EOB_TOKEN];
|
||||||
} else {
|
} else {
|
||||||
int recent_energy = 0;
|
int recent_energy = 0;
|
||||||
for (; c < eob; c++) {
|
for (; c < eob; c++) {
|
||||||
int v = qcoeff_ptr[scan[c]];
|
int v = qcoeff_ptr[scan[c]];
|
||||||
int t = vp9_dct_value_tokens_ptr[v].Token;
|
int t = vp9_dct_value_tokens_ptr[v].Token;
|
||||||
cost += token_costs[band[c]][pt][t];
|
cost += token_costs[vp9_get_coef_band(c)][pt][t];
|
||||||
cost += vp9_dct_value_cost_ptr[v];
|
cost += vp9_dct_value_cost_ptr[v];
|
||||||
pt = vp9_get_coef_context(&recent_energy, t);
|
pt = vp9_get_coef_context(&recent_energy, t);
|
||||||
}
|
}
|
||||||
if (c < seg_eob)
|
if (c < seg_eob)
|
||||||
cost += mb->token_costs[tx_size][type][band[c]]
|
cost += mb->token_costs[tx_size][type][vp9_get_coef_band(c)]
|
||||||
[pt][DCT_EOB_TOKEN];
|
[pt][DCT_EOB_TOKEN];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
int16_t *qcoeff_ptr = b->qcoeff;
|
int16_t *qcoeff_ptr = b->qcoeff;
|
||||||
int seg_eob;
|
int seg_eob;
|
||||||
const int segment_id = xd->mode_info_context->mbmi.segment_id;
|
const int segment_id = xd->mode_info_context->mbmi.segment_id;
|
||||||
const int *bands, *scan;
|
const int *scan;
|
||||||
vp9_coeff_count *counts;
|
vp9_coeff_count *counts;
|
||||||
vp9_coeff_probs *probs;
|
vp9_coeff_probs *probs;
|
||||||
const TX_TYPE tx_type = (type == PLANE_TYPE_Y_WITH_DC) ?
|
const TX_TYPE tx_type = (type == PLANE_TYPE_Y_WITH_DC) ?
|
||||||
@@ -138,7 +138,6 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
default:
|
default:
|
||||||
case TX_4X4:
|
case TX_4X4:
|
||||||
seg_eob = 16;
|
seg_eob = 16;
|
||||||
bands = vp9_coef_bands_4x4;
|
|
||||||
scan = vp9_default_zig_zag1d_4x4;
|
scan = vp9_default_zig_zag1d_4x4;
|
||||||
if (tx_type != DCT_DCT) {
|
if (tx_type != DCT_DCT) {
|
||||||
counts = cpi->hybrid_coef_counts_4x4;
|
counts = cpi->hybrid_coef_counts_4x4;
|
||||||
@@ -156,7 +155,6 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
case TX_8X8:
|
case TX_8X8:
|
||||||
if (type == PLANE_TYPE_Y2) {
|
if (type == PLANE_TYPE_Y2) {
|
||||||
seg_eob = 4;
|
seg_eob = 4;
|
||||||
bands = vp9_coef_bands_4x4;
|
|
||||||
scan = vp9_default_zig_zag1d_4x4;
|
scan = vp9_default_zig_zag1d_4x4;
|
||||||
} else {
|
} else {
|
||||||
#if CONFIG_CNVCONTEXT
|
#if CONFIG_CNVCONTEXT
|
||||||
@@ -164,7 +162,6 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
l_ec = (l[0] + l[1]) != 0;
|
l_ec = (l[0] + l[1]) != 0;
|
||||||
#endif
|
#endif
|
||||||
seg_eob = 64;
|
seg_eob = 64;
|
||||||
bands = vp9_coef_bands_8x8;
|
|
||||||
scan = vp9_default_zig_zag1d_8x8;
|
scan = vp9_default_zig_zag1d_8x8;
|
||||||
}
|
}
|
||||||
if (tx_type != DCT_DCT) {
|
if (tx_type != DCT_DCT) {
|
||||||
@@ -186,7 +183,6 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
seg_eob = 256;
|
seg_eob = 256;
|
||||||
bands = vp9_coef_bands_16x16;
|
|
||||||
scan = vp9_default_zig_zag1d_16x16;
|
scan = vp9_default_zig_zag1d_16x16;
|
||||||
if (tx_type != DCT_DCT) {
|
if (tx_type != DCT_DCT) {
|
||||||
counts = cpi->hybrid_coef_counts_16x16;
|
counts = cpi->hybrid_coef_counts_16x16;
|
||||||
@@ -210,7 +206,6 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
l_ec = l_ec != 0;
|
l_ec = l_ec != 0;
|
||||||
#endif
|
#endif
|
||||||
seg_eob = 1024;
|
seg_eob = 1024;
|
||||||
bands = vp9_coef_bands_32x32;
|
|
||||||
scan = vp9_default_zig_zag1d_32x32;
|
scan = vp9_default_zig_zag1d_32x32;
|
||||||
counts = cpi->coef_counts_32x32;
|
counts = cpi->coef_counts_32x32;
|
||||||
probs = cpi->common.fc.coef_probs_32x32;
|
probs = cpi->common.fc.coef_probs_32x32;
|
||||||
@@ -224,7 +219,7 @@ static void tokenize_b(VP9_COMP *cpi,
|
|||||||
seg_eob = 0;
|
seg_eob = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
const int band = bands[c];
|
const int band = vp9_get_coef_band(c);
|
||||||
int token;
|
int token;
|
||||||
|
|
||||||
if (c < eob) {
|
if (c < eob) {
|
||||||
@@ -703,7 +698,6 @@ static INLINE void stuff_b(VP9_COMP *cpi,
|
|||||||
TX_SIZE tx_size,
|
TX_SIZE tx_size,
|
||||||
int dry_run) {
|
int dry_run) {
|
||||||
const BLOCKD * const b = xd->block + ib;
|
const BLOCKD * const b = xd->block + ib;
|
||||||
const int *bands;
|
|
||||||
vp9_coeff_count *counts;
|
vp9_coeff_count *counts;
|
||||||
vp9_coeff_probs *probs;
|
vp9_coeff_probs *probs;
|
||||||
int pt, band;
|
int pt, band;
|
||||||
@@ -723,7 +717,6 @@ static INLINE void stuff_b(VP9_COMP *cpi,
|
|||||||
switch (tx_size) {
|
switch (tx_size) {
|
||||||
default:
|
default:
|
||||||
case TX_4X4:
|
case TX_4X4:
|
||||||
bands = vp9_coef_bands_4x4;
|
|
||||||
if (tx_type != DCT_DCT) {
|
if (tx_type != DCT_DCT) {
|
||||||
counts = cpi->hybrid_coef_counts_4x4;
|
counts = cpi->hybrid_coef_counts_4x4;
|
||||||
probs = cpi->common.fc.hybrid_coef_probs_4x4;
|
probs = cpi->common.fc.hybrid_coef_probs_4x4;
|
||||||
@@ -739,7 +732,6 @@ static INLINE void stuff_b(VP9_COMP *cpi,
|
|||||||
l_ec = (l[0] + l[1]) != 0;
|
l_ec = (l[0] + l[1]) != 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
bands = vp9_coef_bands_8x8;
|
|
||||||
if (tx_type != DCT_DCT) {
|
if (tx_type != DCT_DCT) {
|
||||||
counts = cpi->hybrid_coef_counts_8x8;
|
counts = cpi->hybrid_coef_counts_8x8;
|
||||||
probs = cpi->common.fc.hybrid_coef_probs_8x8;
|
probs = cpi->common.fc.hybrid_coef_probs_8x8;
|
||||||
@@ -758,7 +750,6 @@ static INLINE void stuff_b(VP9_COMP *cpi,
|
|||||||
l_ec = (l[0] + l[1] + l1[0] + l1[1]) != 0;
|
l_ec = (l[0] + l[1] + l1[0] + l1[1]) != 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
bands = vp9_coef_bands_16x16;
|
|
||||||
if (tx_type != DCT_DCT) {
|
if (tx_type != DCT_DCT) {
|
||||||
counts = cpi->hybrid_coef_counts_16x16;
|
counts = cpi->hybrid_coef_counts_16x16;
|
||||||
probs = cpi->common.fc.hybrid_coef_probs_16x16;
|
probs = cpi->common.fc.hybrid_coef_probs_16x16;
|
||||||
@@ -776,7 +767,6 @@ static INLINE void stuff_b(VP9_COMP *cpi,
|
|||||||
a_ec = a_ec != 0;
|
a_ec = a_ec != 0;
|
||||||
l_ec = l_ec != 0;
|
l_ec = l_ec != 0;
|
||||||
#endif
|
#endif
|
||||||
bands = vp9_coef_bands_32x32;
|
|
||||||
counts = cpi->coef_counts_32x32;
|
counts = cpi->coef_counts_32x32;
|
||||||
probs = cpi->common.fc.coef_probs_32x32;
|
probs = cpi->common.fc.coef_probs_32x32;
|
||||||
break;
|
break;
|
||||||
@@ -784,7 +774,7 @@ static INLINE void stuff_b(VP9_COMP *cpi,
|
|||||||
|
|
||||||
VP9_COMBINEENTROPYCONTEXTS(pt, a_ec, l_ec);
|
VP9_COMBINEENTROPYCONTEXTS(pt, a_ec, l_ec);
|
||||||
|
|
||||||
band = bands[(type == PLANE_TYPE_Y_NO_DC) ? 1 : 0];
|
band = vp9_get_coef_band((type == PLANE_TYPE_Y_NO_DC) ? 1 : 0);
|
||||||
t->Token = DCT_EOB_TOKEN;
|
t->Token = DCT_EOB_TOKEN;
|
||||||
t->context_tree = probs[type][band][pt];
|
t->context_tree = probs[type][band][pt];
|
||||||
t->skip_eob_node = 0;
|
t->skip_eob_node = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user