ref: 31afc7706356f1953258911e0dd472a538cbce09
parent: 13c6d1a8c80bea1eccf21bbd267afbb3825d2797
author: Yaowu Xu <yaowu@google.com>
date: Tue Apr 17 05:26:19 EDT 2012
Added intra mode probabilites into coding_context These contexts need to be saved and restored for recode, otherwise encoder/decoder mismatch happens for some clips (eg._mobcal 720p) Change-Id: Ic65cfa0bf56ed0472ecab962ce31394d59d344bf
--- a/vp8/encoder/onyx_int.h
+++ b/vp8/encoder/onyx_int.h
@@ -90,6 +90,13 @@
vp8_prob coef_probs_8x8[BLOCK_TYPES]
[COEF_BANDS][PREV_COEF_CONTEXTS][ENTROPY_NODES];
+ vp8_prob ymode_prob [VP8_YMODES-1]; /* interframe intra mode probs */
+#if CONFIG_UVINTRA
+ vp8_prob uv_mode_prob [VP8_YMODES][VP8_UV_MODES-1];
+#else
+ vp8_prob uv_mode_prob [VP8_UV_MODES-1];
+#endif
+
int mv_ref_ct[6][4][2];
int mode_context[6][4];
int mv_ref_ct_a[6][4][2];
--- a/vp8/encoder/ratectrl.c
+++ b/vp8/encoder/ratectrl.c
@@ -155,6 +155,9 @@
vp8_copy( cc->mv_ref_ct_a, cm->mv_ref_ct_a );
vp8_copy( cc->mode_context_a, cm->mode_context_a );
+ vp8_copy( cc->ymode_prob, cm->fc.ymode_prob );
+ vp8_copy( cc->uv_mode_prob, cm->fc.uv_mode_prob );
+
// Stats
#ifdef MODE_STATS
vp8_copy(cc->y_modes, y_modes);
@@ -200,6 +203,9 @@
vp8_copy( cm->mode_context, cc->mode_context );
vp8_copy( cm->mv_ref_ct_a, cc->mv_ref_ct_a );
vp8_copy( cm->mode_context_a, cc->mode_context_a );
+
+ vp8_copy( cm->fc.ymode_prob, cc->ymode_prob);
+ vp8_copy( cm->fc.uv_mode_prob, cc->uv_mode_prob);
// Stats
#ifdef MODE_STATS
--
⑨