Merges several experiments

The following five experiments are merged:

newentropy
newupdate
adaptive_entropy (also includes a couple of parameter changes
                  that improves results a little
                  in common/entropymode.c and encoder/modecosts.c
                  that were not merged from the internal branch)
newintramodes
expanded_coef_context

Change-Id: I8a142a831786ee9dc936f22be1d42a8bced7d270
This commit is contained in:
Deb Mukherjee 2012-07-27 11:29:46 -07:00
parent 10a492847f
commit 9984a155d6
30 changed files with 29 additions and 854 deletions

4
configure vendored
View File

@ -220,12 +220,8 @@ EXPERIMENT_LIST="
high_precision_mv
sixteenth_subpel_uv
comp_intra_pred
newentropy
newupdate
superblocks
expanded_coef_context
newintramodes
adaptive_entropy
pred_filter
lossless
hybridtransform

View File

@ -34,9 +34,7 @@ void vpx_log(const char *format, ...);
#define MB_FEATURE_TREE_PROBS 3
#define PREDICTION_PROBS 3
#if CONFIG_NEWENTROPY
#define MBSKIP_CONTEXTS 3
#endif
#define MAX_MB_SEGMENTS 4
@ -82,14 +80,12 @@ typedef enum {
DC_PRED, /* average of above and left pixels */
V_PRED, /* vertical prediction */
H_PRED, /* horizontal prediction */
#if CONFIG_NEWINTRAMODES
D45_PRED, /* Directional 45 deg prediction [anti-clockwise from 0 deg hor] */
D135_PRED, /* Directional 135 deg prediction [anti-clockwise from 0 deg hor] */
D117_PRED, /* Directional 112 deg prediction [anti-clockwise from 0 deg hor] */
D153_PRED, /* Directional 157 deg prediction [anti-clockwise from 0 deg hor] */
D27_PRED, /* Directional 22 deg prediction [anti-clockwise from 0 deg hor] */
D63_PRED, /* Directional 67 deg prediction [anti-clockwise from 0 deg hor] */
#endif
TM_PRED, /* Truemotion prediction */
I8X8_PRED, /* 8x8 based prediction, each 8x8 has its own prediction mode */
B_PRED, /* block based prediction, each block has its own prediction mode */

View File

@ -22,89 +22,57 @@ static const vp8_prob default_coef_probs [BLOCK_TYPES]
/* Coeff Band ( 0 )*/
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }
#endif
},
{
/* Coeff Band ( 1 )*/
{ 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 },
{ 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
{ 90, 116, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
#else
{ 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 2 )*/
{ 1, 98, 248, 255, 236, 226, 255, 255, 128, 128, 128 },
{ 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
{ 64, 128, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
#else
{ 78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 3 )*/
{ 1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 },
{ 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
{ 64, 100, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
#else
{ 77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 4 )*/
{ 1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 },
{ 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
{ 28, 110, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
#else
{ 37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 5 )*/
{ 1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 },
{ 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
{ 90, 90, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
#else
{ 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 6 )*/
{ 1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 },
{ 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
{ 64, 120, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
#else
{ 80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 7 )*/
{ 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 246, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#endif
}
},
{
@ -113,89 +81,57 @@ static const vp8_prob default_coef_probs [BLOCK_TYPES]
/* Coeff Band ( 0 )*/
{ 198, 35, 237, 223, 193, 187, 162, 160, 145, 155, 62 },
{ 131, 45, 198, 221, 172, 176, 220, 157, 252, 221, 1 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
{ 48, 32, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
#else
{ 68, 47, 146, 208, 149, 167, 221, 162, 255, 223, 128 },
#endif
},
{
/* Coeff Band ( 1 )*/
{ 1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 },
{ 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
{ 66, 90, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
#else
{ 81, 99, 181, 242, 176, 190, 249, 202, 255, 255, 128 },
#endif
},
{
/* Coeff Band ( 2 )*/
{ 1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 },
{ 99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
{ 18, 80, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
#else
{ 23, 91, 163, 242, 170, 187, 247, 210, 255, 255, 128 },
#endif
},
{
/* Coeff Band ( 3 )*/
{ 1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 },
{ 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
{ 36, 120, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
#else
{ 44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 4 )*/
{ 1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 },
{ 94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
{ 18, 90, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
#else
{ 22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 5 )*/
{ 1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 },
{ 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
{ 28, 70, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
#else
{ 35, 77, 181, 251, 193, 211, 255, 205, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 6 )*/
{ 1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 },
{ 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
{ 40, 90, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
#else
{ 45, 99, 188, 251, 195, 217, 255, 224, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 7 )*/
{ 1, 1, 251, 255, 213, 255, 128, 128, 128, 128, 128 },
{ 203, 1, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
{ 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
#else
{ 137, 1, 177, 255, 224, 255, 128, 128, 128, 128, 128 },
#endif
}
},
{
@ -204,89 +140,57 @@ static const vp8_prob default_coef_probs [BLOCK_TYPES]
/* Coeff Band ( 0 )*/
{ 253, 9, 248, 251, 207, 208, 255, 192, 128, 128, 128 },
{ 175, 13, 224, 243, 193, 185, 249, 198, 255, 255, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
{ 64, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
#else
{ 73, 17, 171, 221, 161, 179, 236, 167, 255, 234, 128 },
#endif
},
{
/* Coeff Band ( 1 )*/
{ 1, 95, 247, 253, 212, 183, 255, 255, 128, 128, 128 },
{ 239, 90, 244, 250, 211, 209, 255, 255, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
{ 140, 70, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
#else
{ 155, 77, 195, 248, 188, 195, 255, 255, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 2 )*/
{ 1, 24, 239, 251, 218, 219, 255, 205, 128, 128, 128 },
{ 201, 51, 219, 255, 196, 186, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
{ 60, 40, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
#else
{ 69, 46, 190, 239, 201, 218, 255, 228, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 3 )*/
{ 1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 },
{ 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
{ 132, 118, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
#else
{ 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 4 )*/
{ 1, 16, 248, 255, 255, 128, 128, 128, 128, 128, 128 },
{ 190, 36, 230, 255, 236, 255, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 149, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 5 )*/
{ 1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 6 )*/
{ 1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 },
{ 213, 62, 250, 255, 255, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 48, 85, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 55, 93, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 7 )*/
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 },
#endif
}
},
{
@ -295,93 +199,60 @@ static const vp8_prob default_coef_probs [BLOCK_TYPES]
/* Coeff Band ( 0 )*/
{ 202, 24, 213, 235, 186, 191, 220, 160, 240, 175, 255 },
{ 126, 38, 182, 232, 169, 184, 228, 174, 255, 187, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 63, 48, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
{ 54, 40, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
#else
{ 61, 46, 138, 219, 151, 178, 240, 170, 255, 216, 128 },
#endif
},
{
/* Coeff Band ( 1 )*/
{ 1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 },
{ 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 44, 84, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
{ 32, 70, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
#else
{ 39, 77, 162, 232, 172, 180, 245, 178, 255, 255, 128 },
#endif
},
{
/* Coeff Band ( 2 )*/
{ 1, 52, 220, 246, 198, 199, 249, 220, 255, 255, 128 },
{ 124, 74, 191, 243, 183, 193, 250, 221, 255, 255, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
{ 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
#else
{ 24, 71, 130, 219, 154, 170, 243, 182, 255, 255, 128 },
#endif
},
{
/* Coeff Band ( 3 )*/
{ 1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 },
{ 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
{ 26, 104, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
#else
{ 28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 },
#endif
},
{
/* Coeff Band ( 4 )*/
{ 1, 81, 230, 252, 204, 203, 255, 192, 128, 128, 128 },
{ 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
{ 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
#else
{ 20, 95, 153, 243, 164, 173, 255, 203, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 5 )*/
{ 1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 },
{ 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
{ 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
#else
{ 47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 6 )*/
{ 1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 },
{ 141, 84, 213, 252, 201, 202, 255, 219, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
{ 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
#else
{ 42, 80, 160, 240, 162, 185, 255, 205, 128, 128, 128 },
#endif
},
{
/* Coeff Band ( 7 )*/
{ 1, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 244, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
{ 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#else
{ 238, 1, 255, 128, 128, 128, 128, 128, 128, 128, 128 },
#endif
}
}
};
#if CONFIG_EXPANDED_COEF_CONTEXT
static const vp8_prob
vp8_default_coef_probs_8x8[BLOCK_TYPES_8X8]
[COEF_BANDS]
@ -564,164 +435,3 @@ vp8_default_coef_probs_8x8[BLOCK_TYPES_8X8]
}
}
};
#else
static const vp8_prob
vp8_default_coef_probs_8x8[BLOCK_TYPES_8X8]
[COEF_BANDS]
[PREV_COEF_CONTEXTS]
[ENTROPY_NODES] = {
{
/* block Type 0 */
{
/* Coeff Band 0 */
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254}
},
{
/* Coeff Band 1 */
{ 60, 140, 195, 255, 212, 214, 234, 244, 249, 252, 253},
{ 75, 221, 231, 255, 203, 255, 255, 255, 255, 255, 255},
{ 9, 212, 196, 251, 197, 207, 255, 185, 220, 237, 246}
},
{
/* Coeff Band 2 */
{ 1, 227, 226, 255, 215, 215, 235, 245, 250, 252, 253},
{ 5, 163, 209, 255, 212, 212, 255, 255, 255, 255, 255},
{ 1, 133, 203, 255, 210, 220, 255, 255, 255, 255, 255}
},
{
/* Coeff Band 3 */
{ 1, 226, 225, 255, 228, 237, 246, 250, 252, 253, 254},
{ 6, 163, 208, 255, 224, 234, 255, 255, 255, 255, 255},
{ 1, 122, 196, 253, 212, 248, 255, 255, 255, 255, 255}
},
{
/* Coeff Band 4 */
{ 1, 222, 198, 254, 193, 216, 255, 242, 248, 251, 253},
{ 7, 140, 163, 251, 195, 211, 255, 238, 246, 250, 252},
{ 1, 91, 152, 249, 181, 197, 255, 239, 247, 251, 253}
},
{
/* Coeff Band 5 */
{ 1, 226, 218, 255, 216, 242, 255, 255, 255, 255, 255},
{ 6, 154, 191, 255, 218, 240, 255, 255, 255, 255, 255},
{ 1, 111, 184, 255, 210, 225, 255, 255, 255, 255, 255}
},
{
/* Coeff Band 6 */
{ 1, 221, 217, 255, 208, 217, 255, 255, 255, 255, 255},
{ 11, 155, 189, 254, 203, 211, 255, 249, 252, 253, 254},
{ 1, 110, 171, 252, 191, 204, 255, 237, 246, 250, 252}
},
{
/* Coeff Band 7 */
{ 1, 207, 235, 255, 232, 241, 248, 251, 253, 254, 254},
{ 58, 161, 216, 255, 230, 235, 255, 255, 255, 255, 255},
{ 8, 133, 204, 255, 219, 231, 255, 255, 255, 255, 255}
}
},
{
/* block Type 1 */
{
/* Coeff Band 0 */
{ 134, 152, 233, 224, 234, 52, 255, 166, 210, 232, 243},
{ 97, 132, 185, 234, 186, 189, 197, 171, 255, 212, 233},
{ 84, 110, 185, 237, 182, 182, 145, 145, 255, 255, 255}
},
{
/* Coeff Band 1 */
{ 1, 124, 213, 247, 192, 212, 255, 255, 255, 255, 255},
{ 88, 111, 178, 254, 189, 211, 255, 255, 255, 255, 255},
{ 12, 59, 129, 236, 150, 179, 239, 195, 255, 255, 255}
},
{
/* Coeff Band 2 */
{ 1, 102, 225, 255, 210, 240, 247, 251, 253, 254, 254},
{ 110, 78, 195, 254, 200, 191, 255, 255, 255, 255, 255},
{ 37, 63, 177, 255, 194, 195, 225, 240, 247, 251, 253}
},
{
/* Coeff Band 3 */
{ 1, 1, 229, 255, 202, 224, 239, 247, 251, 253, 254},
{ 150, 1, 192, 255, 206, 226, 240, 247, 251, 253, 254},
{ 75, 1, 138, 255, 172, 228, 241, 248, 251, 253, 254}
},
{
/* Coeff Band 4 */
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254}
},
{
/* Coeff Band 5 */
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254}
},
{
/* Coeff Band 6 */
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254}
},
{
/* Coeff Band 7 */
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254},
{ 128, 191, 223, 239, 247, 251, 253, 254, 254, 254, 254}
}
},
{
/* block Type 2 */
{
/* Coeff Band 0 */
{ 11, 181, 226, 199, 183, 255, 255, 255, 255, 255, 255},
{ 2, 147, 185, 248, 163, 180, 255, 236, 245, 250, 252},
{ 1, 123, 157, 238, 154, 176, 255, 226, 255, 255, 255}
},
{
/* Coeff Band 1 */
{ 1, 150, 191, 246, 174, 188, 255, 235, 245, 250, 252},
{ 1, 125, 166, 245, 165, 185, 255, 234, 244, 249, 252},
{ 1, 79, 125, 240, 148, 179, 255, 234, 255, 255, 255}
},
{
/* Coeff Band 2 */
{ 1, 146, 184, 242, 167, 183, 255, 231, 243, 249, 252},
{ 1, 119, 160, 239, 156, 178, 255, 231, 255, 255, 255},
{ 1, 75, 115, 234, 142, 173, 255, 225, 255, 255, 255}
},
{
/* Coeff Band 3 */
{ 1, 150, 189, 244, 169, 183, 255, 234, 244, 249, 252},
{ 1, 123, 162, 243, 161, 180, 255, 233, 244, 249, 252},
{ 1, 76, 120, 238, 148, 178, 255, 230, 255, 255, 255}
},
{
/* Coeff Band 4 */
{ 1, 163, 202, 252, 188, 204, 255, 249, 252, 253, 254},
{ 1, 136, 180, 251, 181, 201, 255, 247, 251, 253, 254},
{ 1, 92, 146, 249, 170, 197, 255, 246, 250, 252, 253}
},
{
/* Coeff Band 5 */
{ 1, 156, 195, 249, 179, 193, 255, 242, 248, 251, 253},
{ 1, 128, 169, 248, 171, 192, 255, 242, 248, 251, 253},
{ 1, 84, 132, 245, 158, 187, 255, 240, 247, 251, 253}
},
{
/* Coeff Band 6 */
{ 1, 172, 209, 251, 192, 201, 255, 243, 249, 252, 253},
{ 1, 143, 185, 250, 184, 199, 255, 242, 248, 251, 253},
{ 1, 95, 147, 247, 168, 190, 255, 240, 247, 251, 253}
},
{
/* Coeff Band 7 */
{ 1, 178, 229, 255, 218, 223, 255, 255, 255, 255, 255},
{ 36, 155, 210, 255, 212, 221, 255, 255, 255, 255, 255},
{ 6, 117, 180, 254, 199, 216, 255, 252, 253, 254, 254}
}
}
};
#endif

View File

@ -47,17 +47,13 @@ DECLARE_ALIGNED(16, const unsigned char, vp8_norm[256]) = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
DECLARE_ALIGNED(16, cuchar, vp8_coef_bands[16]) =
{ 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7};
DECLARE_ALIGNED(16, cuchar, vp8_coef_bands[16]) = {
0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7
};
DECLARE_ALIGNED(16, cuchar, vp8_prev_token_class[MAX_ENTROPY_TOKENS]) =
#if CONFIG_EXPANDED_COEF_CONTEXT
{ 0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 0};
#else
{
0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0
};
#endif
DECLARE_ALIGNED(16, cuchar, vp8_prev_token_class[MAX_ENTROPY_TOKENS]) = {
0, 1, 2, 2, 3, 3, 3, 3, 3, 3, 3, 0
};
DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]) = {
0, 1, 4, 8,
@ -181,10 +177,6 @@ vp8_extra_bit_struct vp8_extra_bits[12] = {
{ 0, 0, 0, 0}
};
#if CONFIG_NEWUPDATE
const vp8_prob updprobs[4] = {128, 136, 120, 112};
#endif
#include "default_coef_probs.h"
void vp8_default_coef_probs(VP8_COMMON *pc) {
@ -201,8 +193,6 @@ void vp8_coef_tree_initialize() {
vp8_tokens_from_tree(vp8_coef_encodings, vp8_coef_tree);
}
#if CONFIG_ADAPTIVE_ENTROPY
// #define COEF_COUNT_TESTING
#define COEF_COUNT_SAT 24
@ -274,10 +264,8 @@ void vp8_adapt_coef_probs(VP8_COMMON *cm) {
for (i = 0; i < BLOCK_TYPES; ++i)
for (j = 0; j < COEF_BANDS; ++j)
for (k = 0; k < PREV_COEF_CONTEXTS; ++k) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
vp8_tree_probs_from_distribution(
MAX_ENTROPY_TOKENS, vp8_coef_encodings, vp8_coef_tree,
coef_probs, branch_ct, cm->fc.coef_counts [i][j][k],
@ -298,10 +286,8 @@ void vp8_adapt_coef_probs(VP8_COMMON *cm) {
for (i = 0; i < BLOCK_TYPES_8X8; ++i)
for (j = 0; j < COEF_BANDS; ++j)
for (k = 0; k < PREV_COEF_CONTEXTS; ++k) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
vp8_tree_probs_from_distribution(
MAX_ENTROPY_TOKENS, vp8_coef_encodings, vp8_coef_tree,
coef_probs, branch_ct, cm->fc.coef_counts_8x8 [i][j][k],
@ -319,4 +305,3 @@ void vp8_adapt_coef_probs(VP8_COMMON *cm) {
}
}
}
#endif

View File

@ -89,17 +89,11 @@ extern DECLARE_ALIGNED(64, const unsigned char, vp8_coef_bands_8x8[64]);
distinct bands). */
/*# define DC_TOKEN_CONTEXTS 3*/ /* 00, 0!0, !0!0 */
#if CONFIG_EXPANDED_COEF_CONTEXT
#define PREV_COEF_CONTEXTS 4
#else
#define PREV_COEF_CONTEXTS 3
#endif
#if CONFIG_NEWUPDATE
#define SUBEXP_PARAM 4 /* Subexponential code parameter */
#define MODULUS_PARAM 13 /* Modulus parameter */
#define COEFUPDATETYPE 1 /* coef update type to use (1/2/3) */
#endif
extern DECLARE_ALIGNED(16, const unsigned char, vp8_prev_token_class[MAX_ENTROPY_TOKENS]);
@ -118,7 +112,5 @@ extern DECLARE_ALIGNED(64, const int, vp8_default_zig_zag1d_8x8[64]);
extern short vp8_default_zig_zag_mask_8x8[64];// int64_t
void vp8_coef_tree_initialize(void);
#if CONFIG_ADAPTIVE_ENTROPY
void vp8_adapt_coef_probs(struct VP8Common *);
#endif
#endif

View File

@ -17,7 +17,6 @@
const unsigned int kf_y_mode_cts[8][VP8_YMODES] = {
#if CONFIG_NEWINTRAMODES
/* DC V H D45 135 117 153 D27 D63 TM i8x8 BPRED */
{12, 6, 5, 5, 5, 5, 5, 5, 5, 2, 22, 200},
{25, 13, 13, 7, 7, 7, 7, 7, 7, 6, 27, 160},
@ -27,30 +26,14 @@ const unsigned int kf_y_mode_cts[8][VP8_YMODES] = {
{68, 33, 35, 8, 8, 8, 8, 8, 8, 17, 20, 68},
{78, 38, 38, 8, 8, 8, 8, 8, 8, 19, 16, 52},
{89, 42, 42, 8, 8, 8, 8, 8, 8, 21, 12, 34},
#else
{17, 6, 5, 2, 22, 203},
{27, 13, 13, 6, 27, 170},
{35, 17, 18, 9, 26, 152},
{45, 22, 24, 12, 27, 126},
{58, 26, 29, 13, 26, 104},
{73, 33, 36, 17, 20, 78},
{88, 38, 39, 19, 16, 57},
{99, 42, 43, 21, 12, 39},
#endif
};
static const unsigned int y_mode_cts [VP8_YMODES] =
#if CONFIG_NEWINTRAMODES
static const unsigned int y_mode_cts [VP8_YMODES] = {
/* DC V H D45 135 117 153 D27 D63 TM i8x8 BPRED */
{98, 19, 15, 14, 14, 14, 14, 12, 12, 13, 16, 70};
#else
{
106, 25, 21, 13, 16, 74
};
#endif
98, 19, 15, 14, 14, 14, 14, 12, 12, 13, 16, 70
};
static const unsigned int uv_mode_cts [VP8_YMODES] [VP8_UV_MODES] = {
#if CONFIG_NEWINTRAMODES
/* DC V H D45 135 117 153 D27 D63 TM */
{ 200, 15, 15, 10, 10, 10, 10, 10, 10, 6}, /* DC */
{ 130, 75, 10, 10, 10, 10, 10, 10, 10, 6}, /* V */
@ -64,28 +47,14 @@ static const unsigned int uv_mode_cts [VP8_YMODES] [VP8_UV_MODES] = {
{ 160, 30, 30, 10, 10, 10, 10, 10, 10, 16}, /* TM */
{ 132, 46, 40, 10, 10, 10, 10, 10, 10, 18}, /* i8x8 - never used */
{ 150, 35, 41, 10, 10, 10, 10, 10, 10, 10}, /* BPRED */
#else
{ 210, 20, 20, 6},
{ 180, 60, 10, 6},
{ 150, 20, 80, 6},
{ 170, 35, 35, 16},
{ 142, 51, 45, 18}, /* never used */
{ 160, 40, 46, 10},
#endif
};
static const unsigned int i8x8_mode_cts [VP8_I8X8_MODES] =
#if CONFIG_NEWINTRAMODES
static const unsigned int i8x8_mode_cts [VP8_I8X8_MODES] = {
/* DC V H D45 135 117 153 D27 D63 TM */
{73, 49, 61, 30, 30, 30, 30, 30, 30, 13};
#else
{
93, 69, 81, 13
};
#endif
73, 49, 61, 30, 30, 30, 30, 30, 30, 13
};
static const unsigned int kf_uv_mode_cts [VP8_YMODES] [VP8_UV_MODES] = {
#if CONFIG_NEWINTRAMODES
// DC V H D45 135 117 153 D27 D63 TM
{ 160, 24, 24, 20, 20, 20, 20, 20, 20, 8}, /* DC */
{ 102, 64, 30, 20, 20, 20, 20, 20, 20, 10}, /* V */
@ -99,14 +68,6 @@ static const unsigned int kf_uv_mode_cts [VP8_YMODES] [VP8_UV_MODES] = {
{ 132, 36, 30, 20, 20, 20, 20, 20, 20, 18}, /* TM */
{ 122, 41, 35, 20, 20, 20, 20, 20, 20, 18}, /* i8x8 - never used */
{ 122, 41, 35, 20, 20, 20, 20, 20, 20, 18}, /* BPRED */
#else
{ 180, 34, 34, 8},
{ 132, 74, 40, 10},
{ 132, 40, 74, 10},
{ 152, 46, 40, 18},
{ 142, 51, 45, 18}, /* never used */
{ 142, 51, 45, 18},
#endif
};
static const unsigned int bmode_cts[VP8_BINTRAMODES] = {
@ -201,7 +162,6 @@ const vp8_tree_index vp8_bmode_tree[VP8_BINTRAMODES * 2 - 2] = /* INTRAMODECONTE
-B_HD_PRED, -B_HU_PRED /* 8 = HD_NODE */
};
#if CONFIG_NEWINTRAMODES
/* Again, these trees use the same probability indices as their
explicitly-programmed predecessors. */
const vp8_tree_index vp8_ymode_tree[VP8_YMODES * 2 - 2] = {
@ -256,39 +216,6 @@ const vp8_tree_index vp8_uv_mode_tree[VP8_UV_MODES * 2 - 2] = {
-H_PRED, -TM_PRED
};
#else /* CONFIG_NEWINTRAMODES */
/* Again, these trees use the same probability indices as their
explicitly-programmed predecessors. */
const vp8_tree_index vp8_ymode_tree[10] = {
-DC_PRED, 2,
4, 6,
-V_PRED, -H_PRED,
-TM_PRED, 8,
-B_PRED, -I8X8_PRED
};
const vp8_tree_index vp8_kf_ymode_tree[10] = {
-B_PRED, 2,
4, 6,
-DC_PRED, -V_PRED,
-H_PRED, 8,
-TM_PRED, -I8X8_PRED
};
const vp8_tree_index vp8_i8x8_mode_tree[6] = {
-DC_PRED, 2,
-V_PRED, 4,
-H_PRED, -TM_PRED
};
const vp8_tree_index vp8_uv_mode_tree[6] = {
-DC_PRED, 2,
-V_PRED, 4,
-H_PRED, -TM_PRED
};
#endif /* CONFIG_NEWINTRAMODES */
const vp8_tree_index vp8_mbsplit_tree[6] = {
-3, 2,
-2, 4,
@ -457,7 +384,7 @@ void vp8_accum_mv_refs(VP8_COMMON *pc,
}
#define MVREF_COUNT_SAT 20
#define MVREF_MAX_UPDATE_FACTOR 128
#define MVREF_MAX_UPDATE_FACTOR 144
void vp8_update_mode_context(VP8_COMMON *pc) {
int i, j;
int (*mv_ref_ct)[4][2];
@ -475,7 +402,6 @@ void vp8_update_mode_context(VP8_COMMON *pc) {
for (i = 0; i < 4; i++) {
int this_prob;
int count = mv_ref_ct[j][i][0] + mv_ref_ct[j][i][1];
#if CONFIG_ADAPTIVE_ENTROPY
int factor;
{
this_prob = count > 0 ? 256 * mv_ref_ct[j][i][0] / count : 128;
@ -486,14 +412,6 @@ void vp8_update_mode_context(VP8_COMMON *pc) {
this_prob = this_prob ? (this_prob < 255 ? this_prob : 255) : 1;
mode_context[j][i] = this_prob;
}
#else
/* preventing rare occurances from skewing the probs */
if (count >= 4) {
this_prob = 256 * mv_ref_ct[j][i][0] / count;
this_prob = this_prob ? (this_prob < 255 ? this_prob : 255) : 1;
mode_context[j][i] = this_prob;
}
#endif
}
}
}
@ -529,10 +447,9 @@ void print_mv_ref_cts(VP8_COMMON *pc) {
}
}
#if CONFIG_ADAPTIVE_ENTROPY
// #define MODE_COUNT_TESTING
#define MODE_COUNT_SAT 16
#define MODE_MAX_UPDATE_FACTOR 128
#define MODE_COUNT_SAT 20
#define MODE_MAX_UPDATE_FACTOR 144
void vp8_adapt_mode_probs(VP8_COMMON *cm) {
int i, t, count, factor;
unsigned int branch_ct[32][2];
@ -671,4 +588,3 @@ void vp8_adapt_mode_probs(VP8_COMMON *cm) {
else cm->fc.mbsplit_prob[t] = prob;
}
}
#endif

View File

@ -66,7 +66,5 @@ extern void vp8_accum_mv_refs(VP8_COMMON *pc,
void vp8_default_bmode_probs(vp8_prob dest [VP8_BINTRAMODES - 1]);
void vp8_kf_default_bmode_probs(vp8_prob dest [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES - 1]);
#if CONFIG_ADAPTIVE_ENTROPY
void vp8_adapt_mode_probs(struct VP8Common *);
#endif
#endif

View File

@ -278,7 +278,6 @@ void vp8_entropy_mv_init() {
#endif
}
#if CONFIG_ADAPTIVE_ENTROPY
// #define MV_COUNT_TESTING
#define MV_COUNT_SAT 16
#define MV_MAX_UPDATE_FACTOR 128
@ -412,4 +411,3 @@ void vp8_adapt_mv_probs(VP8_COMMON *cm) {
}
#endif
}
#endif /* CONFIG_ADAPTIVE_ENTROPY */

View File

@ -132,14 +132,12 @@ static void lf_init_lut(loop_filter_info_n *lfi) {
}
lfi->mode_lf_lut[DC_PRED] = 1;
#if CONFIG_NEWINTRAMODES
lfi->mode_lf_lut[D45_PRED] = 1;
lfi->mode_lf_lut[D135_PRED] = 1;
lfi->mode_lf_lut[D117_PRED] = 1;
lfi->mode_lf_lut[D153_PRED] = 1;
lfi->mode_lf_lut[D27_PRED] = 1;
lfi->mode_lf_lut[D63_PRED] = 1;
#endif
lfi->mode_lf_lut[V_PRED] = 1;
lfi->mode_lf_lut[H_PRED] = 1;
lfi->mode_lf_lut[TM_PRED] = 1;

View File

@ -55,7 +55,6 @@ typedef struct frame_contexts {
#if CONFIG_HIGH_PRECISION_MV
MV_CONTEXT_HP mvc_hp[2];
#endif
#if CONFIG_ADAPTIVE_ENTROPY
MV_CONTEXT pre_mvc[2];
#if CONFIG_HIGH_PRECISION_MV
MV_CONTEXT_HP pre_mvc_hp[2];
@ -83,7 +82,6 @@ typedef struct frame_contexts {
#if CONFIG_HIGH_PRECISION_MV
unsigned int MVcount_hp [2] [MVvals_hp];
#endif
#endif /* CONFIG_ADAPTIVE_ENTROPY */
int mode_context[6][4];
int mode_context_a[6][4];
int vp8_mode_contexts[6][4];
@ -249,9 +247,7 @@ typedef struct VP8Common {
vp8_prob prob_comppred[COMP_PRED_CONTEXTS];
#if CONFIG_NEWENTROPY
vp8_prob mbskip_pred_probs[MBSKIP_CONTEXTS];
#endif
FRAME_CONTEXT lfc_a; /* last alt ref entropy */
FRAME_CONTEXT lfc; /* last frame entropy */

View File

@ -31,14 +31,12 @@ static const unsigned char MB_PREDICTION_MODE_colors[MB_MODE_COUNT][3] = {
{ RGB_TO_YUV(0x98FB98) }, /* PaleGreen */
{ RGB_TO_YUV(0x00FF00) }, /* Green */
{ RGB_TO_YUV(0xADFF2F) }, /* GreenYellow */
#if CONFIG_NEWINTRAMODES
{ RGB_TO_YUV(0x8F0000) }, /* Dark Red */
{ RGB_TO_YUV(0x008F8F) }, /* Dark Cyan */
{ RGB_TO_YUV(0x008F8F) }, /* Dark Cyan */
{ RGB_TO_YUV(0x008F8F) }, /* Dark Cyan */
{ RGB_TO_YUV(0x8F0000) }, /* Dark Red */
{ RGB_TO_YUV(0x8F0000) }, /* Dark Red */
#endif
{ RGB_TO_YUV(0x228B22) }, /* ForestGreen */
{ RGB_TO_YUV(0x006400) }, /* DarkGreen */
{ RGB_TO_YUV(0x98F5FF) }, /* Cadet Blue */

View File

@ -57,12 +57,10 @@ unsigned char get_pred_context(VP8_COMMON *const cm,
break;
#if CONFIG_NEWENTROPY
case PRED_MBSKIP:
pred_context = (m - 1)->mbmi.mb_skip_coeff +
(m - cm->mode_info_stride)->mbmi.mb_skip_coeff;
break;
#endif
default:
// TODO *** add error trap code.
@ -100,11 +98,9 @@ vp8_prob get_pred_prob(VP8_COMMON *const cm,
pred_probability = cm->prob_comppred[pred_context];
break;
#if CONFIG_NEWENTROPY
case PRED_MBSKIP:
pred_probability = cm->mbskip_pred_probs[pred_context];
break;
#endif
default:
// TODO *** add error trap code.
@ -130,11 +126,9 @@ unsigned char get_pred_flag(MACROBLOCKD *const xd,
pred_flag = xd->mode_info_context->mbmi.ref_predicted;
break;
#if CONFIG_NEWENTROPY
case PRED_MBSKIP:
pred_flag = xd->mode_info_context->mbmi.mb_skip_coeff;
break;
#endif
default:
// TODO *** add error trap code.
@ -159,11 +153,9 @@ void set_pred_flag(MACROBLOCKD *const xd,
xd->mode_info_context->mbmi.ref_predicted = pred_flag;
break;
#if CONFIG_NEWENTROPY
case PRED_MBSKIP:
xd->mode_info_context->mbmi.mb_skip_coeff = pred_flag;
break;
#endif
default:
// TODO *** add error trap code.

View File

@ -21,10 +21,7 @@ typedef enum {
PRED_SEG_ID = 0, // Segment identifier
PRED_REF = 1,
PRED_COMP = 2,
#if CONFIG_NEWENTROPY
PRED_MBSKIP = 3,
#endif
} PRED_ID;

View File

@ -18,7 +18,6 @@
* vp8_build_intra_predictors_mbuv_s(MACROBLOCKD *x).
*/
#if CONFIG_NEWINTRAMODES
void d27_predictor(unsigned char *ypred_ptr, int y_stride, int n,
unsigned char *yabove_row, unsigned char *yleft_col) {
int r, c, h, w, v;
@ -196,7 +195,6 @@ void d153_predictor(unsigned char *ypred_ptr, int y_stride, int n,
ypred_ptr += y_stride;
}
}
#endif /* CONFIG_NEWINTRAMODES */
void vp8_recon_intra_mbuv(const vp8_recon_rtcd_vtable_t *rtcd, MACROBLOCKD *x) {
int i;
@ -293,7 +291,6 @@ void vp8_build_intra_predictors_mby_internal(MACROBLOCKD *x, unsigned char *ypre
}
break;
#if CONFIG_NEWINTRAMODES
case D45_PRED: {
d45_predictor(ypred_ptr, y_stride, 16, yabove_row, yleft_col);
}
@ -318,7 +315,6 @@ void vp8_build_intra_predictors_mby_internal(MACROBLOCKD *x, unsigned char *ypre
d63_predictor(ypred_ptr, y_stride, 16, yabove_row, yleft_col);
}
break;
#endif
#if CONIFG_I8X8
case I8X8_PRED:
#endif
@ -475,7 +471,6 @@ void vp8_build_intra_predictors_mbuv_internal(MACROBLOCKD *x,
}
break;
#if CONFIG_NEWINTRAMODES
case D45_PRED: {
d45_predictor(upred_ptr, uv_stride, 8, uabove_row, uleft_col);
d45_predictor(vpred_ptr, uv_stride, 8, vabove_row, vleft_col);
@ -506,7 +501,6 @@ void vp8_build_intra_predictors_mbuv_internal(MACROBLOCKD *x,
d63_predictor(vpred_ptr, uv_stride, 8, vabove_row, vleft_col);
}
break;
#endif
case B_PRED:
case NEARESTMV:
case NEARMV:
@ -617,7 +611,6 @@ void vp8_intra8x8_predict(BLOCKD *x,
}
}
break;
#if CONFIG_NEWINTRAMODES
case D45_PRED: {
d45_predictor(predictor, 16, 8, yabove_row, yleft_col);
}
@ -642,7 +635,6 @@ void vp8_intra8x8_predict(BLOCKD *x,
d63_predictor(predictor, 16, 8, yabove_row, yleft_col);
}
break;
#endif
}
}
@ -732,7 +724,6 @@ void vp8_intra_uv4x4_predict(BLOCKD *x,
}
}
break;
#if CONFIG_NEWINTRAMODES
case D45_PRED: {
d45_predictor(predictor, 8, 4, above_row, left_col);
}
@ -757,7 +748,6 @@ void vp8_intra_uv4x4_predict(BLOCKD *x,
d63_predictor(predictor, 8, 4, above_row, left_col);
}
break;
#endif
}
}

View File

@ -13,7 +13,6 @@
#define __INC_RECONINTRA_H
#include "blockd.h"
#if CONFIG_NEWINTRAMODES
void d45_predictor(unsigned char *ypred_ptr, int y_stride, int n,
unsigned char *yabove_row, unsigned char *yleft_col);
void d135_predictor(unsigned char *ypred_ptr, int y_stride, int n,
@ -26,7 +25,6 @@ void d27_predictor(unsigned char *ypred_ptr, int y_stride, int n,
unsigned char *yabove_row, unsigned char *yleft_col);
void d64_predictor(unsigned char *ypred_ptr, int y_stride, int n,
unsigned char *yabove_row, unsigned char *yleft_col);
#endif /* CONFIG_NEWINTRAMODES */
extern void init_intra_left_above_pixels(MACROBLOCKD *x);

View File

@ -81,12 +81,13 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) {
rtcd->recon.recon2 = vp8_recon2b_sse2;
rtcd->recon.recon4 = vp8_recon4b_sse2;
rtcd->recon.copy16x16 = vp8_copy_mem16x16_sse2;
#if CONFIG_NEWINTRAMODES == 0
/* these are disable because of unsupported diagonal pred modes
rtcd->recon.build_intra_predictors_mbuv =
vp8_build_intra_predictors_mbuv_sse2;
rtcd->recon.build_intra_predictors_mbuv_s =
vp8_build_intra_predictors_mbuv_s_sse2;
#endif
*/
// rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_sse2;
@ -129,12 +130,12 @@ void vp8_arch_x86_common_init(VP8_COMMON *ctx) {
rtcd->subpix.bilinear8x8 = vp8_bilinear_predict8x8_ssse3;
#endif
#if CONFIG_NEWINTRAMODES == 0
/* these are disable because of unsupported diagonal pred modes
rtcd->recon.build_intra_predictors_mbuv =
vp8_build_intra_predictors_mbuv_ssse3;
rtcd->recon.build_intra_predictors_mbuv_s =
vp8_build_intra_predictors_mbuv_s_ssse3;
#endif
*/
}
#endif

View File

@ -50,7 +50,6 @@ void vp8dx_bool_decoder_fill(BOOL_DECODER *br) {
}
#if CONFIG_NEWUPDATE
static int get_unsigned_bits(unsigned num_values) {
int cat = 0;
if ((num_values--) <= 1) return 0;
@ -99,4 +98,3 @@ int vp8_decode_term_subexp(BOOL_DECODER *br, int k, int num_syms) {
}
return word;
}
#endif

View File

@ -41,11 +41,9 @@ int vp8dx_start_decode(BOOL_DECODER *br,
void vp8dx_bool_decoder_fill(BOOL_DECODER *br);
#if CONFIG_NEWUPDATE
int vp8_decode_uniform(BOOL_DECODER *br, int n);
int vp8_decode_term_subexp(BOOL_DECODER *br, int k, int num_syms);
int inv_recenter_nonneg(int v, int m);
#endif
/*The refill loop is used in several places, so define it in a macro to make
sure they're all consistent.

View File

@ -97,12 +97,8 @@ static void vp8_kfread_modes(VP8D_COMP *pbi,
m->mbmi.segment_id, SEG_LVL_EOB) ||
(get_segdata(&pbi->mb,
m->mbmi.segment_id, SEG_LVL_EOB) != 0))) {
#if CONFIG_NEWENTROPY
MACROBLOCKD *const xd = & pbi->mb;
m->mbmi.mb_skip_coeff = vp8_read(bc, get_pred_prob(cm, xd, PRED_MBSKIP));
#else
m->mbmi.mb_skip_coeff = vp8_read(bc, pbi->prob_skip_false);
#endif
} else {
if (segfeature_active(&pbi->mb,
m->mbmi.segment_id, SEG_LVL_EOB) &&
@ -442,19 +438,11 @@ static void mb_mode_mv_init(VP8D_COMP *pbi) {
MACROBLOCKD *const xd = & pbi->mb;
#endif
#if CONFIG_NEWENTROPY
vpx_memset(cm->mbskip_pred_probs, 0, sizeof(cm->mbskip_pred_probs));
#else
pbi->prob_skip_false = 0;
#endif
if (pbi->common.mb_no_coeff_skip) {
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; ++k)
cm->mbskip_pred_probs[k] = (vp8_prob)vp8_read_literal(bc, 8);
#else
pbi->prob_skip_false = (vp8_prob)vp8_read_literal(bc, 8);
#endif
}
if (cm->frame_type != KEY_FRAME) {
@ -600,11 +588,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
(get_segdata(xd, mbmi->segment_id, SEG_LVL_EOB) != 0))) {
// Read the macroblock coeff skip flag if this feature is in use,
// else default to 0
#if CONFIG_NEWENTROPY
mbmi->mb_skip_coeff = vp8_read(bc, get_pred_prob(cm, xd, PRED_MBSKIP));
#else
mbmi->mb_skip_coeff = vp8_read(bc, pbi->prob_skip_false);
#endif
} else {
if (segfeature_active(xd,
mbmi->segment_id, SEG_LVL_EOB) &&
@ -680,9 +664,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
vp8_treed_read(bc, vp8_mbsplit_tree, cm->fc.mbsplit_prob);
const int num_p = vp8_mbsplit_count [s];
int j = 0;
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.mbsplit_counts[s]++;
#endif
mbmi->need_to_clamp_mvs = 0;
do { /* for each subset j */
@ -702,27 +684,21 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
}
mv_contz = vp8_mv_cont(&leftmv, &abovemv);
blockmode = sub_mv_ref(bc, cm->fc.sub_mv_ref_prob [mv_contz]);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.sub_mv_ref_counts[mv_contz][blockmode - LEFT4X4]++;
#endif
switch (blockmode) {
case NEW4X4:
#if CONFIG_HIGH_PRECISION_MV
if (xd->allow_high_precision_mv) {
read_mv_hp(bc, &blockmv.as_mv, (const MV_CONTEXT_HP *) mvc_hp);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount_hp[0][mv_max_hp + (blockmv.as_mv.row)]++;
cm->fc.MVcount_hp[1][mv_max_hp + (blockmv.as_mv.col)]++;
#endif
} else
#endif
{
read_mv(bc, &blockmv.as_mv, (const MV_CONTEXT *) mvc);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount[0][mv_max + (blockmv.as_mv.row >> 1)]++;
cm->fc.MVcount[1][mv_max + (blockmv.as_mv.col >> 1)]++;
#endif
}
blockmv.as_mv.row += best_mv.as_mv.row;
blockmv.as_mv.col += best_mv.as_mv.col;
@ -731,18 +707,14 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
#if CONFIG_HIGH_PRECISION_MV
if (xd->allow_high_precision_mv) {
read_mv_hp(bc, &secondmv.as_mv, (const MV_CONTEXT_HP *) mvc_hp);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount_hp[0][mv_max_hp + (secondmv.as_mv.row)]++;
cm->fc.MVcount_hp[1][mv_max_hp + (secondmv.as_mv.col)]++;
#endif
} else
#endif
{
read_mv(bc, &secondmv.as_mv, (const MV_CONTEXT *) mvc);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount[0][mv_max + (secondmv.as_mv.row >> 1)]++;
cm->fc.MVcount[1][mv_max + (secondmv.as_mv.col >> 1)]++;
#endif
}
secondmv.as_mv.row += best_mv_second.as_mv.row;
secondmv.as_mv.col += best_mv_second.as_mv.col;
@ -851,18 +823,14 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
#if CONFIG_HIGH_PRECISION_MV
if (xd->allow_high_precision_mv) {
read_mv_hp(bc, &mv->as_mv, (const MV_CONTEXT_HP *) mvc_hp);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount_hp[0][mv_max_hp + (mv->as_mv.row)]++;
cm->fc.MVcount_hp[1][mv_max_hp + (mv->as_mv.col)]++;
#endif
} else
#endif
{
read_mv(bc, &mv->as_mv, (const MV_CONTEXT *) mvc);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount[0][mv_max + (mv->as_mv.row >> 1)]++;
cm->fc.MVcount[1][mv_max + (mv->as_mv.col >> 1)]++;
#endif
}
mv->as_mv.row += best_mv.as_mv.row;
mv->as_mv.col += best_mv.as_mv.col;
@ -882,18 +850,14 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
if (xd->allow_high_precision_mv) {
read_mv_hp(bc, &mbmi->second_mv.as_mv,
(const MV_CONTEXT_HP *) mvc_hp);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount_hp[0][mv_max_hp + (mbmi->second_mv.as_mv.row)]++;
cm->fc.MVcount_hp[1][mv_max_hp + (mbmi->second_mv.as_mv.col)]++;
#endif
} else
#endif
{
read_mv(bc, &mbmi->second_mv.as_mv, (const MV_CONTEXT *) mvc);
#if CONFIG_ADAPTIVE_ENTROPY
cm->fc.MVcount[0][mv_max + (mbmi->second_mv.as_mv.row >> 1)]++;
cm->fc.MVcount[1][mv_max + (mbmi->second_mv.as_mv.col >> 1)]++;
#endif
}
mbmi->second_mv.as_mv.row += best_mv_second.as_mv.row;
mbmi->second_mv.as_mv.col += best_mv_second.as_mv.col;
@ -920,9 +884,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
else {
mbmi->mode = (MB_PREDICTION_MODE)
vp8_read_ymode(bc, pbi->common.fc.ymode_prob);
#if CONFIG_ADAPTIVE_ENTROPY
pbi->common.fc.ymode_counts[mbmi->mode]++;
#endif
}
#if CONFIG_COMP_INTRA_PRED
mbmi->second_mode = (MB_PREDICTION_MODE)(DC_PRED - 1);
@ -936,9 +898,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
#endif
do {
mi->bmi[j].as_mode.first = (B_PREDICTION_MODE)vp8_read_bmode(bc, pbi->common.fc.bmode_prob);
#if CONFIG_ADAPTIVE_ENTROPY
pbi->common.fc.bmode_counts[mi->bmi[j].as_mode.first]++;
#endif
#if CONFIG_COMP_INTRA_PRED
if (use_comp_pred) {
mi->bmi[j].as_mode.second = (B_PREDICTION_MODE)vp8_read_bmode(bc, pbi->common.fc.bmode_prob);
@ -959,9 +919,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
mi->bmi[ib + 1].as_mode.first = mode8x8;
mi->bmi[ib + 4].as_mode.first = mode8x8;
mi->bmi[ib + 5].as_mode.first = mode8x8;
#if CONFIG_ADAPTIVE_ENTROPY
pbi->common.fc.i8x8_mode_counts[mode8x8]++;
#endif
#if CONFIG_COMP_INTRA_PRED
mi->bmi[ib + 0].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1);
mi->bmi[ib + 1].as_mode.second = (MB_PREDICTION_MODE)(DC_PRED - 1);
@ -972,9 +930,7 @@ static void read_mb_modes_mv(VP8D_COMP *pbi, MODE_INFO *mi, MB_MODE_INFO *mbmi,
} else {
mbmi->uv_mode = (MB_PREDICTION_MODE)vp8_read_uv_mode(bc,
pbi->common.fc.uv_mode_prob[mbmi->mode]);
#if CONFIG_ADAPTIVE_ENTROPY
pbi->common.fc.uv_mode_counts[mbmi->mode][mbmi->uv_mode]++;
#endif
}
#if CONFIG_COMP_INTRA_PRED

View File

@ -46,7 +46,6 @@ int dec_debug = 0;
#define COEFCOUNT_TESTING
#if CONFIG_NEWUPDATE
static int merge_index(int v, int n, int modulus) {
int max1 = (n - 1 - modulus / 2) / modulus + 1;
@ -79,7 +78,6 @@ static vp8_prob read_prob_diff_update(vp8_reader *const bc, int oldp) {
int delp = vp8_decode_term_subexp(bc, SUBEXP_PARAM, 255);
return (vp8_prob)inv_remap_prob(delp, oldp);
}
#endif
void vp8cx_init_de_quantizer(VP8D_COMP *pbi) {
int i;
@ -808,7 +806,6 @@ static void init_frame(VP8D_COMP *pbi) {
}
#if CONFIG_NEWUPDATE
static void read_coef_probs3(VP8D_COMP *pbi) {
const vp8_prob grpupd = 216;
int i, j, k, l;
@ -820,11 +817,9 @@ static void read_coef_probs3(VP8D_COMP *pbi) {
// printf("Decoding %d\n", l);
for (j = !i; j < COEF_BANDS; j++)
for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
{
vp8_prob *const p = pc->fc.coef_probs [i][j][k] + l;
int u = vp8_read(bc, COEF_UPDATE_PROB);
@ -840,11 +835,9 @@ static void read_coef_probs3(VP8D_COMP *pbi) {
if (vp8_read(bc, grpupd)) {
for (j = !i; j < COEF_BANDS; j++)
for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
{
vp8_prob *const p = pc->fc.coef_probs_8x8 [i][j][k] + l;
int u = vp8_read(bc, COEF_UPDATE_PROB_8X8);
@ -867,11 +860,9 @@ static void read_coef_probs2(VP8D_COMP *pbi) {
for (i = 0; i < BLOCK_TYPES; i++)
for (j = !i; j < COEF_BANDS; j++)
for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
{
vp8_prob *const p = pc->fc.coef_probs [i][j][k] + l;
int u = vp8_read(bc, COEF_UPDATE_PROB);
@ -886,11 +877,9 @@ static void read_coef_probs2(VP8D_COMP *pbi) {
for (i = 0; i < BLOCK_TYPES_8X8; i++)
for (j = !i; j < COEF_BANDS; j++)
for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
{
vp8_prob *const p = pc->fc.coef_probs_8x8 [i][j][k] + l;
@ -902,7 +891,6 @@ static void read_coef_probs2(VP8D_COMP *pbi) {
}
}
}
#endif
static void read_coef_probs(VP8D_COMP *pbi) {
int i, j, k, l;
@ -913,26 +901,16 @@ static void read_coef_probs(VP8D_COMP *pbi) {
if (vp8_read_bit(bc)) {
/* read coef probability tree */
for (i = 0; i < BLOCK_TYPES; i++)
#if CONFIG_NEWUPDATE
for (j = !i; j < COEF_BANDS; j++)
#else
for (j = 0; j < COEF_BANDS; j++)
#endif
for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
for (l = 0; l < ENTROPY_NODES; l++) {
vp8_prob *const p = pc->fc.coef_probs [i][j][k] + l;
if (vp8_read(bc, COEF_UPDATE_PROB)) {
#if CONFIG_NEWUPDATE
*p = read_prob_diff_update(bc, *p);
#else
*p = (vp8_prob)vp8_read_literal(bc, 8);
#endif
}
}
}
@ -942,27 +920,17 @@ static void read_coef_probs(VP8D_COMP *pbi) {
if (pbi->common.txfm_mode == ALLOW_8X8 && vp8_read_bit(bc)) {
// read coef probability tree
for (i = 0; i < BLOCK_TYPES_8X8; i++)
#if CONFIG_NEWUPDATE
for (j = !i; j < COEF_BANDS; j++)
#else
for (j = 0; j < COEF_BANDS; j++)
#endif
for (k = 0; k < PREV_COEF_CONTEXTS; k++) {
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
for (l = 0; l < ENTROPY_NODES; l++) {
vp8_prob *const p = pc->fc.coef_probs_8x8 [i][j][k] + l;
if (vp8_read(bc, COEF_UPDATE_PROB_8X8)) {
#if CONFIG_NEWUPDATE
*p = read_prob_diff_update(bc, *p);
#else
*p = (vp8_prob)vp8_read_literal(bc, 8);
#endif
}
}
}
@ -1352,7 +1320,6 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
fclose(z);
}
#if CONFIG_ADAPTIVE_ENTROPY
vp8_copy(pbi->common.fc.pre_coef_probs, pbi->common.fc.coef_probs);
vp8_copy(pbi->common.fc.pre_coef_probs_8x8, pbi->common.fc.coef_probs_8x8);
vp8_copy(pbi->common.fc.pre_ymode_prob, pbi->common.fc.ymode_prob);
@ -1379,10 +1346,9 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
#endif
vp8_zero(pbi->common.fc.mv_ref_ct);
vp8_zero(pbi->common.fc.mv_ref_ct_a);
#endif /* CONFIG_ADAPTIVE_ENTROPY */
#if CONFIG_NEWUPDATE && COEFUPDATETYPE == 2
#if COEFUPDATETYPE == 2
read_coef_probs2(pbi);
#elif CONFIG_NEWUPDATE && COEFUPDATETYPE == 3
#elif COEFUPDATETYPE == 3
read_coef_probs3(pbi);
#else
read_coef_probs(pbi);
@ -1410,11 +1376,6 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
pc->mb_no_coeff_skip = (int)vp8_read_bit(bc);
vp8_decode_mode_mvs(pbi);
#if CONFIG_ADAPTIVE_ENTROPY == 0
if (pc->frame_type != KEY_FRAME) {
vp8_update_mode_context(&pbi->common);
}
#endif
vpx_memset(pc->above_context, 0, sizeof(ENTROPY_CONTEXT_PLANES) * pc->mb_cols);
@ -1443,14 +1404,12 @@ int vp8_decode_frame(VP8D_COMP *pbi) {
}
/* vpx_log("Decoder: Frame Decoded, Size Roughly:%d bytes \n",bc->pos+pbi->bc2.pos); */
#if CONFIG_ADAPTIVE_ENTROPY
vp8_adapt_coef_probs(pc);
if (pc->frame_type != KEY_FRAME) {
vp8_adapt_mode_probs(pc);
vp8_adapt_mv_probs(pc);
vp8_update_mode_context(&pbi->common);
}
#endif
/* If this was a kf or Gf note the Q used */
if ((pc->frame_type == KEY_FRAME) ||

View File

@ -96,14 +96,9 @@ DECLARE_ALIGNED(16, extern const unsigned char, vp8_norm[256]);
// #define PREV_CONTEXT_INC(val) (2+((val)>2))
// #define PREV_CONTEXT_INC(val) (vp8_prev_token_class[(val)])
#if CONFIG_EXPANDED_COEF_CONTEXT
#define PREV_CONTEXT_INC(val) (vp8_prev_token_class[(val)>10?10:(val)])
#else
#define PREV_CONTEXT_INC(val) (2)
#endif
#if CONFIG_ADAPTIVE_ENTROPY
int get_token(int v) {
if (v < 0) v = -v;
if (v == 0) return ZERO_TOKEN;
@ -203,7 +198,6 @@ void static count_tokens_8x8(INT16 *qcoeff_ptr, int block, int type,
fc->coef_counts_8x8[type][band][pt][DCT_EOB_TOKEN]++;
}
}
#endif
static int vp8_get_signed(BOOL_DECODER *br, int value_to_sign) {
@ -335,7 +329,6 @@ static int vp8_decode_coefs(VP8D_COMP *dx, const MACROBLOCKD *xd,
val += CAT6_MIN_VAL;
WRITE_COEF_CONTINUE(val);
}
#if CONFIG_ADAPTIVE_ENTROPY
if (block_type == TX_4X4)
#if CONFIG_HYBRIDTRANSFORM
@ -346,7 +339,6 @@ static int vp8_decode_coefs(VP8D_COMP *dx, const MACROBLOCKD *xd,
else
count_tokens_8x8(qcoeff_ptr, i, type, a, l, c, seg_eob, fc);
#endif
return c;
}

View File

@ -55,7 +55,6 @@ int count_mb_seg[4] = { 0, 0, 0, 0 };
#define vp8_cost_upd ((int)(vp8_cost_one(upd) - vp8_cost_zero(upd)) >> 8)
#define vp8_cost_upd256 ((int)(vp8_cost_one(upd) - vp8_cost_zero(upd)))
#if CONFIG_NEWUPDATE
#define SEARCH_NEWP
static int update_bits[255];
@ -96,7 +95,6 @@ static int prob_diff_update_cost(vp8_prob newp, vp8_prob oldp) {
int delp = remap_prob(newp, oldp);
return update_bits[delp] * 256;
}
#endif
static void update_mode(
vp8_writer *const w,
@ -153,7 +151,6 @@ static void update_mbintra_mode_probs(VP8_COMP *cpi) {
}
void update_skip_probs(VP8_COMP *cpi) {
#if CONFIG_NEWENTROPY
VP8_COMMON *const pc = & cpi->common;
int prob_skip_false[3] = {0, 0, 0};
int k;
@ -174,25 +171,6 @@ void update_skip_probs(VP8_COMP *cpi) {
pc->mbskip_pred_probs[k] = prob_skip_false[k];
}
#else
int prob_skip_false = 0;
if ((cpi->skip_false_count + cpi->skip_true_count)) {
prob_skip_false = cpi->skip_false_count * 256 /
(cpi->skip_false_count + cpi->skip_true_count);
if (prob_skip_false <= 1)
prob_skip_false = 1;
if (prob_skip_false > 255)
prob_skip_false = 255;
} else
prob_skip_false = 128;
cpi->prob_skip_false = prob_skip_false;
#endif
}
// This function updates the reference frame prediction stats
@ -282,7 +260,6 @@ static int prob_update_savings(const unsigned int *ct,
return (old_b - new_b - update_b);
}
#if CONFIG_NEWUPDATE
static int prob_diff_update_savings(const unsigned int *ct,
const vp8_prob oldp, const vp8_prob newp,
const vp8_prob upd) {
@ -316,7 +293,6 @@ static int prob_diff_update_savings_search(const unsigned int *ct,
*bestp = bestnewp;
return bestsavings;
}
#endif
static void pack_tokens_c(vp8_writer *w, const TOKENEXTRA *p, int xcount) {
const TOKENEXTRA *const stop = p + xcount;
@ -716,16 +692,11 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi) {
#endif
if (pc->mb_no_coeff_skip) {
#if CONFIG_NEWENTROPY
int k;
update_skip_probs(cpi);
for (k = 0; k < MBSKIP_CONTEXTS; ++k)
vp8_write_literal(w, pc->mbskip_pred_probs[k], 8);
#else
update_skip_probs(cpi);
vp8_write_literal(w, cpi->prob_skip_false, 8);
#endif
}
#if CONFIG_PRED_FILTER
@ -847,12 +818,8 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi) {
if (pc->mb_no_coeff_skip &&
(!segfeature_active(xd, segment_id, SEG_LVL_EOB) ||
(get_segdata(xd, segment_id, SEG_LVL_EOB) != 0))) {
#if CONFIG_NEWENTROPY
vp8_encode_bool(w, mi->mb_skip_coeff,
get_pred_prob(pc, xd, PRED_MBSKIP));
#else
vp8_encode_bool(w, mi->mb_skip_coeff, cpi->prob_skip_false);
#endif
}
// Encode the reference frame.
@ -994,9 +961,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi) {
#endif
write_split(w, mi->partitioning, cpi->common.fc.mbsplit_prob);
#if CONFIG_ADAPTIVE_ENTROPY
cpi->mbsplit_count[mi->partitioning]++;
#endif
do {
B_PREDICTION_MODE blockmode;
@ -1022,9 +987,7 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi) {
write_sub_mv_ref(w, blockmode,
cpi->common.fc.sub_mv_ref_prob [mv_contz]);
#if CONFIG_ADAPTIVE_ENTROPY
cpi->sub_mv_ref_count[mv_contz][blockmode - LEFT4X4]++;
#endif
if (blockmode == NEW4X4) {
#ifdef ENTROPY_STATS
active_section = 11;
@ -1092,18 +1055,13 @@ static void write_kfmodes(VP8_COMP *cpi) {
int i;
int row, col;
int mb_row, mb_col;
#if CONFIG_NEWENTROPY
int prob_skip_false[3] = {0, 0, 0};
#else
int prob_skip_false = 0;
#endif
int row_delta[4] = { 0, +1, 0, -1};
int col_delta[4] = { +1, -1, +1, +1};
// printf("write_kfmodes\n");
if (c->mb_no_coeff_skip) {
// Divide by 0 check. 0 case possible with segment features
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; ++k) {
if ((cpi->skip_false_count[k] + cpi->skip_true_count[k])) {
@ -1121,22 +1079,6 @@ static void write_kfmodes(VP8_COMP *cpi) {
c->mbskip_pred_probs[k] = prob_skip_false[k];
vp8_write_literal(bc, prob_skip_false[k], 8);
}
#else
if ((cpi->skip_false_count + cpi->skip_true_count)) {
prob_skip_false = cpi->skip_false_count * 256 /
(cpi->skip_false_count + cpi->skip_true_count);
if (prob_skip_false <= 1)
prob_skip_false = 1;
if (prob_skip_false > 255)
prob_skip_false = 255;
} else
prob_skip_false = 255;
cpi->prob_skip_false = prob_skip_false;
vp8_write_literal(bc, prob_skip_false, 8);
#endif
}
if (!c->kf_ymode_probs_update) {
@ -1179,12 +1121,8 @@ static void write_kfmodes(VP8_COMP *cpi) {
if (c->mb_no_coeff_skip &&
(!segfeature_active(xd, segment_id, SEG_LVL_EOB) ||
(get_segdata(xd, segment_id, SEG_LVL_EOB) != 0))) {
#if CONFIG_NEWENTROPY
vp8_encode_bool(bc, m->mbmi.mb_skip_coeff,
get_pred_prob(c, xd, PRED_MBSKIP));
#else
vp8_encode_bool(bc, m->mbmi.mb_skip_coeff, prob_skip_false);
#endif
}
kfwrite_ymode(bc, ym,
c->kf_ymode_prob[c->kf_ymode_probs_index]);
@ -1284,10 +1222,8 @@ void build_coeff_contexts(VP8_COMP *cpi) {
#ifdef ENTROPY_STATS
int t;
#endif
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
vp8_tree_probs_from_distribution(
MAX_ENTROPY_TOKENS, vp8_coef_encodings, vp8_coef_tree,
cpi->frame_coef_probs [i][j][k],
@ -1323,10 +1259,8 @@ void build_coeff_contexts(VP8_COMP *cpi) {
#ifdef ENTROPY_STATS
int t = 0; /* token/prob index */
#endif
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
vp8_tree_probs_from_distribution(
MAX_ENTROPY_TOKENS, vp8_coef_encodings, vp8_coef_tree,
cpi->frame_coef_probs_8x8 [i][j][k],
@ -1351,7 +1285,6 @@ void build_coeff_contexts(VP8_COMP *cpi) {
}
#if CONFIG_NEWUPDATE
static void update_coef_probs3(VP8_COMP *cpi) {
const vp8_prob grpupd = 216;
int i, j, k, t;
@ -1377,10 +1310,8 @@ static void update_coef_probs3(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB;
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
@ -1414,10 +1345,8 @@ static void update_coef_probs3(VP8_COMP *cpi) {
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct [i][j][k][t], *Pold, &newp, upd);
@ -1459,10 +1388,8 @@ static void update_coef_probs3(VP8_COMP *cpi) {
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct_8x8 [i][j][k][t],
@ -1498,10 +1425,8 @@ static void update_coef_probs3(VP8_COMP *cpi) {
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct_8x8 [i][j][k][t],
@ -1555,10 +1480,8 @@ static void update_coef_probs2(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB;
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
@ -1593,10 +1516,8 @@ static void update_coef_probs2(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB;
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct [i][j][k][t], *Pold, &newp, upd);
@ -1635,10 +1556,8 @@ static void update_coef_probs2(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB_8X8;
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct_8x8 [i][j][k][t],
@ -1675,10 +1594,8 @@ static void update_coef_probs2(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB_8X8;
int s;
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct_8x8 [i][j][k][t],
@ -1707,7 +1624,6 @@ static void update_coef_probs2(VP8_COMP *cpi) {
}
}
}
#endif
static void update_coef_probs(VP8_COMP *cpi) {
int i = 0;
@ -1726,11 +1642,7 @@ static void update_coef_probs(VP8_COMP *cpi) {
/* dry run to see if there is any udpate at all needed */
savings = 0;
do {
#if CONFIG_NEWUPDATE
int j = !i;
#else
int j = 0; /* token/prob index */
#endif
do {
int k = 0;
int prev_coef_savings[ENTROPY_NODES] = {0};
@ -1742,11 +1654,9 @@ static void update_coef_probs(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB;
int s = prev_coef_savings[t];
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if CONFIG_NEWUPDATE && defined(SEARCH_NEWP)
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct [i][j][k][t],
*Pold, &newp, upd);
@ -1774,22 +1684,14 @@ static void update_coef_probs(VP8_COMP *cpi) {
// printf("Update %d %d, savings %d\n", update[0], update[1], savings);
/* Is coef updated at all */
#if CONFIG_NEWUPDATE
if (update[1] == 0 || savings < 0)
#else
if (update[1] == 0)
#endif
{
vp8_write_bit(w, 0);
} else {
vp8_write_bit(w, 1);
i = 0;
do {
#if CONFIG_NEWUPDATE
int j = !i;
#else
int j = 0; /* token/prob index */
#endif
do {
int k = 0;
int prev_coef_savings[ENTROPY_NODES] = {0};
@ -1803,12 +1705,10 @@ static void update_coef_probs(VP8_COMP *cpi) {
const vp8_prob upd = COEF_UPDATE_PROB;
int s = prev_coef_savings[t];
int u = 0;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if CONFIG_NEWUPDATE && defined(SEARCH_NEWP)
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(
cpi->frame_branch_ct [i][j][k][t],
*Pold, &newp, upd);
@ -1830,11 +1730,7 @@ static void update_coef_probs(VP8_COMP *cpi) {
#endif
if (u) {
/* send/use new probability */
#if CONFIG_NEWUPDATE
write_prob_diff_update(w, newp, *Pold);
#else
vp8_write_literal(w, newp, 8);
#endif
*Pold = newp;
}
} while (++t < ENTROPY_NODES);
@ -1852,11 +1748,7 @@ static void update_coef_probs(VP8_COMP *cpi) {
savings = 0;
i = 0;
do {
#if CONFIG_NEWUPDATE
int j = !i;
#else
int j = 0; /* token/prob index */
#endif
do {
int k = 0;
do {
@ -1869,11 +1761,9 @@ static void update_coef_probs(VP8_COMP *cpi) {
const vp8_prob oldp = *Pold;
int s, u;
const vp8_prob upd = COEF_UPDATE_PROB_8X8;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) || (i > 0 && j == 0)))
continue;
#endif
#if CONFIG_NEWUPDATE && defined(SEARCH_NEWP)
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(ct, oldp, &newp, upd);
u = s > 0 && newp != oldp ? 1 : 0;
if (u)
@ -1893,22 +1783,14 @@ static void update_coef_probs(VP8_COMP *cpi) {
} while (++j < COEF_BANDS);
} while (++i < BLOCK_TYPES_8X8);
#if CONFIG_NEWUPDATE
if (update[1] == 0 || savings < 0)
#else
if (update[1] == 0)
#endif
{
vp8_write_bit(w, 0);
} else {
vp8_write_bit(w, 1);
i = 0;
do {
#if CONFIG_NEWUPDATE
int j = !i;
#else
int j = 0; /* token/prob index */
#endif
do {
int k = 0;
do {
@ -1920,12 +1802,10 @@ static void update_coef_probs(VP8_COMP *cpi) {
const vp8_prob oldp = *Pold;
const vp8_prob upd = COEF_UPDATE_PROB_8X8;
int s, u;
#if CONFIG_EXPANDED_COEF_CONTEXT
if (k >= 3 && ((i == 0 && j == 1) ||
(i > 0 && j == 0)))
continue;
#endif
#if CONFIG_NEWUPDATE && defined(SEARCH_NEWP)
#if defined(SEARCH_NEWP)
s = prob_diff_update_savings_search(ct, oldp, &newp, upd);
u = s > 0 && newp != oldp ? 1 : 0;
#else
@ -1939,11 +1819,7 @@ static void update_coef_probs(VP8_COMP *cpi) {
#endif
if (u) {
/* send/use new probability */
#if CONFIG_NEWUPDATE
write_prob_diff_update(w, newp, oldp);
#else
vp8_write_literal(w, newp, 8);
#endif
*Pold = newp;
}
} while (++t < MAX_ENTROPY_TOKENS - 1);
@ -2034,9 +1910,7 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
Sectionbits[active_section = 1] += sizeof(VP8_HEADER) * 8 * 256;
#endif
#if CONFIG_NEWUPDATE
compute_update_table();
#endif
// vp8_kf_default_bmode_probs() is called in vp8_setup_key_frame() once for each
// K frame before encode frame. pc->kf_bmode_prob doesn't get changed anywhere
@ -2351,7 +2225,6 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
vp8_clear_system_state(); // __asm emms;
#if CONFIG_ADAPTIVE_ENTROPY
vp8_copy(cpi->common.fc.pre_coef_probs, cpi->common.fc.coef_probs);
vp8_copy(cpi->common.fc.pre_coef_probs_8x8, cpi->common.fc.coef_probs_8x8);
vp8_copy(cpi->common.fc.pre_ymode_prob, cpi->common.fc.ymode_prob);
@ -2368,10 +2241,9 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
vp8_zero(cpi->mbsplit_count);
vp8_zero(cpi->common.fc.mv_ref_ct)
vp8_zero(cpi->common.fc.mv_ref_ct_a)
#endif
#if CONFIG_NEWUPDATE && COEFUPDATETYPE == 2
#if COEFUPDATETYPE == 2
update_coef_probs2(cpi);
#elif CONFIG_NEWUPDATE && COEFUPDATETYPE == 3
#elif COEFUPDATETYPE == 3
update_coef_probs3(cpi);
#else
update_coef_probs(cpi);
@ -2393,9 +2265,7 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
#endif
} else {
pack_inter_mode_mvs(cpi);
#if CONFIG_ADAPTIVE_ENTROPY == 0
vp8_update_mode_context(&cpi->common);
#endif
#ifdef ENTROPY_STATS
active_section = 1;

View File

@ -65,7 +65,6 @@ void vp8_encode_value(BOOL_CODER *br, int data, int bits) {
}
#if CONFIG_NEWUPDATE
int recenter_nonneg(int v, int m) {
if (v > (m << 1)) return v;
else if (v >= m) return ((v - m) << 1);
@ -153,4 +152,3 @@ int vp8_count_term_subexp(int word, int k, int num_syms) {
}
return count;
}
#endif

View File

@ -40,13 +40,11 @@ extern void vp8_encode_value(BOOL_CODER *br, int data, int bits);
extern void vp8_stop_encode(BOOL_CODER *bc);
extern const unsigned int vp8_prob_cost[256];
#if CONFIG_NEWENTROPY
extern void vp8_encode_uniform(BOOL_CODER *bc, int v, int n);
extern void vp8_encode_term_subexp(BOOL_CODER *bc, int v, int k, int n);
extern int vp8_count_uniform(int v, int n);
extern int vp8_count_term_subexp(int v, int k, int n);
extern int recenter_nonneg(int v, int m);
#endif
DECLARE_ALIGNED(16, extern const unsigned char, vp8_norm[256]);

View File

@ -411,14 +411,12 @@ static void update_state(VP8_COMP *cpi, MACROBLOCK *x, PICK_MODE_CONTEXT *ctx) {
THR_DC /*DC_PRED*/,
THR_V_PRED /*V_PRED*/,
THR_H_PRED /*H_PRED*/,
#if CONFIG_NEWINTRAMODES
THR_D45_PRED /*D45_PRED*/,
THR_D135_PRED /*D135_PRED*/,
THR_D117_PRED /*D117_PRED*/,
THR_D153_PRED /*D153_PRED*/,
THR_D27_PRED /*D27_PRED*/,
THR_D63_PRED /*D63_PRED*/,
#endif
THR_TM /*TM_PRED*/,
THR_I8X8_PRED /*I8X8_PRED*/,
THR_B_PRED /*B_PRED*/,
@ -1052,10 +1050,8 @@ void init_encode_frame_mb_context(VP8_COMP *cpi) {
vp8_zero(cpi->y_uv_mode_count)
vp8_zero(cpi->sub_mv_ref_count)
vp8_zero(cpi->mbsplit_count)
#if CONFIG_ADAPTIVE_ENTROPY
vp8_zero(cpi->common.fc.mv_ref_ct)
vp8_zero(cpi->common.fc.mv_ref_ct_a)
#endif
// vp8_zero(cpi->uv_mode_count)
x->mvc = cm->fc.mvc;
@ -1169,13 +1165,8 @@ static void encode_frame_internal(VP8_COMP *cpi) {
cpi->prediction_error = 0;
cpi->intra_error = 0;
#if CONFIG_NEWENTROPY
cpi->skip_true_count[0] = cpi->skip_true_count[1] = cpi->skip_true_count[2] = 0;
cpi->skip_false_count[0] = cpi->skip_false_count[1] = cpi->skip_false_count[2] = 0;
#else
cpi->skip_true_count = 0;
cpi->skip_false_count = 0;
#endif
#if CONFIG_PRED_FILTER
if (cm->current_video_frame == 0) {
@ -1689,29 +1680,19 @@ void vp8cx_encode_inter_macroblock
}
#endif
} else {
#if CONFIG_NEWENTROPY
int mb_skip_context =
cpi->common.mb_no_coeff_skip ?
(x->e_mbd.mode_info_context - 1)->mbmi.mb_skip_coeff +
(x->e_mbd.mode_info_context - cpi->common.mode_info_stride)->mbmi.mb_skip_coeff :
0;
#endif
if (cpi->common.mb_no_coeff_skip) {
xd->mode_info_context->mbmi.mb_skip_coeff = 1;
#if CONFIG_NEWENTROPY
cpi->skip_true_count[mb_skip_context]++;
#else
cpi->skip_true_count++;
#endif
vp8_fix_contexts(xd);
} else {
vp8_stuff_mb(cpi, xd, t);
xd->mode_info_context->mbmi.mb_skip_coeff = 0;
#if CONFIG_NEWENTROPY
cpi->skip_false_count[mb_skip_context]++;
#else
cpi->skip_false_count++;
#endif
}
}
}

View File

@ -32,13 +32,8 @@ void vp8_init_mode_costs(VP8_COMP *c) {
vp8_cost_tokens((int *)c->mb.inter_bmode_costs, x->fc.bmode_prob, T);
}
#if CONFIG_ADAPTIVE_ENTROPY
vp8_cost_tokens((int *)c->mb.inter_bmode_costs,
vp8_sub_mv_ref_prob, vp8_sub_mv_ref_tree);
#else
vp8_cost_tokens(c->mb.inter_bmode_costs,
vp8_sub_mv_ref_prob, vp8_sub_mv_ref_tree);
#endif
x->fc.sub_mv_ref_prob[0], vp8_sub_mv_ref_tree);
vp8_cost_tokens(c->mb.mbmode_cost[1], x->fc.ymode_prob, vp8_ymode_tree);
vp8_cost_tokens(c->mb.mbmode_cost[0],

View File

@ -173,11 +173,7 @@ extern void (*vp8_short_fdct8x4)(short *input, short *output, int pitch);
extern void vp8cx_init_quantizer(VP8_COMP *cpi);
#if CONFIG_NEWENTROPY
int vp8cx_base_skip_false_prob[QINDEX_RANGE][3];
#else
int vp8cx_base_skip_false_prob[QINDEX_RANGE];
#endif
// Tables relating active max Q to active min Q
static int kf_low_motion_minq[QINDEX_RANGE];
@ -265,7 +261,6 @@ void init_base_skip_probs() {
skip_prob = 1;
else if (skip_prob > 255)
skip_prob = 255;
#if CONFIG_NEWENTROPY
vp8cx_base_skip_false_prob[i][1] = skip_prob;
skip_prob = t * 0.75;
@ -281,9 +276,6 @@ void init_base_skip_probs() {
else if (skip_prob > 255)
skip_prob = 255;
vp8cx_base_skip_false_prob[i][0] = skip_prob;
#else
vp8cx_base_skip_false_prob[i] = skip_prob;
#endif
}
}
void update_base_skip_probs(VP8_COMP *cpi) {
@ -293,41 +285,25 @@ void update_base_skip_probs(VP8_COMP *cpi) {
update_skip_probs(cpi);
if (cm->refresh_alt_ref_frame) {
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; ++k)
cpi->last_skip_false_probs[2][k] = cm->mbskip_pred_probs[k];
#else
cpi->last_skip_false_probs[2] = cpi->prob_skip_false;
#endif
cpi->last_skip_probs_q[2] = cm->base_qindex;
} else if (cpi->common.refresh_golden_frame) {
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; ++k)
cpi->last_skip_false_probs[1][k] = cm->mbskip_pred_probs[k];
#else
cpi->last_skip_false_probs[1] = cpi->prob_skip_false;
#endif
cpi->last_skip_probs_q[1] = cm->base_qindex;
} else {
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; ++k)
cpi->last_skip_false_probs[0][k] = cm->mbskip_pred_probs[k];
#else
cpi->last_skip_false_probs[0] = cpi->prob_skip_false;
#endif
cpi->last_skip_probs_q[0] = cm->base_qindex;
// update the baseline table for the current q
#if CONFIG_NEWENTROPY
for (k = 0; k < MBSKIP_CONTEXTS; ++k)
cpi->base_skip_false_prob[cm->base_qindex][k] =
cm->mbskip_pred_probs[k];
#else
cpi->base_skip_false_prob[cm->base_qindex] = cpi->prob_skip_false;
#endif
}
}
@ -755,14 +731,12 @@ void vp8_set_speed_features(VP8_COMP *cpi) {
sf->thresh_mult[THR_V_PRED ] = 1000;
sf->thresh_mult[THR_H_PRED ] = 1000;
#if CONFIG_NEWINTRAMODES
sf->thresh_mult[THR_D45_PRED ] = 1000;
sf->thresh_mult[THR_D135_PRED] = 1000;
sf->thresh_mult[THR_D117_PRED] = 1000;
sf->thresh_mult[THR_D153_PRED] = 1000;
sf->thresh_mult[THR_D27_PRED ] = 1000;
sf->thresh_mult[THR_D63_PRED ] = 1000;
#endif
sf->thresh_mult[THR_B_PRED ] = 2000;
sf->thresh_mult[THR_I8X8_PRED] = 2000;
sf->thresh_mult[THR_TM ] = 1000;
@ -810,14 +784,12 @@ void vp8_set_speed_features(VP8_COMP *cpi) {
sf->thresh_mult[THR_NEARMV_FILT ] = 0;
sf->thresh_mult[THR_V_PRED ] = 1000;
sf->thresh_mult[THR_H_PRED ] = 1000;
#if CONFIG_NEWINTRAMODES
sf->thresh_mult[THR_D45_PRED ] = 1000;
sf->thresh_mult[THR_D135_PRED] = 1000;
sf->thresh_mult[THR_D117_PRED] = 1000;
sf->thresh_mult[THR_D153_PRED] = 1000;
sf->thresh_mult[THR_D27_PRED ] = 1000;
sf->thresh_mult[THR_D63_PRED ] = 1000;
#endif
sf->thresh_mult[THR_B_PRED ] = 2500;
sf->thresh_mult[THR_I8X8_PRED] = 2500;
sf->thresh_mult[THR_TM ] = 1000;
@ -868,14 +840,12 @@ void vp8_set_speed_features(VP8_COMP *cpi) {
sf->thresh_mult[THR_NEARMV ] = 0;
sf->thresh_mult[THR_V_PRED ] = 1000;
sf->thresh_mult[THR_H_PRED ] = 1000;
#if CONFIG_NEWINTRAMODES
sf->thresh_mult[THR_D45_PRED ] = 1000;
sf->thresh_mult[THR_D135_PRED] = 1000;
sf->thresh_mult[THR_D117_PRED] = 1000;
sf->thresh_mult[THR_D153_PRED] = 1000;
sf->thresh_mult[THR_D27_PRED ] = 1000;
sf->thresh_mult[THR_D63_PRED ] = 1000;
#endif
sf->thresh_mult[THR_B_PRED ] = 2500;
sf->thresh_mult[THR_I8X8_PRED] = 2500;
sf->thresh_mult[THR_TM ] = 1000;
@ -952,14 +922,12 @@ void vp8_set_speed_features(VP8_COMP *cpi) {
sf->thresh_mult[THR_TM ] = 1500;
sf->thresh_mult[THR_V_PRED ] = 1500;
sf->thresh_mult[THR_H_PRED ] = 1500;
#if CONFIG_NEWINTRAMODES
sf->thresh_mult[THR_D45_PRED ] = 1500;
sf->thresh_mult[THR_D135_PRED] = 1500;
sf->thresh_mult[THR_D117_PRED] = 1500;
sf->thresh_mult[THR_D153_PRED] = 1500;
sf->thresh_mult[THR_D27_PRED ] = 1500;
sf->thresh_mult[THR_D63_PRED ] = 1500;
#endif
sf->thresh_mult[THR_B_PRED ] = 5000;
sf->thresh_mult[THR_I8X8_PRED] = 5000;
@ -1029,14 +997,12 @@ void vp8_set_speed_features(VP8_COMP *cpi) {
sf->thresh_mult[THR_TM ] = 2000;
sf->thresh_mult[THR_V_PRED ] = 2000;
sf->thresh_mult[THR_H_PRED ] = 2000;
#if CONFIG_NEWINTRAMODES
sf->thresh_mult[THR_D45_PRED ] = 2000;
sf->thresh_mult[THR_D135_PRED] = 2000;
sf->thresh_mult[THR_D117_PRED] = 2000;
sf->thresh_mult[THR_D153_PRED] = 2000;
sf->thresh_mult[THR_D27_PRED ] = 2000;
sf->thresh_mult[THR_D63_PRED ] = 2000;
#endif
sf->thresh_mult[THR_B_PRED ] = 7500;
sf->thresh_mult[THR_I8X8_PRED] = 7500;
@ -3243,51 +3209,31 @@ static void encode_frame_to_data_rate
// setup skip prob for costing in mode/mv decision
if (cpi->common.mb_no_coeff_skip) {
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; k++)
cm->mbskip_pred_probs[k] = cpi->base_skip_false_prob[Q][k];
#else
cpi->prob_skip_false = cpi->base_skip_false_prob[Q];
#endif
if (cm->frame_type != KEY_FRAME) {
if (cpi->common.refresh_alt_ref_frame) {
#if CONFIG_NEWENTROPY
for (k = 0; k < MBSKIP_CONTEXTS; k++) {
if (cpi->last_skip_false_probs[2][k] != 0)
cm->mbskip_pred_probs[k] = cpi->last_skip_false_probs[2][k];
}
#else
if (cpi->last_skip_false_probs[2] != 0)
cpi->prob_skip_false = cpi->last_skip_false_probs[2];
#endif
} else if (cpi->common.refresh_golden_frame) {
#if CONFIG_NEWENTROPY
for (k = 0; k < MBSKIP_CONTEXTS; k++) {
if (cpi->last_skip_false_probs[1][k] != 0)
cm->mbskip_pred_probs[k] = cpi->last_skip_false_probs[1][k];
}
#else
if (cpi->last_skip_false_probs[1] != 0)
cpi->prob_skip_false = cpi->last_skip_false_probs[1];
#endif
} else {
#if CONFIG_NEWENTROPY
int k;
for (k = 0; k < MBSKIP_CONTEXTS; k++) {
if (cpi->last_skip_false_probs[0][k] != 0)
cm->mbskip_pred_probs[k] = cpi->last_skip_false_probs[0][k];
}
#else
if (cpi->last_skip_false_probs[0] != 0)
cpi->prob_skip_false = cpi->last_skip_false_probs[0];
#endif
}
// as this is for cost estimate, let's make sure it does not
// get extreme either way
#if CONFIG_NEWENTROPY
{
int k;
for (k = 0; k < MBSKIP_CONTEXTS; ++k) {
@ -3301,18 +3247,6 @@ static void encode_frame_to_data_rate
cm->mbskip_pred_probs[k] = 1;
}
}
#else
if (cpi->prob_skip_false < 5)
cpi->prob_skip_false = 5;
if (cpi->prob_skip_false > 250)
cpi->prob_skip_false = 250;
if (cpi->is_src_frame_alt_ref)
cpi->prob_skip_false = 1;
#endif
}
}
@ -3648,7 +3582,6 @@ static void encode_frame_to_data_rate
#endif
update_reference_frames(cm);
#if CONFIG_ADAPTIVE_ENTROPY
vp8_copy(cpi->common.fc.coef_counts, cpi->coef_counts);
vp8_copy(cpi->common.fc.coef_counts_8x8, cpi->coef_counts_8x8);
vp8_adapt_coef_probs(&cpi->common);
@ -3668,7 +3601,6 @@ static void encode_frame_to_data_rate
vp8_adapt_mv_probs(&cpi->common);
vp8_update_mode_context(&cpi->common);
}
#endif /* CONFIG_ADAPTIVE_ENTROPY */
/* Move storing frame_type out of the above loop since it is also
* needed in motion search besides loopfilter */

View File

@ -44,17 +44,9 @@
#define ARF_DECAY_THRESH 12
#if CONFIG_PRED_FILTER
#if CONFIG_NEWINTRAMODES
#define MAX_MODES 54
#else
#define MAX_MODES 48
#endif
#else // CONFIG_PRED_FILTER
#if CONFIG_NEWINTRAMODES
#define MAX_MODES 42
#else
#define MAX_MODES 36
#endif
#endif // CONFIG_PRED_FILTER
#define MIN_THRESHMULT 32
@ -195,14 +187,12 @@ typedef enum {
THR_V_PRED,
THR_H_PRED,
#if CONFIG_NEWINTRAMODES
THR_D45_PRED,
THR_D135_PRED,
THR_D117_PRED,
THR_D153_PRED,
THR_D27_PRED,
THR_D63_PRED,
#endif
THR_TM,
THR_NEWMV,
@ -259,14 +249,12 @@ typedef enum {
THR_V_PRED,
THR_H_PRED,
#if CONFIG_NEWINTRAMODES
THR_D45_PRED,
THR_D135_PRED,
THR_D117_PRED,
THR_D153_PRED,
THR_D27_PRED,
THR_D63_PRED,
#endif
THR_TM,
THR_NEWMV,
@ -585,12 +573,7 @@ typedef struct VP8_COMP {
int vert_scale;
int pass;
#if CONFIG_NEWENTROPY
vp8_prob last_skip_false_probs[3][MBSKIP_CONTEXTS];
#else
vp8_prob prob_skip_false;
vp8_prob last_skip_false_probs[3];
#endif
int last_skip_probs_q[3];
int recent_ref_frame_usage[MAX_REF_FRAMES];
@ -606,13 +589,8 @@ typedef struct VP8_COMP {
int inter_zz_count;
int gf_bad_count;
int gf_update_recommended;
#if CONFIG_NEWENTROPY
int skip_true_count[3];
int skip_false_count[3];
#else
int skip_true_count;
int skip_false_count;
#endif
int t4x4_count;
int t8x8_count;
@ -636,11 +614,7 @@ typedef struct VP8_COMP {
unsigned int time_pick_lpf;
unsigned int time_encode_mb_row;
#if CONFIG_NEWENTROPY
int base_skip_false_prob[QINDEX_RANGE][3];
#else
int base_skip_false_prob[QINDEX_RANGE];
#endif
struct twopass_rc {
unsigned int section_intra_rating;

View File

@ -112,14 +112,12 @@ const MODE_DEFINITION vp8_mode_order[MAX_MODES] = {
{V_PRED, INTRA_FRAME, 0, 0},
{H_PRED, INTRA_FRAME, 0, 0},
#if CONFIG_NEWINTRAMODES
{D45_PRED, INTRA_FRAME, 0, 0},
{D135_PRED, INTRA_FRAME, 0, 0},
{D117_PRED, INTRA_FRAME, 0, 0},
{D153_PRED, INTRA_FRAME, 0, 0},
{D27_PRED, INTRA_FRAME, 0, 0},
{D63_PRED, INTRA_FRAME, 0, 0},
#endif
{TM_PRED, INTRA_FRAME, 0, 0},
@ -177,14 +175,12 @@ const MODE_DEFINITION vp8_mode_order[MAX_MODES] = {
{V_PRED, INTRA_FRAME, 0},
{H_PRED, INTRA_FRAME, 0},
#if CONFIG_NEWINTRAMODES
{D45_PRED, INTRA_FRAME, 0},
{D135_PRED, INTRA_FRAME, 0},
{D117_PRED, INTRA_FRAME, 0},
{D153_PRED, INTRA_FRAME, 0},
{D27_PRED, INTRA_FRAME, 0},
{D63_PRED, INTRA_FRAME, 0},
#endif
{TM_PRED, INTRA_FRAME, 0},
@ -2406,14 +2402,12 @@ void rd_update_mvcount(VP8_COMP *cpi, MACROBLOCK *x,
- best_ref_mv->as_mv.row)]++;
cpi->MVcount_hp[1][mv_max_hp + (x->partition_info->bmi[i].mv.as_mv.col
- best_ref_mv->as_mv.col)]++;
#if CONFIG_ADAPTIVE_ENTROPY
if (x->e_mbd.mode_info_context->mbmi.second_ref_frame) {
cpi->MVcount_hp[0][mv_max_hp + (x->partition_info->bmi[i].second_mv.as_mv.row
- second_best_ref_mv->as_mv.row)]++;
cpi->MVcount_hp[1][mv_max_hp + (x->partition_info->bmi[i].second_mv.as_mv.col
- second_best_ref_mv->as_mv.col)]++;
}
#endif
} else
#endif
{
@ -2421,14 +2415,12 @@ void rd_update_mvcount(VP8_COMP *cpi, MACROBLOCK *x,
- best_ref_mv->as_mv.row) >> 1)]++;
cpi->MVcount[1][mv_max + ((x->partition_info->bmi[i].mv.as_mv.col
- best_ref_mv->as_mv.col) >> 1)]++;
#if CONFIG_ADAPTIVE_ENTROPY
if (x->e_mbd.mode_info_context->mbmi.second_ref_frame) {
cpi->MVcount[0][mv_max + ((x->partition_info->bmi[i].second_mv.as_mv.row
- second_best_ref_mv->as_mv.row) >> 1)]++;
cpi->MVcount[1][mv_max + ((x->partition_info->bmi[i].second_mv.as_mv.col
- second_best_ref_mv->as_mv.col) >> 1)]++;
}
#endif
}
}
}
@ -2439,14 +2431,12 @@ void rd_update_mvcount(VP8_COMP *cpi, MACROBLOCK *x,
- best_ref_mv->as_mv.row)]++;
cpi->MVcount_hp[1][mv_max_hp + (x->e_mbd.mode_info_context->mbmi.mv.as_mv.col
- best_ref_mv->as_mv.col)]++;
#if CONFIG_ADAPTIVE_ENTROPY
if (x->e_mbd.mode_info_context->mbmi.second_ref_frame) {
cpi->MVcount_hp[0][mv_max_hp + (x->e_mbd.mode_info_context->mbmi.second_mv.as_mv.row
- second_best_ref_mv->as_mv.row)]++;
cpi->MVcount_hp[1][mv_max_hp + (x->e_mbd.mode_info_context->mbmi.second_mv.as_mv.col
- second_best_ref_mv->as_mv.col)]++;
}
#endif
} else
#endif
{
@ -2454,14 +2444,12 @@ void rd_update_mvcount(VP8_COMP *cpi, MACROBLOCK *x,
- best_ref_mv->as_mv.row) >> 1)]++;
cpi->MVcount[1][mv_max + ((x->e_mbd.mode_info_context->mbmi.mv.as_mv.col
- best_ref_mv->as_mv.col) >> 1)]++;
#if CONFIG_ADAPTIVE_ENTROPY
if (x->e_mbd.mode_info_context->mbmi.second_ref_frame) {
cpi->MVcount[0][mv_max + ((x->e_mbd.mode_info_context->mbmi.second_mv.as_mv.row
- second_best_ref_mv->as_mv.row) >> 1)]++;
cpi->MVcount[1][mv_max + ((x->e_mbd.mode_info_context->mbmi.second_mv.as_mv.col
- second_best_ref_mv->as_mv.col) >> 1)]++;
}
#endif
}
}
}
@ -3004,14 +2992,12 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
vp8_cost_bit(get_pred_prob(cm, xd, PRED_COMP), 0);
}
break;
#if CONFIG_NEWINTRAMODES
case D45_PRED:
case D135_PRED:
case D117_PRED:
case D153_PRED:
case D27_PRED:
case D63_PRED:
#endif
case DC_PRED:
case V_PRED:
case H_PRED:
@ -3479,7 +3465,6 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
int prob_skip_cost;
// Cost the skip mb case
#if CONFIG_NEWENTROPY
vp8_prob skip_prob =
get_pred_prob(cm, &x->e_mbd, PRED_MBSKIP);
@ -3488,24 +3473,12 @@ void vp8_rd_pick_inter_mode(VP8_COMP *cpi, MACROBLOCK *x, int recon_yoffset, int
rate2 += prob_skip_cost;
other_cost += prob_skip_cost;
}
#else
if (cpi->prob_skip_false) {
prob_skip_cost =
vp8_cost_bit(cpi->prob_skip_false, 1);
rate2 += prob_skip_cost;
other_cost += prob_skip_cost;
}
#endif
}
}
// Add in the cost of the no skip flag.
else if (mb_skip_allowed) {
#if CONFIG_NEWENTROPY
int prob_skip_cost = vp8_cost_bit(
get_pred_prob(cm, &x->e_mbd, PRED_MBSKIP), 0);
#else
int prob_skip_cost = vp8_cost_bit(cpi->prob_skip_false, 0);
#endif
rate2 += prob_skip_cost;
other_cost += prob_skip_cost;
}

View File

@ -630,9 +630,7 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t) {
int has_y2_block;
int b;
int tx_type = x->mode_info_context->mbmi.txfm_size;
#if CONFIG_NEWENTROPY
int mb_skip_context = get_pred_context(&cpi->common, x, PRED_MBSKIP);
#endif
// If the MB is going to be skipped because of a segment level flag
// exclude this from the skip count stats used to calculate the
@ -661,11 +659,7 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t) {
mb_is_skippable(x, has_y2_block));
if (x->mode_info_context->mbmi.mb_skip_coeff) {
#if CONFIG_NEWENTROPY
cpi->skip_true_count[mb_skip_context] += skip_inc;
#else
cpi->skip_true_count += skip_inc;
#endif
if (!cpi->common.mb_no_coeff_skip) {
if (tx_type == TX_8X8)
@ -679,11 +673,7 @@ void vp8_tokenize_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t) {
return;
}
#if CONFIG_NEWENTROPY
cpi->skip_false_count[mb_skip_context] += skip_inc;
#else
cpi->skip_false_count += skip_inc;
#endif
plane_type = 3;
if (has_y2_block) {