summaryrefslogtreecommitdiff
path: root/vp8/encoder/bitstream.c
diff options
context:
space:
mode:
Diffstat (limited to 'vp8/encoder/bitstream.c')
-rw-r--r--vp8/encoder/bitstream.c49
1 files changed, 31 insertions, 18 deletions
diff --git a/vp8/encoder/bitstream.c b/vp8/encoder/bitstream.c
index 9275f2534..05734a591 100644
--- a/vp8/encoder/bitstream.c
+++ b/vp8/encoder/bitstream.c
@@ -957,7 +957,9 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
#endif
if ( !segfeature_active( xd, segment_id, SEG_LVL_MODE ) )
+ {
write_ymode(w, mode, pc->fc.ymode_prob);
+ }
if (mode == B_PRED)
{
@@ -985,22 +987,18 @@ static void pack_inter_mode_mvs(VP8_COMP *const cpi)
if(mode == I8X8_PRED)
{
write_i8x8_mode(w, m->bmi[0].as_mode.first,
- pc->i8x8_mode_prob);
+ pc->fc.i8x8_mode_prob);
write_i8x8_mode(w, m->bmi[2].as_mode.first,
- pc->i8x8_mode_prob);
+ pc->fc.i8x8_mode_prob);
write_i8x8_mode(w, m->bmi[8].as_mode.first,
- pc->i8x8_mode_prob);
+ pc->fc.i8x8_mode_prob);
write_i8x8_mode(w, m->bmi[10].as_mode.first,
- pc->i8x8_mode_prob);
+ pc->fc.i8x8_mode_prob);
}
else
{
write_uv_mode(w, mi->uv_mode,
pc->fc.uv_mode_prob[mode]);
-#ifdef MODE_STATS
- if(mode!=B_PRED)
- ++cpi->y_uv_mode_count[mode][mi->uv_mode];
-#endif
}
}
else
@@ -1329,16 +1327,16 @@ static void write_kfmodes(VP8_COMP *cpi)
if(ym == I8X8_PRED)
{
write_i8x8_mode(bc, m->bmi[0].as_mode.first,
- c->i8x8_mode_prob);
+ c->fc.i8x8_mode_prob);
//printf(" mode: %d\n", m->bmi[0].as_mode.first); fflush(stdout);
write_i8x8_mode(bc, m->bmi[2].as_mode.first,
- c->i8x8_mode_prob);
+ c->fc.i8x8_mode_prob);
//printf(" mode: %d\n", m->bmi[2].as_mode.first); fflush(stdout);
write_i8x8_mode(bc, m->bmi[8].as_mode.first,
- c->i8x8_mode_prob);
+ c->fc.i8x8_mode_prob);
//printf(" mode: %d\n", m->bmi[8].as_mode.first); fflush(stdout);
write_i8x8_mode(bc, m->bmi[10].as_mode.first,
- c->i8x8_mode_prob);
+ c->fc.i8x8_mode_prob);
//printf(" mode: %d\n", m->bmi[10].as_mode.first); fflush(stdout);
}
else
@@ -1883,6 +1881,7 @@ static void update_coef_probs(VP8_COMP *cpi)
vp8_clear_system_state(); //__asm emms;
// Build the cofficient contexts based on counts collected in encode loop
+
build_coeff_contexts(cpi);
//vp8_prob bestupd = find_coef_update_prob(cpi);
@@ -2117,17 +2116,18 @@ static void update_coef_probs(VP8_COMP *cpi)
vp8_prob *Pold = cpi->common.fc.coef_probs_8x8 [i][j][k] + t;
const vp8_prob oldp = *Pold;
const vp8_prob upd = COEF_UPDATE_PROB_8X8;
-#if CONFIG_NEWUPDATE && defined(SEARCH_NEWP)
- const int s = prob_diff_update_savings_search(ct, oldp, &newp, upd);
- const int u = s > 0 && newp != oldp ? 1 : 0;
-#else
- const int s = prob_update_savings(ct, oldp, newp, upd);
- const int u = s > 0 ? 1 : 0;
+ 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)
+ s = prob_diff_update_savings_search(ct, oldp, &newp, upd);
+ u = s > 0 && newp != oldp ? 1 : 0;
+#else
+ s = prob_update_savings(ct, oldp, newp, upd);
+ u = s > 0 ? 1 : 0;
#endif
vp8_write(w, u, upd);
#ifdef ENTROPY_STATS
@@ -2617,6 +2617,18 @@ 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);
+ vp8_copy(cpi->common.fc.pre_uv_mode_prob, cpi->common.fc.uv_mode_prob);
+ vp8_copy(cpi->common.fc.pre_bmode_prob, cpi->common.fc.bmode_prob);
+ vp8_copy(cpi->common.fc.pre_i8x8_mode_prob, cpi->common.fc.i8x8_mode_prob);
+ vp8_copy(cpi->common.fc.pre_mvc, cpi->common.fc.mvc);
+#if CONFIG_HIGH_PRECISION_MV
+ vp8_copy(cpi->common.fc.pre_mvc_hp, cpi->common.fc.mvc_hp);
+#endif
+#endif
#if COEFUPDATETYPE == 2
update_coef_probs2(cpi);
#elif COEFUPDATETYPE == 3
@@ -2677,6 +2689,7 @@ void vp8_pack_bitstream(VP8_COMP *cpi, unsigned char *dest, unsigned long *size)
vp8_stop_encode(&cpi->bc2);
*size += cpi->bc2.pos;
+
}
#ifdef ENTROPY_STATS